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.