Rollenbasierte Zugriffssteuerung für Anwendungsentwickler

Die rollenbasierte Zugriffssteuerung (RBAC) ermöglicht es bestimmten Benutzern oder Gruppen, bestimmte Berechtigungen für den Zugriff auf Ressourcen und deren Verwaltung zu erhalten. Die RBAC bei einer Anwendung unterscheidet sich von der rollenbasierten Zugriffssteuerung in Azure und der rollenbasierten Zugriffssteuerung in Microsoft Entra. Benutzerdefinierte Azure-Rollen und integrierte Rollen sind beide Teil von Azure RBAC, das für die Verwaltung von Azure-Ressourcen verwendet wird. Microsoft Entra RBAC wird verwendet, um Microsoft Entra-Ressourcen zu verwalten. In diesem Artikel wird die anwendungsspezifische RBAC erläutert. Informationen zum implementieren der anwendungsspezifischen rollenbasierten Zugriffssteuerung finden Sie unter Hinzufügen von App-Rollen zu Ihrer Anwendung und Empfangen der Rollen im Token.

Rollendefinitionen

RBAC ist eine beliebte Methode zum Erzwingen der Autorisierung in Anwendungen. Wenn eine Organisation RBAC verwendet, definiert ein Anwendungsentwickler Rollen, anstatt einzelne Benutzer oder Gruppen zu autorisieren. Ein Administrator kann dann verschiedenen Benutzern und Gruppen Rollen zuweisen, um zu steuern, wer auf welche Inhalte und Funktionen zugreifen kann.

RBAC hilft einem Anwendungsentwickler bei der Verwaltung von Ressourcen und deren Nutzung. RBAC ermöglicht es einem Anwendungsentwickler auch, die Bereiche einer Anwendung zu kontrollieren, auf die Benutzer zugreifen können. Administratoren können mithilfe der Eigenschaft Benutzerzuweisung erforderlich steuern, welche Benutzer Zugriff auf eine Anwendung haben. Die Entwickler müssen bestimmte Benutzer innerhalb der Anwendung berücksichtigen und wissen, welche Optionen die Benutzer innerhalb der Anwendung haben.

Ein Anwendungsentwickler erstellt zunächst eine Rollendefinition im Registrierungsbereich der Anwendung im Microsoft Entra Admin Center. Die Rollendefinition enthält einen Wert, der für Benutzer, die dieser Rolle zugewiesen wurden, zurückgegeben wird. Ein Entwickler kann dann mithilfe dieses Werts Anwendungslogik implementieren, um zu bestimmen, welche Aktionen diese Benutzer in einer Anwendung ausführen können oder nicht.

RBAC-Optionen

Die folgenden Hinweise sollten Sie beachten, wenn Sie eine Autorisierung mithilfe rollenbasierter Zugriffssteuerung in eine Anwendung integrieren möchten:

  • Definieren Sie die Rollen, die für die Autorisierungsanforderung der Anwendung erforderlich sind.
  • Wenden Sie die entsprechenden Rollen für authentifizierte Benutzer an, speichern Sie sie und rufen Sie sie ab.
  • Bestimmen Sie das Verhalten der Anwendung auf der Grundlage der zum aktuellen Benutzer zugewiesenen Rollen.

Nachdem die Rollen definiert sind, unterstützt die Microsoft-Identitätsplattform mehrere verschiedene Lösungen, die zum Anwenden, Speichern und Abrufen von Rolleninformationen für authentifizierte Benutzer verwendet werden können. Diese Lösungen umfassen App-Rollen, Microsoft Entra-Gruppen und die Verwendung von benutzerdefinierten Datenspeichern für Benutzerrolleninformationen.

Entwickler können ihre eigene Implementierung flexibel dafür bereitstellen, wie Rollenzuweisungen als Anwendungsberechtigungen interpretiert werden sollen. Diese Interpretation der Berechtigungen kann mithilfe von Middleware oder anderen Optionen erfolgen, die von der Plattform der Anwendungen oder den zugehörigen Bibliotheken bereitgestellt werden. Anwendungen erhalten normalerweise Benutzerrolleninformationen als Ansprüche und entscheiden dann über Benutzerberechtigungen anhand dieser Ansprüche.

App-Rollen

Mit Microsoft Entra ID können Sie App-Rollen definieren für Ihre Anwendung und diese Rollen Benutzern und anderen Anwendungen zuweisen. Die Rollen, die Sie einem Benutzer oder einer Anwendung zuweisen, definieren deren Zugriffsebene auf die Ressourcen und Vorgänge in Ihrer Anwendung.

Wenn Microsoft Entra ID ein Zugriffstoken für einen authentifizierten Benutzer oder eine authentifizierte Anwendung ausstellt, enthält es die Namen der Rollen, die Sie der Entität (dem Benutzer oder der Anwendung) im roles Anspruch des Zugriffstokens zugewiesen haben. Eine Anwendung wie eine Web-API, die dieses Zugriffstoken in einer Anforderung erhält, kann dann Autorisierungsentscheidungen basierend auf den Werten im roles Anspruch treffen.

Gruppen

Entwickler können die rollenbasierte Zugriffssteuerung auch mithilfe von Microsoft Entra-Gruppen in ihren Anwendungen implementieren. Dabei werden die Mitgliedschaften der Benutzer in spezifischen Gruppen als deren Rollenmitgliedschaften interpretiert. Wenn eine Organisation Gruppen verwendet, enthält das Token einen Gruppenanspruch. Der Gruppenanspruch bestimmt die Bezeichner für alle zugewiesenen Gruppen des Benutzers innerhalb des Mandanten.

Wichtig

Beim Arbeiten mit Gruppen müssen Entwickler das Konzept eines Überschreitungsanspruchs beachten. Wenn ein Benutzer das Überschreitungslimit (150 bei SAML-Token, 200 bei JWT-Token, 6 bei Nutzung des impliziten Flows) überschreitet, gibt Microsoft Entra ID standardmäßig keinen Gruppenanspruch im Token aus. Stattdessen enthält das Token einen „Überschreitungsanspruch“, der angibt, dass der Consumer des Tokens die Microsoft Graph-API abfragen muss, um die Gruppenmitgliedschaften des Benutzers abzurufen. Weitere Informationen zum Arbeiten mit Überschreitungsansprüchen finden Sie unter Ansprüche in Zugriffstoken. Es ist möglich, nur die einer Anwendung zugewiesenen Gruppen auszugeben, obwohl die gruppenbasierte Zuweisung die Microsoft Entra ID P1- oder P2-Edition erfordert.

Benutzerdefinierter Datenspeicher

App-Rollen und -Gruppen speichern Informationen zu Benutzerzuweisungen im Verzeichnis „Microsoft Entra“. Eine weitere Möglichkeit zum Verwalten von Benutzerrolleninformationen, die Entwicklern zur Verfügung stehen, ist deren Verwaltung außerhalb des Verzeichnisses in einem benutzerdefinierten Datenspeicher. Das kann z. B. eine SQL-Datenbank, ein Azure-Tabellenspeicher oder Azure Cosmos DB for Table sein.

Die Verwendung von benutzerdefiniertem Speicher ermöglicht Entwicklern eine zusätzliche Anpassung und Kontrolle darüber, wie Benutzern Rollen zugewiesen und wie sie dargestellt werden. Diese zusätzliche Flexibilität führt jedoch auch zu mehr Verantwortung. Beispielsweise gibt es zurzeit keinen Mechanismus zum Einbeziehen dieser Informationen in Token, die von Microsoft Entra zurückgegeben werden. Anwendungen müssen die Rollen abrufen, wenn Rolleninformationen in einem benutzerdefinierten Datenspeicher verwaltet werden. Das Abrufen der Rollen erfolgt normalerweise mithilfe von Erweiterungspunkten, die in der Middleware für die zum Entwickeln der Anwendung genutzten Plattform definiert wird. Entwickler sind für die ordnungsgemäße Sicherung des benutzerdefinierten Datenspeichers zuständig.

Mithilfe von benutzerdefinierten Azure AD B2C-Richtlinien können Sie mit benutzerdefinierten Datenspeichern interagieren und benutzerdefinierte Ansprüche in ein Token einbeziehen.

Auswählen eines Ansatzes

Im Allgemeinen sind App-Rollen die empfohlene Lösung. App-Rollen stellen das einfachste Programmiermodell bereit und sind für RBAC-Implementierungen vorgesehen. Allerdings können bestimmte Anwendungsanforderungen darauf hinweisen, dass ein anderer Ansatz eine bessere Lösung wäre.

Entwickler können mithilfe von App-Rollen steuern, ob ein Benutzer sich bei einer Anwendung anmelden kann oder eine Anwendung ein Zugriffstoken für eine Web-API abrufen kann. App-Rollen werden von Entwicklern gegenüber Microsoft Entra-Gruppen bevorzugt, wenn sie die Parameter der Autorisierung in ihren Anwendungen beschreiben und steuern möchten. Beispielsweise wird eine Anwendung, die Gruppen für die Autorisierung verwendet, im nächsten Mandanten nicht mehr funktionieren, da sowohl Gruppen-ID als auch Name unterschiedlich sein könnte. Eine Anwendung, die App-Rollen verwendet, bleibt sicher.

Obwohl entweder App-Rollen oder Gruppen für die Autorisierung verwendet werden können, können wichtige Unterschiede zwischen ihnen beeinflussen, was die beste Lösung bei einem bestimmten Szenario ist.

App-Rollen Microsoft Entra-Gruppen Benutzerdefinierter Datenspeicher
Programmiermodell Die einfachste Lösung. Sie sind für eine Anwendung spezifisch und werden in der Anwendungsregistrierung definiert. Sie werden mit der Anwendung verschoben. Komplexer. Gruppen-IDs variieren zwischen Mandanten, und Überschreitungsansprüche müssen möglicherweise berücksichtigt werden. Gruppen sind nicht spezifisch für eine Anwendung, sondern für einen Microsoft Entra-Mandanten. Am komplexesten. Entwickler müssen Mittel implementieren, mit denen Rolleninformationen sowohl gespeichert als auch abgerufen werden.
Rollenwerte sind zwischen Microsoft Entra-Mandanten statisch Ja Nein Ist abhängig von der Implementierung.
Rollenwerte können in mehreren Anwendungen verwendet werden Nein (Außer wenn die Rollenkonfiguration bei jeder Anwendungsregistrierung dupliziert wird). Ja Ja
Informationen werden im Verzeichnis gespeichert Ja Ja Nein
Informationen werden per Token übermittelt Ja (Rollenanspruch) Ja (Bei einer Überschreitung müssen Gruppenansprüche möglicherweise zur Laufzeit abgerufen werden) Nein (Wird zur Laufzeit über benutzerdefinierten Code abgerufen).
Lebensdauer Ist in der Anwendungsregistrierung im Verzeichnis enthalten. Wird beim Entfernen der Anwendungsregistrierung entfernt. Ist im Verzeichnis enthalten. Bleibt selbst dann intakt, wenn die Anwendungsregistrierung entfernt wird. Ist im benutzerdefinierten Datenspeicher enthalten. Ist nicht an eine Anwendungsregistrierung gebunden.

Nächste Schritte