Beispiel für eine API, die vom Zustimmungsframework für Microsoft Identity geschützt ist
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 Artikel API-Schutz, um bewährte Methoden für die Registrierung zu erlernen, Berechtigungen und Zustimmung zu definieren und den Zugriff zu erzwingen.
Sehen wir uns an, wie eine API, die durch die Microsoft Identity Platform geschützt ist, das Zustimmungsframework für Microsoft Identity verwendet. Wir verwenden die Microsoft Graph-API als Beispiel, da sie das Zustimmungsframework für Microsoft Identity Platform am umfassendsten nutzt.
Benennungskonvention für Berechtigungsnamen
Das Microsoft Graph-Team hat eine Benennungskonvention für Berechtigungsnamen erstellt, um die Verbindung 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 Aktualisieren und Löschen).
Das Einschränkungselement wirkt sich auf den Zugriffsgrad aus, den Ihre App im Verzeichnis hat. Microsoft Graph unterstützt diese Einschränkungen:
- All erteilt der App die Berechtigung, die Vorgänge für alle Ressourcen des angegebenen Typs in einem Verzeichnis auszuführen.
- Shared erteilt Ihrer App die Berechtigung zum Ausführen der Vorgänge für Ressourcen, die andere Benutzer für den angemeldeten Benutzer freigegeben 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 Datei-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 Vorgänge 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:
Berechtigung | Anzeigezeichenfolge | Beschreibung |
---|---|---|
User.Read |
Melden Sie sich an und lesen Sie das Benutzerprofil | Ermöglicht Benutzern die Anmeldung bei der App. Die App kann das Profil der angemeldeten Benutzer lesen. Außerdem kann die App grundlegende Unternehmensinformationen von angemeldeten Benutzern lesen. |
User.ReadWrite |
Lese- und Schreibzugriff auf das Benutzerprofil | Ermöglicht es 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
vorhanden (im Gegensatz zu einer einzigen Berechtigung wie User.Access
, die nicht vorhanden ist), damit Anwendungen dem Zero Trust-Prinzip der geringsten Berechtigung folgen können. Wenn der Entwickler nicht über eine Anforderung und keinen Code zum Aktualisieren des Benutzerprofils verfügt, fragt die App nicht nach User.ReadWrite
. Daher kann ein Angreifer 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 zusätzlich zum Lesen des vollständigen Profils des aktuellen Benutzers die grundlegenden Informationen aus dem Organisationsobjekt in Microsoft Graph.
Schauen wir uns eine weitere Berechtigung an:
Berechtigung | Anzeigezeichenfolge | Beschreibung |
---|---|---|
User.ReadBasic.All |
Grundlegende Profile aller Benutzer lesen | Ermöglicht der App, einen einfachen Satz von Profileigenschaften anderer Benutzer in Ihrer Organisation im Namen des angemeldeten Benutzers zu lesen. Umfasst Anzeigename, Vor- und Nachname, E-Mail-Adresse, offene Erweiterungen und Foto. Ermöglicht es der App, das vollständige Profil des angemeldeten Benutzers zu lesen. |
Der Vorgangsbereich, User.ReadBasic.All
der mit allem beginnt, was User.Read
tut. Darüber hinaus können Sie auf Anzeigename, Vor- und Nachname, 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:
Berechtigung | Anzeigezeichenfolge | Beschreibung |
---|---|---|
User.Read.All |
Vollständige Profile aller Benutzer lesen | Ermöglicht der App, den vollständigen Satz von Profileigenschaften, Berichten und Vorgesetzten anderer Benutzer in Ihrer Organisation im Namen des angemeldeten Benutzers zu lesen. |
User.ReadWrite.All |
Vollständige Profile aller Benutzer lesen und schreiben | Ermöglicht der App, den vollständigen Satz von Profileigenschaften, Berichten und Vorgesetzten anderer Benutzer in Ihrer Organisation im Namen des angemeldeten Benutzers zu lesen und zu schreiben. Ermöglicht der App außerdem, Benutzer zu erstellen und zu löschen und Benutzerpasswö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
die Organisationshierarchie des Mandanten enthält. Wenn ein Angreifer auf diese Informationen zugegriffen hat, könnte er einen gezielten Phishing-Angriff starten, 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, die diese Berechtigung erteilt hat, 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. Bei der Entscheidung, diese Berechtigung zu erteilen oder zu verweigern, sollten Sie Ihre App mit einem Mandantenadministratorbenutzer auswerten.
Berechtigungen, die eine Administratoreinwilligung erfordern
Angesichts der Leistungsfähigkeit von User.Read.All
und User.ReadWrite.All
haben die Microsoft Graph-API-Designer diese Berechtigungen mit Einwilligung des Administrators festgelegt. Lassen Sie uns eine Spalte Administrator? in unserem Berechtigungsverzeichnis einfügen, um anzugeben, wann die Berechtigung eine Administratoreinwilligung erfordert:
Berechtigung | Anzeigezeichenfolge | Beschreibung | Admin? |
---|---|---|---|
User.Read |
Melden Sie sich an und lesen Sie das Benutzerprofil | Ermöglicht Benutzern die Anmeldung bei der App. Die App kann das Profil der angemeldeten Benutzer lesen. Außerdem kann die App grundlegende Unternehmensinformationen von angemeldeten Benutzern lesen. | Nein |
User.ReadWrite |
Lese- und Schreibzugriff auf das Benutzerprofil | Ermöglicht es 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 einfachen Satz von Profileigenschaften anderer Benutzer in Ihrer Organisation im Namen des angemeldeten Benutzers zu lesen. Umfasst Anzeigename, Vor- und Nachname, E-Mail-Adresse, offene Erweiterungen und Foto. Ermöglicht es der App, das vollständige Profil des angemeldeten Benutzers zu lesen. | Nein |
User.Read.All |
Vollständige Profile aller Benutzer lesen | Ermöglicht der App, den vollständigen Satz von Profileigenschaften, Berichten und Vorgesetzten anderer Benutzer in Ihrer Organisation im Namen des angemeldeten Benutzers zu lesen. | Ja |
User.ReadWrite.All |
Vollständige Profile aller Benutzer lesen und schreiben | Ermöglicht der App, den vollständigen Satz von Profileigenschaften, Berichten und Vorgesetzten anderer Benutzer in Ihrer Organisation im Namen des angemeldeten Benutzers zu lesen und zu schreiben. Ermöglicht der App außerdem, Benutzer zu erstellen und zu löschen und Benutzerpasswörter im Namen des angemeldeten Benutzers zurückzusetzen. | Ja |
Wie im Artikel Anforderung von Berechtigungen, die eine Administratoreinwilligung erfordern gezeigt, können Mandantenadministratoren Anforderungen überschreiben und alle Anwendungsberechtigungen in ihrem Mandanten mit erforderlicher Administratoreinwilligung definieren. Sie sind schlau genug, Ihre App so zu entwerfen, dass sie ordnungsgemäß verarbeitet wird, wenn Sie kein Token von Ihrer Anforderung erhalten. Fehlende Einwilligung ist einer von vielen Gründen, warum Ihre App möglicherweise kein Token empfängt.
Nächste Schritte
- Das Aufrufen einer API aus einer anderen API hilft Ihnen, Zero Trust sicherzustellen, wenn Sie über eine API verfügen, die eine andere API aufrufen und Ihre Anwendung sicher entwickeln muss, wenn sie im Auftrag eines Benutzers arbeitet.
- Wenn Sie die Autorisierung für den Zugriff auf Ressourcen erwerben, können Sie besser verstehen, wie Sie Zero Trust beim Abrufen von Ressourcenzugriffsberechtigungen für Ihre Anwendung am besten sicherstellen können.
- Anpassen von Token beschreibt die Informationen, die Sie in Microsoft Entra-Token empfangen können, und wie Token angepasst werden, um Flexibilität und Kontrolle zu verbessern und gleichzeitig die Sicherheit von Zero Trust der Anwendung mit geringsten Berechtigungen zu erhöhen.
- Das Konfigurieren von Gruppenansprüchen und App-Rollen in Token zeigt, wie Sie Ihre Apps mit App-Rollendefinitionen konfigurieren und App-Rollen Sicherheitsgruppen zuweisen, um die Flexibilität und Kontrolle zu verbessern, und gleichzeitig die Zero Trust-Sicherheit mit geringsten Berechtigungen erhöhen können.
- Das Anfordern von Berechtigungen, die eine administrative Zustimmung erfordern, beschreibt die Berechtigungs- und Zustimmungserfahrung, wenn Anwendungsberechtigungen administrative Zustimmung erfordern.
- Laden Sie in diesem Schnellstart: Schützen einer Web-API mit der Microsoft Identity Platform ein Codebeispiels zum Schutz einer ASP.NET Web-API herunter, und führen Sie es aus.
- In diesem Tutorial – Transformieren und Schützen Ihrer API in Azure API Management erfahren Sie, wie Sie allgemeine Richtlinien konfigurieren, um die Technologiestapelinformationen oder die ursprünglichen URLs in der HTTP-Antwort der API auszublenden.
- Bewährte Methoden zur Autorisierung helfen Ihnen, die besten Autorisierungs-, Berechtigungs- und Zustimmungsmodelle für Ihre Anwendungen zu implementieren.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für