RBAC mit Domänen
Rollendefinition mit Domäneninstanzen
Die RBAC-Rollen in Casbin können global oder domänenspezifisch sein. Domain-spezifische Rollen bedeuten, dass die Rollen eines Benutzers unterschiedlich sein können, wenn der Benutzer sich in verschiedenen Domänen/Mietern befindet. Dies ist sehr nützlich für große Systeme wie eine Cloud, da die Benutzer in der Regel in verschiedenen Mietern sind.
Die Rollendefinition mit Domänen/Mietern sollte so etwas wie folgt sein:
[role_definition]
g = _, _, _
Der 3. _
bedeutet den Namen der Domain/Mieter, dieser Teil sollte nicht geändert werden. Dann kann die Politik lauten:
p, admin, tenant1, data1, lesen
p, admin, tenant2, data2, lesen
g, alice, admin, tenant1
g, alice, user, tenant2
Es bedeutet admin
Rolle in tenant1
kann data1
lesen. Und Alice
hat admin
Rolle in Tenant1
und hat Benutzer
Rolle in Tenant2
. So kann sie Daten 1
lesen. Da Alice
jedoch kein Admin
in Tenant2
ist, kann sie data2
nicht lesen.
Dann solltest du in einem Matcher die Rolle wie unten überprüfen:
[matchers]
m = g(r.sub, p.sub, r.dom) && r.dom == p.dom && r.obj == p.obj && r.act == p.act
Beispiele finden Sie in der rbac_with_domains_model.conf.