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 Tenant1und hat Benutzer Rolle in Tenant2. So kann sie Daten 1 lesen. Da Alice jedoch kein Admin in Tenant2ist, 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.