AA_PRINCIPAL_ROLE
Status: Entwurf · Quelle: Spec-Erweiterung RBAC/ACL · Spec-Kandidat: ja
Zweck
Weist eine Rolle einer Identität (AA_APP_USER, AA_SERVICE_ACCOUNT, AA_PRINCIPAL_GROUP) zu. Optional Scope-eingeschränkt (z. B. „editor nur für DDM_ENTITY_TYPE=customer”) und befristet (valid_from/valid_to).
Felder
| Feld | Typ | Pflicht | Hinweise |
|---|---|---|---|
id | uuid | ja | PK |
principal_type | mdm.principal_type | ja | nur user, AA_SERVICE_ACCOUNT, group |
principal_id | uuid | ja | per Trigger gegen aktive Identität validiert |
role_id | uuid | ja | FK → AA_ROLE |
scope | mdm.acl_scope | ja | default global |
scope_entity_type_id | uuid | nein | Pflicht wenn scope='entity_type' |
scope_entity_id | uuid | nein | Pflicht wenn scope='entity' |
scope_relation_type_id | uuid | nein | Pflicht wenn scope='relation_type' |
valid_from | timestamptz | nein | |
valid_to | timestamptz | nein | exklusiv |
metadata | jsonb | ja | default '{}' |
| Audit-/Soft-Delete-Felder | – | – |
Constraints und Trigger
principal_role_validity_chk:valid_from <= valid_to.principal_role_principal_kind_chk:principal_typeist eine Identität, keineAA_ROLE.principal_role_scope_consistency_chk: Scope-Felder passen zuscope.trg_principal_role_validate_principal: Existenz aktive Identität.uq_principal_role_active: Eindeutigkeit pro Principal/Rolle/Scope unter aktiven Einträgen.
Vererbung über Gruppen
Wenn ein AA_PRINCIPAL_ROLE-Eintrag mit principal_type='group' existiert, gelten die Permissions der Rolle für alle aktiven Mitglieder der Gruppe (transitiv über AA_PRINCIPAL_GROUP_MEMBER). Materialisiert in mdm.v_principal_role_active.