spakky-policy¶
spakky-policy는 YAML/TOML/JSON policy document 로드와 spakky-auth용
RBAC/PBAC/ABAC authorization evaluator를 제공합니다.
패키지 루트¶
spakky-policy plugin.
POLICY_AUTH_PROVIDER_ID = 'provider:spakky-policy'
module-attribute
¶
Stable auth provider id advertised by spakky-policy.
SpakkyPolicyAuthProvider(document)
¶
Bases: IAuthorizationPolicyEvaluator, IPermissionChecker, IRoleChecker, IScopeChecker
Auth capability provider backed by a canonical policy document.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/auth_provider.py
SpakkyPolicyConfig()
¶
Bases: BaseSettings
Runtime configuration for policy document loading.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/config.py
document_path = None
class-attribute
instance-attribute
¶
Optional YAML, TOML, or JSON policy document path.
PolicyDocumentEvaluator(document)
¶
Evaluate canonical Spakky policy documents.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
evaluate(request)
¶
Evaluate a request with deny precedence and default deny.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
evaluate_authorization(request)
¶
Map resource/action policy evaluation to AuthorizationDecision.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
check_permission(request)
¶
Check a canonical permission reference.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
check_role(request)
¶
Check a canonical role reference.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
check_scope(request)
¶
Check a canonical scope reference.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
PolicyEvaluationInput(*, auth_context, resource=None, action=None, tenant=None, permission=None, role=None, scope=None, policy=None)
dataclass
¶
Provider-native policy evaluation input.
ConditionComposition
¶
Bases: StrEnum
Boolean composition forms for policy conditions.
ConditionOperator
¶
Bases: StrEnum
Operators supported by atomic conditions.
NamedPolicy(*, ref, statements, description=None)
dataclass
¶
Named policy composed from statements with OR/ANY semantics.
PolicyAction(*, ref)
dataclass
¶
Canonical action binding.
PolicyCondition(*, ref=None, operator=None, key=None, value=None, composition=None, children=())
dataclass
¶
Atomic or composite condition.
PolicyDocument(*, version, metadata, subjects=(), resources=(), actions=(), permissions=(), roles=(), scopes=(), policies=(), conditions=())
dataclass
¶
Typed canonical Spakky policy document.
PolicyEffect
¶
Bases: StrEnum
Effects supported by policy statements.
PolicyEvaluationEvidence(*, kind, policy=None, statement=None, reason)
dataclass
¶
Explainable evidence emitted by policy evaluation.
PolicyEvaluationResult(*, allowed, effect, evidence)
dataclass
¶
Policy evaluator result with explainable evidence.
PolicyEvidenceKind
¶
Bases: StrEnum
Machine-readable evidence categories emitted during evaluation.
PolicyMetadata(*, name, description=None, labels=())
dataclass
¶
Human and operational metadata for a policy document.
PolicyPermission(*, ref, resources=(), actions=())
dataclass
¶
Named permission expanded into resource/action requirements.
PolicyResource(*, ref, tenant=None)
dataclass
¶
Canonical resource binding.
PolicyRole(*, ref, permissions=())
dataclass
¶
Named role expanded into permission requirements.
PolicyScope(*, ref, permissions=())
dataclass
¶
Named scope expanded into permission requirements.
PolicyStatement(*, ref, effect, subjects=(), roles=(), scopes=(), permissions=(), resources=(), actions=(), tenants=(), condition=None)
dataclass
¶
Single allow or deny statement in a named policy.
PolicySubject(*, ref, roles=(), scopes=(), permissions=(), claims=(), tenant=None)
dataclass
¶
Canonical subject binding declared in a policy document.
policy_auth_provider_contribution()
¶
Return the auth capabilities contributed by spakky-policy.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/auth_provider.py
spakky_policy_document(config)
¶
Load the configured policy document for DI-managed auth providers.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/auth_provider.py
load_policy_document(path)
¶
Load a policy document from YAML, TOML, or JSON.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/loader.py
policy_document_from_mapping(payload)
¶
Canonicalize an in-memory policy document mapping.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/loader.py
Policy Model¶
Canonical policy document and evaluation evidence model.
PolicyEffect
¶
Bases: StrEnum
Effects supported by policy statements.
ConditionOperator
¶
Bases: StrEnum
Operators supported by atomic conditions.
ConditionComposition
¶
Bases: StrEnum
Boolean composition forms for policy conditions.
PolicyEvidenceKind
¶
Bases: StrEnum
Machine-readable evidence categories emitted during evaluation.
PolicyMetadata(*, name, description=None, labels=())
dataclass
¶
Human and operational metadata for a policy document.
PolicySubject(*, ref, roles=(), scopes=(), permissions=(), claims=(), tenant=None)
dataclass
¶
Canonical subject binding declared in a policy document.
PolicyResource(*, ref, tenant=None)
dataclass
¶
Canonical resource binding.
PolicyAction(*, ref)
dataclass
¶
Canonical action binding.
PolicyPermission(*, ref, resources=(), actions=())
dataclass
¶
Named permission expanded into resource/action requirements.
PolicyRole(*, ref, permissions=())
dataclass
¶
Named role expanded into permission requirements.
PolicyScope(*, ref, permissions=())
dataclass
¶
Named scope expanded into permission requirements.
PolicyCondition(*, ref=None, operator=None, key=None, value=None, composition=None, children=())
dataclass
¶
Atomic or composite condition.
PolicyStatement(*, ref, effect, subjects=(), roles=(), scopes=(), permissions=(), resources=(), actions=(), tenants=(), condition=None)
dataclass
¶
Single allow or deny statement in a named policy.
NamedPolicy(*, ref, statements, description=None)
dataclass
¶
Named policy composed from statements with OR/ANY semantics.
PolicyDocument(*, version, metadata, subjects=(), resources=(), actions=(), permissions=(), roles=(), scopes=(), policies=(), conditions=())
dataclass
¶
Typed canonical Spakky policy document.
PolicyEvaluationEvidence(*, kind, policy=None, statement=None, reason)
dataclass
¶
Explainable evidence emitted by policy evaluation.
PolicyEvaluationResult(*, allowed, effect, evidence)
dataclass
¶
Policy evaluator result with explainable evidence.
Loader¶
YAML, TOML, and JSON policy document loading.
load_policy_document(path)
¶
Load a policy document from YAML, TOML, or JSON.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/loader.py
policy_document_from_mapping(payload)
¶
Canonicalize an in-memory policy document mapping.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/loader.py
Evaluator¶
RBAC, PBAC, and ABAC-style policy document evaluator.
PolicyEvaluationInput(*, auth_context, resource=None, action=None, tenant=None, permission=None, role=None, scope=None, policy=None)
dataclass
¶
Provider-native policy evaluation input.
PolicyDocumentEvaluator(document)
¶
Evaluate canonical Spakky policy documents.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
evaluate(request)
¶
Evaluate a request with deny precedence and default deny.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
evaluate_authorization(request)
¶
Map resource/action policy evaluation to AuthorizationDecision.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
check_permission(request)
¶
Check a canonical permission reference.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
check_role(request)
¶
Check a canonical role reference.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
check_scope(request)
¶
Check a canonical scope reference.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/evaluator.py
Auth Provider¶
Auth provider integration for policy document evaluation.
POLICY_AUTH_PROVIDER_ID = 'provider:spakky-policy'
module-attribute
¶
Stable auth provider id advertised by spakky-policy.
SpakkyPolicyAuthProvider(document)
¶
Bases: IAuthorizationPolicyEvaluator, IPermissionChecker, IRoleChecker, IScopeChecker
Auth capability provider backed by a canonical policy document.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/auth_provider.py
spakky_policy_document(config)
¶
Load the configured policy document for DI-managed auth providers.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/auth_provider.py
policy_auth_provider_contribution()
¶
Return the auth capabilities contributed by spakky-policy.
Source code in plugins/spakky-policy/src/spakky/plugins/policy/auth_provider.py
Contributions¶
에러¶
추가 모듈¶
Plugin initialization entry point.
initialize(app)
¶
Register policy config, document, provider, and auth port bindings.