RBAC avec domaines
Définition du rôle avec les locataires de domaines
Les rôles RBAC dans Casbin peuvent être globaux ou spécifiques à un domaine. Les rôles spécifiant le domaine signifient que les rôles pour un utilisateur peuvent être différents lorsque l'utilisateur est dans différents domaines/locataires. C'est très utile pour les grands systèmes comme un cloud, car les utilisateurs sont généralement dans différents locataires.
La définition de rôle avec les domaines/locataires devrait être quelque chose comme :
[role_definition]
g = _, _, _
Le 3ème _
signifie le nom du domaine/locataire, cette partie ne doit pas être modifiée. Alors la politique peut être:
p, admin, tenant1, data1, read
p, admin, tenant2, data2, read
g, alice, admin, tenant1
g, alice, user, tenant2
Cela signifie que le rôle admin
dans tenant1
peut lire data1
. Et alice
a le rôle d'administrateur
dans tenant1
, et a le rôle de l'utilisateur
dans tenant2
. Elle peut donc lire data1
. Cependant, comme alice
n'est pas un admin
dans tenant2
, elle ne peut pas lire données 2
.
Ensuite, dans un matcher, vous devriez vérifier le rôle comme ci-dessous:
[matchers]
m = g(r.sub, p.sub, r.dom) && r.dom == p.dom && r.obj == p.obj && r.act == p.act
Veuillez consulter le rbac_with_domains_model.conf pour des exemples.