Zum Inhalt springen

AA_ACL_ENTRY

Status: Entwurf · Quelle: Spec-Erweiterung RBAC/ACL · Spec-Kandidat: ja

Zweck

Feingranularer Allow/Deny-Override pro Principal + Scope. Ergänzt RBAC um zwei Fälle, die Rollen schlecht abdecken:

  1. Datensatz-Ebene: „Benutzer X darf Datensatz Y bearbeiten, obwohl er sonst nur Leser ist.”
  2. Attribut-Ebene: „Rolle Z darf das Attribut salary nicht sehen, auch wenn sie sonst Leser des Entitätstyps ist.”

Felder

FeldTypPflichtHinweise
iduuidjaPK
principal_typemdm.principal_typeja
principal_iduuidjaper Trigger validiert
actionmdm.permission_actionja
effectmdm.permission_effectjadefault allow
scopemdm.acl_scopeja
scope_entity_type_iduuidneinPflicht wenn scope='entity_type'
scope_entity_iduuidneinPflicht wenn scope='entity'
scope_relation_type_iduuidneinPflicht wenn scope='relation_type'
attribute_keytextneinnur bei scope ∈ {DDM_ENTITY_TYPE, DDM_ENTITY}, Format ^[a-z][a-z0-9_]*$
valid_from / valid_totimestamptzneinoptionale Befristung
reasontextneinBegründung (für Audit-Recherche)
metadatajsonbjadefault '{}'
Audit-/Soft-Delete-Felder

Constraints und Trigger

  • acl_entry_validity_chk, acl_entry_attribute_key_format_chk
  • acl_entry_scope_consistency_chk: Scope-Felder + attribute_key-Restriktion
  • trg_acl_entry_validate_principal: Existenz aktive Identität

Auflösungsregeln

  • deny schlägt allow bei gleicher Spezifität.
  • Spezifischerer Scope schlägt allgemeineren: DDM_ENTITY > DDM_ENTITY_TYPE > global. attribute_key zählt als zusätzliche Spezifität.
  • Innerhalb gleicher Spezifität: ACL schlägt RBAC (ACL ist explizit, RBAC ist generisch).

Hinweise

  • ACL wird nur für Ausnahmen genutzt — Regeln, die für alle Träger einer Rolle gelten, gehören in AA_ROLE_PERMISSION.
  • Häufige Reads über ACL → Caching pro Request empfohlen.

Verwandte Dokumente