Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Uprawnienia wymagające zgody administratora
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
- Wywołanie interfejsu API z innego interfejsu API pomaga zapewnić model Zero Trust, gdy masz jeden interfejs API, który musi wywoływać inny interfejs API, oraz bezpieczeństwo przy opracowywaniu aplikacji, która działa w imieniu użytkownika.
- Uzyskiwanie autoryzacji dostępu do zasobów pomaga zrozumieć, jak najlepiej zapewnić zero trust podczas uzyskiwania uprawnień dostępu do zasobów dla aplikacji.
- Dostosowywanie tokenów opisuje informacje, które można uzyskać z tokenów Microsoft Entra. Wyjaśniono w nim, jak dostosować tokeny w celu zwiększenia elastyczności i kontroli przy jednoczesnym zwiększeniu poziomu zabezpieczeń Zero Trust aplikacji z najniższymi uprawnieniami.
- Konfigurowanie roszczeń grupowych i ról aplikacji w tokenach pokazuje, jak skonfigurować aplikacje z wykorzystaniem definicji ról aplikacji oraz jak przypisać grupy zabezpieczeń do konkretnych ról aplikacji. Te metody pomagają zwiększyć elastyczność i kontrolę przy jednoczesnym zwiększeniu zabezpieczeń Zero Trust aplikacji zgodnie z zasadą najmniejszych uprawnień.
- Żądanie uprawnień wymagających zgody administracyjnej opisuje środowisko uprawnień i zgody, gdy uprawnienia aplikacji wymagają zgody administracyjnej.
- W tym przewodniku Szybki start: ochrona internetowego interfejsu API za pomocą platformy tożsamości firmy Microsoft, pobierz i uruchom przykładowy kod, który pokazuje, jak chronić internetowy interfejs API ASP.NET.
- W tym samouczku — przekształcanie i ochrona interfejsu API w usłudze Azure API Management dowiesz się, jak skonfigurować typowe zasady, aby ukryć informacje o stosie technologii i oryginalnych adresach URL w treści odpowiedzi HTTP interfejsu API.
- Najlepsze rozwiązania dotyczące autoryzacji pomagają zaimplementować najlepsze modele autoryzacji, uprawnień i zgody dla aplikacji.