Authorization Model
This document defines authorization requirements for PTI v1.0, how authenticated callers receive scoped access across tenants and trust contexts.
Normative language
The key words MUST: MUST NOT: REQUIRED: SHALL: SHALL NOT: SHOULD: SHOULD NOT: RECOMMENDED: MAY: and OPTIONAL are to be interpreted as described in RFC 2119.
Authorization principles
- Least privilege: credentials receive minimum scopes for their role.
- Explicit entitlements: context and tier access MUST be contract-bound, not implicit.
- Tenant isolation: cross-tenant reads and writes MUST be denied by default.
- Policy before data: consent and purpose checks occur before lookup execution.
- Deny by default: unspecified access MUST be rejected.
Roles and base scopes
| Role | Base scopes |
|---|---|
| producer | events:write, identities:resolve, events:read_own |
| consumer | lookup:search, lookup:generate, reports:verify |
| registry_admin | registry:read, registry:write, catalog:manage |
| subject_agent | subject:read_self, subject:export, consent:manage |
Scopes use resource:action namespacing. Implementations MAY extend with profile-specific scopes documented in the registry.
Entitlement objects
Entitlements are registry-managed grants bound to tenant_id.
{
"entitlement_id": "ent_4421",
"tenant_id": "ten_acme_bank",
"role": "consumer",
"contexts": ["lending", "risk_compliance"],
"lookup_tiers": ["basic", "detailed"],
"purpose_codes": ["credit_assessment", "collections"],
"geo_restrictions": ["ZA"],
"valid_from": "2026-01-01T00:00:00Z",
"valid_to": "2027-01-01T00:00:00Z"
}
Producer entitlements
Producers MUST have entitlements for:
- Each
context_idthey may emit - Each
event_typein their catalog binding - Optional volume tier for rate limits
Emitting outside entitlement MUST yield PTI-4036.
Consumer entitlements
Consumers MUST have entitlements for:
- Requested
contexts[]on lookup - Requested
tier purpose_codedeclared in the lookup request
Mismatch MUST yield PTI-4031 or PTI-4032.
Tenant boundaries
- Data at rest MUST include
tenant_idpartition keys. - Queries MUST inject tenant filters from authenticated identity, not from client-supplied body fields.
- Support operators MAY break glass with audited impersonation scopes lasting maximum 1 hour.
Consent and purpose enforcement
When profile requires consent:
- Policy gateway MUST evaluate
consent_tokenor live consent registry state. - Missing consent MUST return
PTI-4033without partial field leakage. - Purpose binding MUST match
purpose_codeon the request.
Subject suppression
Subjects MAY hold suppression flags (lookup_blocked, context_blocked:{id}). Suppression MUST override consumer entitlements and return PTI-4034.
Attribute-based access control
Implementations SHOULD support ABAC rules for:
| Attribute | Example rule |
|---|---|
geo | Consumer requests from non-entitled region → deny |
time | Maintenance window restricts mutating calls |
risk_score | Elevated fraud score on API key → throttle |
ABAC denials MUST map to PTI-4030 with internal reason code logged.
Delegation
Tenants MAY delegate limited scopes to subprocessors via delegated credentials. Delegation MUST:
- Reference parent
tenant_id - Expire within parent entitlement
valid_to - Be revocable immediately
Audit requirements
Authorization denials MUST emit audit events with tenant_id, requested resource, scope, and rule identifier. Successful lookups MUST log pti_id reference, contexts, tier, and purpose.