Zum Hauptinhalt springen

Rollenbasierte Zugangskontrolle (Role-based access control)

Rollenbasierte Zugangskontrolle (RBAC) ist eine Methode, Berechtigungen an Benutzer basierend auf ihren Rollen zu vergeben. Die Verwendung von RBAC ist in folgenden Szenarien sinnvoll:

  • Du hast mehrere Benutzer mit unterschiedlichen Zugriffsbedürfnissen: RBAC ist ideal, wenn Benutzer je nach Rolle unterschiedliche Berechtigungen benötigen, wie z. B. Admin, Editor oder Betrachter.
  • Du musst die Berechtigungsverwaltung vereinfachen: Es ist effizient für die Verwaltung großer Benutzergruppen, indem Rollen zugewiesen werden, anstatt Berechtigungen einzeln zu vergeben.
  • Deine App bedient verschiedene Abteilungen oder Teams: Es ist nützlich in Szenarien, in denen verschiedene Gruppen unterschiedliche Zugriffsebenen auf Ressourcen benötigen.

Verstehe, wie rollenbasierte Zugangskontrolle funktioniert

Berechtigungen (Berechtigungen / Scopes)

Berechtigung (Permission) bezieht sich auf die Autorisierung (Authorization), auf eine API-Ressource zuzugreifen. In der realen Welt können Entitäten wie Bestellungen, Produkte und Dokumente als Ressourcen definiert werden, und verschiedene Aktionen können zugewiesen werden.

Beispiele für Berechtigungen, einschließlich der Möglichkeit, eine Bestellung zu bearbeiten, ein Dokument zu lesen und ein Produkt zu löschen, sind wie folgt:

  • write:orders
  • read:documents
  • delete:products
Berechtigungen

Die obige Abbildung zeigt, dass die Berechtigung read:item in der Ressource https://api-1.store.io sich von der Berechtigung read:item in der Ressource https://api-2.store.io unterscheidet.

Wenn keine API-Ressource angegeben wird, wird die Berechtigung als "für OIDC" behandelt. In der Regel ist dies nicht das, was du in RBAC möchtest.

Erfahre, wie du API-Berechtigungen konfigurieren in Logto kannst.

Rollen (Roles)

Rollen (Roles) sind eine Gruppierung von Berechtigungen, die Benutzern zugewiesen werden können. Sie bieten auch eine Möglichkeit, Berechtigungen, die für verschiedene APIs definiert wurden, zusammenzufassen, wodurch das Hinzufügen, Entfernen oder Anpassen von Berechtigungen effizienter wird, als sie einzelnen Benutzern zuzuweisen.

Hier ist ein Beispiel für eine order_admin-Rolle mit mehreren Berechtigungen für zwei Ressourcen:

Order Admin Rolle

Es ist in Ordnung, wenn sich Berechtigungen zwischen Rollen überschneiden.

Erfahre, wie du Rollen konfigurieren in Logto kannst.

Beispiel: Ein Online-Buchladen

Angenommen, du verwaltest einen Online-Buchladen. Hier vereinfachen wir das Zugriffsmodell stark zu Demonstrationszwecken.

Das Modell ist in zwei Haupt-API-Ressourcen unterteilt: Bestellungen und Produkte. Sie haben unterschiedliche Ressourcenindikatoren wie unten:

  • Bestellungen: https://api.store.io/orders
  • Produkte: https://api.store.io/products

Für jede Ressource möchtest du die Berechtigungen in Lesen, Schreiben und Löschen unterteilen. Also definierst du insgesamt sechs Berechtigungen:

  • https://api.store.io/orders
    • Berechtigung read:order
    • Berechtigung write:order
    • Berechtigung delete:order
  • https://api.store.io/products
    • Berechtigung read:product
    • Berechtigung write:product
    • Berechtigung delete:product

Hier ist die Illustration dieses Modells:

Buchladen-API und Berechtigungen

Du möchtest zwei Arten von Admins haben: Bestell-Admin und Produkt-Admin:

  • Bestell-Admin kann Bestellungen verwalten und Produkte einsehen (da Bestellungen aus Produkten bestehen), aber keine Produkte verwalten.
  • Produkt-Admin kann Produkte verwalten und sollte keine Kenntnis von Bestellungen haben.

Also erstellst du zwei Rollen, order_admin und product_admin, mit den folgenden Berechtigungen:

  • order_admin
    • https://api.store.io/orders
      • read:order, write:order, delete:order
    • https://api.store.io/products
      • read:product
  • product_admin
    • https://api.store.io/products
      • read:product, write:product, delete:product

Hier ist die Illustration dieser beiden Rollen:

Buchladen-Rollen

Es ist in Ordnung, sowohl order_admin als auch product_admin einem Benutzer zuzuweisen – dann hat dieser alle sechs Berechtigungen, die du gerade definiert hast.

Beachte, dass der Bestell-Admin die Berechtigung read:product mit dem Produkt-Admin teilt und die endgültigen Berechtigungen, die ein Benutzer besitzt, die Vereinigung aller Berechtigungen aus den Rollen sind, die ihm zugewiesen wurden.

RBAC in der Praxis: Eine Schritt-für-Schritt-Anleitung zur Implementierung sicherer Autorisierung (Authorization) für deine Anwendung

RBAC in Logto meistern: Ein umfassendes Praxisbeispiel

CIAM 102: Autorisierung (Authorization) & Rollenbasierte Zugangskontrolle (RBAC)