Udostępnij za pośrednictwem


Przykład interfejsu API chronionego przez platformę wyrażania zgody tożsamości firmy Microsoft

Ten artykuł może pomóc Tobie, jako deweloperowi, zaprojektować strategię uprawnień aplikacji zgodnie z zasadą najmniejszych uprawnień. Przed kontynuowaniem zapoznaj się z artykułem dotyczącym ochrony interfejsu API , aby poznać najlepsze rozwiązania dotyczące rejestracji, uprawnień i dostępu.

Przyjrzyjmy się, w jaki sposób interfejs API chroniony przez platformę tożsamości firmy Microsoft korzysta z platformy wyrażania zgody na tożsamość firmy Microsoft. Jako przykład używamy interfejsu API programu Microsoft Graph, ponieważ zapewnia on najbardziej rozbudowane wykorzystanie platformy wyrażania zgody platformy tożsamości firmy Microsoft.

Konwencja nazewnictwa nazw uprawnień

Zespół Microsoft Graph utworzył konwencję nazewnictwa nazw uprawnień, aby ułatwić łączenie uprawnień z dostępem do zasobów, który to dostęp uprawnienie umożliwia. Nazwy uprawnień programu Microsoft Graph są zgodne z prostym wzorcem resource.operation.constraint . Dwie podstawowe operacje to Read i ReadWrite (w tym aktualizacja i usuwanie).

Element ograniczenia ma wpływ na stopień dostępu, jaki aplikacja ma w katalogu. Program Microsoft Graph obsługuje następujące ograniczenia:

  • Wszystkie nadają aplikacji uprawnienia do wykonywania operacji na wszystkich zasobach określonego typu w katalogu.
  • Udostępnione nadaje Twojej aplikacji uprawnienia do wykonywania operacji na zasobach, które inni użytkownicy udostępnili zalogowanemu użytkownikowi.
  • Aplikacja AppFolder udziela aplikacji uprawnień do odczytywania i zapisywania plików w dedykowanym folderze w usłudze OneDrive. To ograniczenie jest widoczne tylko w obiekcie uprawnień Pliki i jest prawidłowe tylko dla kont Microsoft.
  • Jeśli określisz ustawienie Nie ma ograniczenia, aplikacja może wykonywać tylko operacje na zasobach, których właścicielem jest zalogowany użytkownik.

Dostęp i operacje na określonych zasobach

Przyjrzyjmy się niektórym uprawnieniam lub zakresom obiektu użytkownika w programie Microsoft Graph, aby zobaczyć, jak projektanci interfejsu API firmy Microsoft włączyli określony dostęp i operacje względem określonych zasobów:

Pozwolenie Łańcuch znaków wyświetlania Opis
User.Read Logowanie i odczytywanie profilu użytkownika Umożliwia użytkownikom logowanie się do aplikacji i umożliwia aplikacji odczytywanie profilu zalogowanych użytkowników. Umożliwia również aplikacji odczytywanie podstawowych informacji firmowych zalogowanych użytkowników.
User.ReadWrite Dostęp do odczytu i zapisu w profilu użytkownika Umożliwia aplikacji odczytywanie pełnego profilu zalogowanych użytkowników. Umożliwia również aplikacji aktualizowanie informacji o profilu zalogowanych użytkowników w ich imieniu.

User.Read i User.ReadWrite istnieją (w przeciwieństwie do pojedynczego uprawnienia, takiego jak User.Access, które nie istnieje), aby aplikacje mogły postępować zgodnie z zasadą najmniejszych uprawnień w modelu Zero Trust. Jeśli deweloper nie ma wymagań dotyczących kodu aktualizującego profil użytkownika, aplikacja nie prosi o User.ReadWrite. W związku z tym zły aktor nie może naruszyć bezpieczeństwa aplikacji i użyć jej do zmiany danych.

Zwróć uwagę, że User.Read nie tylko daje aplikacji dostęp do obiektu użytkownika. Każde uprawnienie reprezentuje określony zakres operacji. Ważne jest, aby deweloperzy i administratorzy zapoznali się z opisem uprawnień, aby dokładnie sprawdzić, jakie uprawnienia są włączone. User.Read, oprócz włączenia odczytywania pełnego profilu bieżącego użytkownika, umożliwia aplikacji wyświetlanie podstawowych informacji z obiektu Organizacje w programie Microsoft Graph.

Przyjrzyjmy się innemu uprawnieniu:

Pozwolenie Ciąg znaków do wyświetlenia Opis
User.ReadBasic.All Odczytywanie podstawowych profilów wszystkich użytkowników Umożliwia aplikacji odczytywanie podstawowego zestawu właściwości profilu innych użytkowników w organizacji w imieniu zalogowanego użytkownika. Zawiera nazwę wyświetlaną, imię i nazwisko rodziny, adres e-mail, otwarte rozszerzenia i zdjęcie. Umożliwia aplikacji odczytywanie pełnego profilu zalogowanego użytkownika.

Zakres operacji User.ReadBasic.All rozpoczyna się od wszystkiego, co robi User.Read. Ponadto można uzyskać dostęp do nazwy wyświetlanej, imienia i rodziny, adresu e-mail, zdjęcia i otwartych rozszerzeń dla innych użytkowników organizacji. Określony zakres operacji umożliwia aplikacjom posiadanie przyjaznego użytkownikowi interfejsu wybierania użytkowników i jest przykładem projektantów interfejsu API wykorzystujących uprawnienia do włączenia określonego zakresu operacji.

Przyjrzyjmy się jeszcze kilku uprawnieniam do obiektu użytkownika programu Microsoft Graph:

Pozwolenie Łańcuch wyświetlany Opis
User.Read.All Odczytywanie pełnych profilów wszystkich użytkowników Umożliwia aplikacji odczytywanie pełnego zestawu właściwości profilu, raportów i menedżerów innych użytkowników w organizacji w imieniu zalogowanego użytkownika.
User.ReadWrite.All Odczytywanie i zapisywanie pełnych profilów wszystkich użytkowników Umożliwia aplikacji odczytywanie i zapisywanie pełnego zestawu właściwości profilu, raportów i menedżerów innych użytkowników w organizacji w imieniu zalogowanego użytkownika. Umożliwia również aplikacji tworzenie i usuwanie użytkowników oraz resetowanie haseł użytkowników w imieniu zalogowanego użytkownika.

Podobnie jak w przypadku User.Read i User.ReadWrite, User.Read.All i User.ReadWrite.All są odrębnymi uprawnieniami, które umożliwiają aplikacji przestrzeganie zasady Zero Trust z najmniejszymi uprawnieniami.

User.Read.All jest interesujące, ponieważ każdy użytkownik w organizacji ma tę możliwość (na przykład otwórz program Outlook, przejdź w górę i w dół łańcucha raportów). Jako osoba indywidualna możesz zobaczyć pełny profil użytkownika każdego innego użytkownika w organizacji. Jednak projektanci interfejsu API programu Microsoft Graph zdecydowali, że tylko administratorzy powinni zezwolić aplikacji na wykonanie tej samej operacji, ponieważ User.Read.All obejmuje hierarchię organizacyjną dzierżawy. Jeśli osoba o złych zamiarach uzyska dostęp do tych informacji, może przeprowadzić docelowy atak phishingowy, w którym wiadomość e-mail pochodzi od menedżera osoby lub menedżera jej menedżera.

User.ReadWrite.All to potężny zakres operacyjny. Aplikacja z tym uprawnieniem może aktualizować, a nawet usuwać każdego użytkownika w dzierżawie. Jako delegowane uprawnienie, gdy użytkownik korzysta z aplikacji, aplikacja może wykonywać tylko to, na co ma pozwolenie bieżący użytkownik. Użytkownicy regularni nie mogą aktualizować ani usuwać innych użytkowników niezależnie od uprawnień aplikacji. Jednak gdy administrator dzierżawy korzysta z aplikacji, może wykonywać te operacje. Jeśli zdecydujesz się na przyznanie lub odmowę tego zezwolenia, oceń aplikację z perspektywy użytkownika administratora dzierżawy.

Biorąc pod uwagę możliwości User.Read.All oraz User.ReadWrite.All, projektanci interfejsu API Microsoft Graph uznali te uprawnienia za wymagające zgody administratora. Dodajmy kolumnę Administrator? do naszej tabeli uprawnień, aby wskazać, kiedy uprawnienie wymaga zgody administratora:

Pozwolenie Łańcuch wyświetlany Opis Admin?
User.Read Logowanie i odczytywanie profilu użytkownika Umożliwia użytkownikom logowanie się do aplikacji i umożliwia aplikacji odczytywanie profilu zalogowanych użytkowników. Umożliwia również aplikacji odczytywanie podstawowych informacji firmowych zalogowanych użytkowników. Nie
User.ReadWrite Dostęp do odczytu i zapisu w profilu użytkownika Umożliwia aplikacji odczytywanie pełnego profilu zalogowanych użytkowników. Umożliwia również aplikacji aktualizowanie informacji o profilu zalogowanych użytkowników w ich imieniu. Nie
User.ReadBasic.All Odczytywanie podstawowych profilów wszystkich użytkowników Umożliwia aplikacji odczytywanie podstawowego zestawu właściwości profilu innych użytkowników w organizacji w imieniu zalogowanego użytkownika. Zawiera nazwę wyświetlaną, imię i nazwisko rodziny, adres e-mail, otwarte rozszerzenia i zdjęcie. Umożliwia aplikacji odczytywanie pełnego profilu zalogowanego użytkownika. Nie
User.Read.All Odczytywanie pełnych profilów wszystkich użytkowników Umożliwia aplikacji odczytywanie pełnego zestawu właściwości profilu, raportów i menedżerów innych użytkowników w organizacji w imieniu zalogowanego użytkownika. Yes
User.ReadWrite.All Odczytywanie i zapisywanie pełnych profilów wszystkich użytkowników Umożliwia aplikacji odczytywanie i zapisywanie pełnego zestawu właściwości profilu, raportów i menedżerów innych użytkowników w organizacji w imieniu zalogowanego użytkownika. Umożliwia również aplikacji tworzenie i usuwanie użytkowników oraz resetowanie haseł użytkowników w imieniu zalogowanego użytkownika. Yes

Jak pokazano w artykule Żądanie uprawnień, które wymagają zgody administracyjnej , administratorzy dzierżawy mogą unieważnić wymagania i wyznaczyć dowolne lub wszystkie uprawnienia aplikacji w dzierżawie jako wymagające zgody administratora. Zaprojektuj aplikację, aby płynnie obsłużyć sytuację, gdy nie otrzymasz tokenu z żądania. Brak zgody jest jednym z wielu powodów, dla których aplikacja może nie otrzymać tokenu.

Następne kroki