Casbin

Casbin

  • Documents
  • API
  • Editeur
  • Plugins IDE
  • Authentification unique (SSO)
  • Forums
  • Aide
  • Blogue
  • Pricing
  • Contact Sales
  • Languages iconFrançais
    • English
    • 中文
    • 한국어
    • Русский
    • Deutsch
    • 日本語
    • Aider à traduire
  • GitHub

›Modélisation

Les Bases

  • Aperçu
  • Commencer
  • Comment ça marche
  • Tutoriels

Modélisation

  • Modèles pris en charge
  • Syntaxe pour les modèles
  • Effet
  • Fonction
  • RBAC
  • RBAC avec motif
  • RBAC avec domaines
  • Casbin RBAC v.s. RBAC96
  • ABAC
  • Modèle de priorité
  • Super Admin

Stockage

  • Stockage du modèle
  • Stockage de la politique
  • Chargement du sous-ensemble de la politique

Extensions

  • Enforcers
  • Adaptateurs
  • Observateurs
  • Répartiteurs
  • Responsables des rôles
  • Moyens
  • Moyens GraphQL
  • Moyens natifs du Cloud

API

  • Aperçu de l'API
  • API de gestion
  • RBAC API
  • RBAC avec API Domains
  • API RoleManager
  • Autorisations des données

Utilisation avancée

  • Multi-threads
  • Benchmarks
  • Optimisation des performances
  • Autorisation de Kubernetes
  • Autorisation de maillage de service par l'envoyé

Gestion

  • Portail Admin
  • Service Casbin
  • Gestion des logs et des erreurs
  • Utilisation du frontend

Editeur

  • Éditeur en ligne
  • Plugins IDE

En savoir plus

  • Nos Adopteurs
  • Contribuer
  • Politique de confidentialité
  • Conditions d'utilisation
Translate

RBAC

Définition du rôle

[role_definition] est la définition des relations d'héritage de rôle RBAC. Casbin prend en charge plusieurs instances de systèmes RBAC, par ex. les utilisateurs peuvent avoir des rôles et leurs relations d'héritage, et les ressources peuvent également avoir des rôles et des relations d'héritage. Ces deux systèmes RBAC n'interféreront pas.

Cette section est facultative. Si vous n'utilisez pas les rôles RBAC dans le modèle, alors omettez cette section.

[role_definition]
g = _, _
g2 = _, _

La définition de rôle ci-dessus montre que g est un système RBAC, et que g2 est un autre système RBAC. _, _ signifie qu'il y a deux parties à l'intérieur d'une relation d'héritage. Comme cas courant, vous utilisez généralement g seul si vous avez seulement besoin de rôles sur les utilisateurs. Vous pouvez également utiliser g et g2 lorsque vous avez besoin de rôles (ou de groupes) pour les utilisateurs et les ressources. Veuillez consulter les rbac_model.conf et rbac_model_with_resource_roles.conf pour des exemples.

Casbin stocke la véritable cartographie des rôles utilisateur (ou la cartographie des rôles des ressources si vous utilisez des rôles sur les ressources) dans la politique, par exemple :

p, data2_admin, data2, lire
g, alice, data2_admin

Cela signifie que alice hérite/est un membre du rôle data2_admin. alice ici peut être un utilisateur, une ressource ou un rôle. Casbin ne le reconnaît que comme une chaîne.

Ensuite, dans un matcher, vous devriez vérifier le rôle comme ci-dessous:

[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act

Cela signifie que sub dans la requête devrait avoir le rôle sub dans la politique.

note
  1. Casbin stocke uniquement la cartographie des rôles utilisateur.
  2. Casbin ne vérifie pas si un utilisateur est un utilisateur valide, ou un rôle est un rôle valide. Cela devrait être réglé par l'authentification.
  3. N'utilisez pas le même nom pour un utilisateur et un rôle dans un système RBAC, car Casbin reconnaît les utilisateurs et les rôles comme des chaînes, et il n'y a aucun moyen pour Casbin de savoir si vous spécifiez l'utilisateur alice ou le rôle alice. Vous pouvez simplement le résoudre en utilisant role_alice.
  4. Si A a le rôle B, B a le rôle C, puis A a le rôle C. Cette transitivité est infinie pour l'instant.

Hiérarchie des rôles

Le RBAC de Casbin prend en charge la fonction de hiérarchie des rôles RBAC1, c'est-à-dire si alice a rôle1, rôle1 a rôle2, puis alice aura également rôle2 et héritera de ses permissions.

Voici un concept appelé niveau hiérarchique. Le niveau de hiérarchie pour cet exemple est donc 2. Pour le gestionnaire de rôle intégré dans Casbin, vous pouvez spécifier le niveau max de la hiérarchie. La valeur par défaut est 10. Cela signifie qu'un utilisateur final comme alice ne peut hériter que de 10 niveaux de rôles.

// NewRoleManager est le constructeur pour créer une instance de l'implémentation
// RoleManager par défaut.
func NewRoleManager(maxHierarchyLevel int) rbac.RoleManager {
    rm := RoleManager{}
    rm.allRoles = &sync. ap{}
    rm.maxHierarchyLevel = maxHierarchyLevel
    rm. asPattern = faux

    retour &rm
}

Comment distinguer le rôle de l'utilisateur ?

Casbin ne distingue pas le rôle de l'utilisateur dans son RBAC. Ils sont tous traités comme des cordes. Si vous n'utilisez qu'un seul niveau RBAC (un rôle ne sera jamais membre d'un autre rôle). Vous pouvez utiliser e.GetAllSubjects() pour obtenir tous les utilisateurs et e.GetAllRoles() pour obtenir tous les rôles. Ils listent seulement tous les u et tous les r respectivement dans toutes les règles g, u, r.

Mais si vous utilisez RBAC à plusieurs niveaux (avec hiérarchie de rôles), et votre application n'enregistre pas si un nom (chaîne) est un utilisateur ou un rôle, ou si vous avez un utilisateur et un rôle avec le même nom. Vous pouvez ajouter un préfixe au rôle comme role::admin avant de le passer à Casbin. Vous saurez donc si c'est un rôle en vérifiant ce préfixe.

Comment interroger des rôles ou des permissions implicites ?

Lorsqu'un utilisateur hérite d'un rôle ou d'une permission via la hiérarchie RBAC au lieu de les assigner directement dans une règle de règle, nous appelons un tel type d'affectation comme implicite. Interroger de telles relations implicites, vous devez utiliser ces 2 API : GetImplicitRolesForUser() et GetImplicitPermissionsForUser() au lieu de GetRolesForUser() et GetPermissionsForUser(). Pour plus de détails, veuillez consulter ce problème GitHub.

Utiliser la correspondance de motif dans RBAC

See RBAC with Pattern

Responsable du rôle

See Role Managers section for details.

← FonctionRBAC avec motif →
  • Définition du rôle
  • Hiérarchie des rôles
  • Comment distinguer le rôle de l'utilisateur ?
  • Comment interroger des rôles ou des permissions implicites ?
  • Utiliser la correspondance de motif dans RBAC
  • Responsable du rôle
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?Stack Overflow
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @casbinHQ
Copyright © 2022 Casbin Organization