Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel kann Ihnen als Entwickler dabei helfen, Ihre App-Berechtigungsstrategie so zu entwerfen, dass sie die geringsten Berechtigungen bereitstellt. Bevor Sie fortfahren, lesen Sie den API-Schutzartikel , um bewährte Methoden für Registrierung, Berechtigungen und Zugriff zu erfahren.
Sehen wir uns an, wie eine API, die durch die Microsoft Identity Platform geschützt ist, das Microsoft Identity Consent Framework verwendet. Wir verwenden die Microsoft Graph-API als Beispiel, da sie das Microsoft Identity Platform-Zustimmungsframework am umfassendsten nutzt.
Benennungskonvention für Berechtigungsnamen
Das Microsoft Graph-Team hat eine Benennungskonvention für Berechtigungsnamen erstellt, um die Verbindung mit der Berechtigung mit dem ressourcenzugriff zu erleichtern, den die Berechtigung ermöglicht. Microsoft Graph-Berechtigungsnamen entsprechen einem einfachen Resource.operation.constraint-Muster . Die beiden primären Vorgänge sind "Read" und "ReadWrite" (einschließlich Aktualisierung und Löschung).
Das Einschränkungselement wirkt sich auf den Zugriffsgrad aus, den Ihre App im Verzeichnis hat. Microsoft Graph unterstützt diese Einschränkungen:
- Alle erteilen der App die Berechtigung, die Vorgänge für alle Ressourcen des angegebenen Typs in einem Verzeichnis auszuführen.
- Freigegebene Ressourcen gewähren Ihrer App die Erlaubnis, die Vorgänge an Ressourcen auszuführen, die andere Benutzer dem angemeldeten Benutzer zur Verfügung gestellt haben.
- AppFolder gewährt Ihrer App die Berechtigung zum Lesen und Schreiben von Dateien in einem dedizierten Ordner in OneDrive. Diese Einschränkung wird nur für das Files-Berechtigungsobjekt verfügbar gemacht und gilt nur für Microsoft-Konten.
- Wenn Sie keine Einschränkung angeben, kann Ihre App nur die Vorgänge für die Ressourcen ausführen, die der angemeldete Benutzer besitzt.
Zugriff und Operationen für bestimmte Ressourcen
Sehen wir uns einige Berechtigungen oder Bereiche für das Benutzerobjekt in Microsoft Graph an, um zu sehen, wie die Microsoft-API-Designer spezifischen Zugriff und Vorgänge für bestimmte Ressourcen aktiviert haben:
| Erlaubnis | Anzeigezeichenfolge | Beschreibung |
|---|---|---|
User.Read |
Anmelden und Lesen des Benutzerprofils | Ermöglicht Benutzern, sich bei der App anzumelden, und ermöglicht es der App, das Profil angemeldeter Benutzer zu lesen. Außerdem kann die App grundlegende Unternehmensinformationen angemeldeter Benutzer lesen. |
User.ReadWrite |
Lese- und Schreibzugriff auf Benutzerprofile | Ermöglicht der App, das vollständige Profil des angemeldeten Benutzers zu lesen. Außerdem kann die App die Profilinformationen des angemeldeten Benutzers in seinem Namen aktualisieren. |
User.Read und User.ReadWrite sind vorhanden (im Gegensatz zu einer einzigen Berechtigung wie User.Access, die nicht existiert), damit Anwendungen dem Prinzip der geringsten Privilegien gemäß dem Zero Trust folgen können. Wenn der Entwickler keine Anforderung und keinen Code zum Aktualisieren des Benutzerprofils hat, fordert die App nicht nach User.ReadWrite. Daher kann ein ungültiger Akteur die Anwendung nicht kompromittieren und zum Ändern von Daten verwenden.
Beachten Sie, dass User.Read der Anwendung nicht nur Zugriff auf das Benutzerobjekt gibt. Jede Berechtigung stellt einen bestimmten Vorgangsbereich dar. Es ist wichtig, dass Entwickler und Administratoren die Berechtigungsbeschreibung lesen, um genau zu sehen, was eine bestimmte Berechtigung ermöglicht.
User.Read ermöglicht der Anwendung, nicht nur das vollständige Profil des aktuellen Benutzers zu lesen, sondern auch die grundlegenden Informationen aus dem Objekt Organisationen in Microsoft Graph einzusehen.
Sehen wir uns eine andere Berechtigung an:
| Erlaubnis | Anzeigezeichenfolge | Beschreibung |
|---|---|---|
User.ReadBasic.All |
Grundlegende Profile aller Benutzer lesen | Ermöglicht der App, einen grundlegenden Satz von Profileigenschaften anderer Benutzer in Ihrer Organisation im Namen des angemeldeten Benutzers zu lesen. Umfasst Anzeigename, Vorname und Familienname, E-Mail-Adresse, offene Erweiterungen und Foto. Ermöglicht der App, das vollständige Profil des angemeldeten Benutzers zu lesen. |
Der Betriebsbereich von User.ReadBasic.All beginnt mit allem, was User.Read tut. Darüber hinaus können Sie auf Anzeigename, Vorname und Familienname, E-Mail-Adresse, Foto und offene Erweiterungen für andere Organisationsbenutzer zugreifen. Der spezifische Bereich des Vorgangs ermöglicht Anwendungen die Verwendung einer ansprechenden Benutzerauswahl-UI und ist ein Beispiel für die API-Designer, die eine Berechtigung zum Aktivieren eines bestimmten Vorgangsbereichs verwenden.
Sehen wir uns ein paar weitere Berechtigungen für das Microsoft Graph-Benutzerobjekt an:
| Erlaubnis | Anzeigezeichenfolge | Beschreibung |
|---|---|---|
User.Read.All |
Lesezugriff auf vollständige Profile aller Benutzer | Ermöglicht der App, im Auftrag des angemeldeten Benutzers den vollständigen Satz von Profileigenschaften, Berichten und Vorgesetzten von anderen Benutzern in Ihrer Organisation zu lesen. |
User.ReadWrite.All |
Lese- und Schreibzugriff auf vollständige Profile aller Benutzer | Die App kann den vollständigen Satz von Profileigenschaften, Berichte und Vorgesetzte von anderen Benutzern in Ihrer Organisation im Namen des angemeldeten Benutzers lesen und schreiben. Ermöglicht der App außerdem, Benutzer zu erstellen und zu löschen und Benutzerwörter im Namen des angemeldeten Benutzers zurückzusetzen. |
Wie bei User.Read und User.ReadWrite sind User.Read.All und User.ReadWrite.All unterschiedliche Berechtigungen, die es einer Anwendung ermöglichen, dem Zero Trust-Prinzip der geringsten Berechtigung zu folgen.
User.Read.All ist interessant, da jeder Benutzer in der Organisation über diese Funktion verfügt (z. B. Outlook öffnen, eine Berichtskette nach oben und unten öffnen). Sie können als Einzelperson das vollständige Benutzerprofil jedes anderen Benutzers in Ihrer Organisation sehen. Die Microsoft Graph-API-Designer haben jedoch entschieden, dass nur Administratoren zulassen sollten, dass eine Anwendung denselben Vorgang ausführen kann, da User.Read.All sie die Organisationshierarchie des Mandanten enthält. Wenn ein schlechter Akteur auf diese Informationen zugegriffen hat, könnte er einen gezielten Phishing-Angriff bereitstellen, bei dem die Phishing-E-Mail vom Vorgesetzten einer Person oder dem Vorgesetzten seines Vorgesetzten stammt.
User.ReadWrite.All ist ein leistungsstarker Betriebsbereich. Eine Anwendung mit dieser Berechtigung kann jeden Benutzer im Mandanten aktualisieren oder sogar löschen. Als delegierte Berechtigung kann die App, wenn sich ein Benutzer vor der App befindet, nur die Aktionen ausführen, die der aktuelle Benutzer ausführen kann. Normale Benutzer können andere Benutzer unabhängig von den Berechtigungen der App nicht aktualisieren oder löschen. Wenn jedoch ein Mandantenadministrator die App verwendet, können sie diese Vorgänge ausführen. Wenn Sie sich entscheiden, entweder diese Berechtigung zu erteilen oder zu verweigern, bewerten Sie Ihre App aus der Sicht eines Mandantenadministrators.
Berechtigungen, die eine Administratorzustimmung erfordern
Angesichts der Leistungsfähigkeit von User.Read.All und User.ReadWrite.All haben die Designer der Microsoft Graph-API festgelegt, dass für diese Berechtigungen die Zustimmung des Administrators erforderlich ist. Fügen wir nun eine Spalte "Administrator" zu unserer Berechtigungstabelle hinzu, um anzugeben, wann die Berechtigung eine Administratorzustimmung erfordert:
| Erlaubnis | Anzeigezeichenfolge | Beschreibung | Admin? |
|---|---|---|---|
User.Read |
Anmelden und Lesen des Benutzerprofils | Ermöglicht Benutzern, sich bei der App anzumelden, und ermöglicht es der App, das Profil angemeldeter Benutzer zu lesen. Außerdem kann die App grundlegende Unternehmensinformationen angemeldeter Benutzer lesen. | Nein |
User.ReadWrite |
Lese- und Schreibzugriff auf Benutzerprofile | Ermöglicht der App, das vollständige Profil des angemeldeten Benutzers zu lesen. Außerdem kann die App die Profilinformationen des angemeldeten Benutzers in seinem Namen aktualisieren. | Nein |
User.ReadBasic.All |
Grundlegende Profile aller Benutzer lesen | Ermöglicht der App, einen grundlegenden Satz von Profileigenschaften anderer Benutzer in Ihrer Organisation im Namen des angemeldeten Benutzers zu lesen. Umfasst Anzeigename, Vorname und Familienname, E-Mail-Adresse, offene Erweiterungen und Foto. Ermöglicht der App, das vollständige Profil des angemeldeten Benutzers zu lesen. | Nein |
User.Read.All |
Lesezugriff auf vollständige Profile aller Benutzer | Ermöglicht der App, im Auftrag des angemeldeten Benutzers den vollständigen Satz von Profileigenschaften, Berichten und Vorgesetzten von anderen Benutzern in Ihrer Organisation zu lesen. | Ja |
User.ReadWrite.All |
Lese- und Schreibzugriff auf vollständige Profile aller Benutzer | Die App kann den vollständigen Satz von Profileigenschaften, Berichte und Vorgesetzte von anderen Benutzern in Ihrer Organisation im Namen des angemeldeten Benutzers lesen und schreiben. Ermöglicht der App außerdem, Benutzer zu erstellen und zu löschen und Benutzerwörter im Namen des angemeldeten Benutzers zurückzusetzen. | Ja |
Wie im Artikel zu Anforderungsberechtigungen, die eine Administratorzustimmung erfordern gezeigt, können Mandantenadministratoren Anforderungen überschreiben und alle Anwendungsberechtigungen in ihrem Mandanten als zustimmungspflichtig festlegen. Entwerfen Sie Ihre App so, dass sie ordentlich damit umgeht, wenn Sie kein Token von Ihrer Anforderung erhalten. Fehlende Zustimmung ist einer von vielen Gründen, warum Ihre App möglicherweise kein Token empfängt.
Nächste Schritte
- Aufrufen einer API über eine andere API hilft Ihnen, Zero Trust sicherzustellen, wenn Sie über eine API verfügen, die eine andere API aufrufen muss, und Ihre Anwendung sicher zu entwickeln, wenn sie im Auftrag eines Benutzers arbeitet.
- Erwerben der Autorisierung für den Zugriff auf Ressourcen hilft Ihnen zu verstehen, wie Sie beim Abrufen von Ressourcenzugriffsberechtigungen für Ihre Anwendung Zero Trust am besten sicherstellen können.
- Anpassen von Token beschreibt die Informationen, die Sie in Microsoft Entra-Token empfangen können. Es wird erläutert, wie Token angepasst werden, um Flexibilität und Kontrolle zu verbessern und gleichzeitig die Sicherheit der Anwendung Zero Trust mit geringsten Berechtigungen zu erhöhen.
- Konfigurieren von Gruppenansprüchen und App-Rollen in Token zeigt, wie Sie Ihre Apps mit App-Rollendefinitionen konfigurieren und Sicherheitsgruppen zu App-Rollen zuweisen. Diese Methoden tragen dazu bei, die Flexibilität und Kontrolle zu verbessern und gleichzeitig die Zero-Trust-Sicherheit der Anwendung mit dem Prinzip der minimalen Berechtigung zu erhöhen.
- Anfordern von Berechtigungen, die eine administratortechnische Zustimmung erfordern, beschreibt die Berechtigungs- und Zustimmungserfahrung, wenn Anwendungsberechtigungen administrative Zustimmung erfordern.
- In dieser Schnellstartanleitung: Schützen einer Web-API mit der Microsoft Identity Platform, Herunterladen und Ausführen eines Codebeispiels zum Schutz einer ASP.NET Web-API.
- In diesem Lernprogramm – Transformieren und Schützen Ihrer API in Azure API Management erfahren Sie, wie Sie allgemeine Richtlinien konfigurieren, um Technologiestapelinformationen und ursprüngliche URLs im HTTP-Antworttext der API auszublenden.
- Bewährte Methoden zur Autorisierung helfen Ihnen, die besten Autorisierungs-, Berechtigungs- und Zustimmungsmodelle für Ihre Anwendungen zu implementieren.