30 lines
849 B
Markdown
30 lines
849 B
Markdown
# ADR-003: Policy Engine Model (ABAC)
|
|
|
|
## Status
|
|
|
|
Accepted.
|
|
|
|
## Context
|
|
|
|
Resolution must respect tenant scope and allow/deny rules using an attribute-based model.
|
|
|
|
## Decision
|
|
|
|
### Model
|
|
|
|
- Policies are stored per tenant with rule_json (ABAC attributes), effect (allow/deny), and priority.
|
|
- Tenant is enforced by restricting resolution to that tenant when request.tenant is set.
|
|
|
|
### MVP Rule Shape
|
|
|
|
- Deny: rule_json.participantId or rule_json.participantIds — exclude those participants.
|
|
- Allow (restrictive): if any allow policy exists, rule_json.participantId/participantIds — only include those participants.
|
|
|
|
### Ordering
|
|
|
|
- Deny applied first; then allow restriction. Policies loaded by tenant and ordered by priority.
|
|
|
|
## Consequences
|
|
|
|
- Simple allow/deny by participant supported; ABAC can be extended via rule_json and filter logic.
|