The official Python SDK for Permguard (https://www.permguard.com)
Project description
The official Python SDK for Permguard
The Permguard Python SDK provides a simple and flexible client to perform authorization checks against a Permguard Policy Decision Point (PDP) service using gRPC. Plase refer to the Permguard Documentation for more information.
Prerequisites
- Python 3.8, 3.9, 3.10, 3.11 (supported versions)
This package is compatible with the following Python versions:
Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11
Make sure you have one of these versions installed before proceeding.
Installation
Run the following command to install the SDK:
pip install permguard
Usage Example
Below is a sample Python code demonstrating how to create a Permguard client, build an authorization request using a builder pattern, and process the authorization response:
from permguard.az.azreq.builder_principal import PrincipalBuilder
from permguard.az.azreq.builder_request_atomic import AZAtomicRequestBuilder
from permguard.az_client import AZClient
from permguard.az_config import with_endpoint
az_client = AZClient(with_endpoint("localhost", 9094))
principal = PrincipalBuilder("amy.smith@acmecorp.com").build()
entities = [
{
"uid": {"type": "MagicFarmacia::Platform::BranchInfo", "id": "subscription"},
"attrs": {"active": True},
"parents": [],
}
]
req = (
AZAtomicRequestBuilder(
895741663247,
"809257ed202e40cab7e958218eecad20",
"platform-creator",
"MagicFarmacia::Platform::Subscription",
"MagicFarmacia::Platform::Action::create",
)
.with_request_id("1234")
.with_principal(principal)
.with_entities_items("cedar", entities)
.with_subject_role_actor_type()
.with_subject_source("keycloack")
.with_subject_property("isSuperUser", True)
.with_resource_id("e3a786fd07e24bfa95ba4341d3695ae8")
.with_resource_property("isEnabled", True)
.with_action_property("isEnabled", True)
.with_context_property("time", "2025-01-23T16:17:46+00:00")
.with_context_property("isSubscriptionActive", True)
.build()
)
ok, response = az_client.check(req)
if ok:
print("✅ authorization permitted")
else:
print("❌ authorization denied")
if response and response.context:
if response.context.reason_admin:
print(f"-> reason admin: {response.context.reason_admin.message}")
if response.context.reason_user:
print(f"-> reason user: {response.context.reason_user.message}")
for eval in response.evaluations:
if eval.context and eval.context.reason_user:
print(f"-> reason admin: {eval.context.reason_admin.message}")
print(f"-> reason user: {eval.context.reason_user.message}")
if response and response.evaluations:
for eval in response.evaluations:
if eval.context:
if eval.context.reason_admin:
print(f"-> evaluation requestid {eval.request_id}: reason admin: {eval.context.reason_admin.message}")
if eval.context.reason_user:
print(f"-> evaluation requestid {eval.request_id}: reason user: {eval.context.reason_user.message}")
Version Compatibility
Our SDK follows a versioning scheme aligned with the PermGuard server versions to ensure seamless integration. The versioning format is as follows:
SDK Versioning Format: x.y.z
- x.y: Indicates the compatible PermGuard server version.
- z: Represents the SDK's patch or minor updates specific to that server version.
Compatibility Examples:
SDK Version 1.3.0is compatible withPermGuard Server 1.3.SDK Version 1.3.1includes minor improvements or bug fixes forPermGuard Server 1.3.
Incompatibility Example:
SDK Version 1.3.0may not be guaranteed to be compatible withPermGuard Server 1.4due to potential changes introduced in server version1.4.
Important: Ensure that the major and minor versions (x.y) of the SDK match those of your PermGuard server to maintain compatibility.
Created by Nitro Agility.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file permguard-0.0.19.tar.gz.
File metadata
- Download URL: permguard-0.0.19.tar.gz
- Upload date:
- Size: 25.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f05f2fd0909cb098e1e6e51a74d011932bc43cffb7923adeb674d0dd47473844
|
|
| MD5 |
582d1179a9014212a23c143be9ea7874
|
|
| BLAKE2b-256 |
e3a45b85b19a594b3d6689bdd1fe7bdc77382390b6987c6a07ba29e0fa396c1d
|
Provenance
The following attestation bundles were made for permguard-0.0.19.tar.gz:
Publisher:
sdk-python-ci.yml on permguard/sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
permguard-0.0.19.tar.gz -
Subject digest:
f05f2fd0909cb098e1e6e51a74d011932bc43cffb7923adeb674d0dd47473844 - Sigstore transparency entry: 210097641
- Sigstore integration time:
-
Permalink:
permguard/sdk-python@3b4fea787aefc7820fb8bf5a601e1059a88151f8 -
Branch / Tag:
refs/tags/v0.0.19 - Owner: https://github.com/permguard
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
sdk-python-ci.yml@3b4fea787aefc7820fb8bf5a601e1059a88151f8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file permguard-0.0.19-py3-none-any.whl.
File metadata
- Download URL: permguard-0.0.19-py3-none-any.whl
- Upload date:
- Size: 25.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cdbc2f0de411e4836705fc9059568b19be9436aeaabb42b015975d00a006286e
|
|
| MD5 |
f22a5392b13654a0d90992d950cdc1be
|
|
| BLAKE2b-256 |
8001898d69b5d4a626f2552193fb6b46be0e9e98687ab6a87191d11cdf7fce81
|
Provenance
The following attestation bundles were made for permguard-0.0.19-py3-none-any.whl:
Publisher:
sdk-python-ci.yml on permguard/sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
permguard-0.0.19-py3-none-any.whl -
Subject digest:
cdbc2f0de411e4836705fc9059568b19be9436aeaabb42b015975d00a006286e - Sigstore transparency entry: 210097642
- Sigstore integration time:
-
Permalink:
permguard/sdk-python@3b4fea787aefc7820fb8bf5a601e1059a88151f8 -
Branch / Tag:
refs/tags/v0.0.19 - Owner: https://github.com/permguard
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
sdk-python-ci.yml@3b4fea787aefc7820fb8bf5a601e1059a88151f8 -
Trigger Event:
push
-
Statement type: