Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vám jako vývojář může pomoct navrhnout strategii oprávnění aplikace tak, aby poskytovala nejnižší oprávnění. Než budete pokračovat, přečtěte si článek o ochraně rozhraní API a seznamte se s osvědčenými postupy pro registraci, oprávnění a přístup.
Pojďme se podívat, jak rozhraní API, které je chráněné platformou Microsoft Identity Platform, používá rozhraní Microsoft Identity Consent Framework. Jako příklad používáme rozhraní Microsoft Graph API, protože využívá nejrozsáhlejší architekturu pro vyjádření souhlasu platformy Microsoft Identity Platform.
Konvence pojmenování názvů oprávnění
Tým Microsoft Graphu vytvořil konvenci vytváření názvů pro názvy oprávnění, aby bylo snazší připojit oprávnění k přístupu k prostředku, který oprávnění povolí. Názvy oprávnění Microsoft Graphu odpovídají jednoduchému vzoru resource.operation.constraint . Dvě primární operace jsou Read a ReadWrite (včetně aktualizace a odstranění).
Prvek omezení ovlivňuje stupeň přístupu, který má vaše aplikace v adresáři. Microsoft Graph podporuje tato omezení:
- Všechny uděluje vaší aplikaci oprávnění k provádění operací se všemi prostředky zadaného typu v adresáři.
- Sdílené uděluje vaší aplikaci oprávnění k provádění operací s prostředky, které jiní uživatelé sdíleli s přihlášeným uživatelem.
- AppFolder uděluje vaší aplikaci oprávnění ke čtení a zápisu souborů ve vyhrazené složce na OneDrivu. Toto omezení je vystaveno pouze u objektu oprávnění Soubory a je platné pouze pro účty Microsoft.
- Pokud zadáte Žádné omezení, aplikace může provádět pouze operace s prostředky, které vlastní přihlášený uživatel.
Přístup a operace vůči konkrétním prostředkům
Pojďme se podívat na některá oprávnění nebo obory pro objekt uživatele v Microsoft Graphu a podívat se, jak návrháři rozhraní Microsoft API povolili konkrétní přístup a operace s konkrétními prostředky:
| Povolení | Zobrazovaný řetězec | Description |
|---|---|---|
User.Read |
Přihlášení a čtení profilu uživatele | Umožňuje uživatelům přihlásit se k aplikaci a umožní aplikaci číst profil přihlášených uživatelů. Umožňuje také aplikaci číst základní firemní informace přihlášených uživatelů. |
User.ReadWrite |
Přístup pro čtení a zápis k profilu uživatele | Umožňuje aplikaci číst úplný profil přihlášeného uživatele. Umožňuje také aplikaci aktualizovat profilové informace přihlášeného uživatele jeho jménem. |
User.Read a User.ReadWrite existují (na rozdíl od jediného oprávnění, jako User.Access, které neexistuje), aby aplikace mohly dodržovat princip nulové důvěry s principem nejmenších oprávnění. Pokud vývojář nemá požadavek a kód pro aktualizaci profilu uživatele, aplikace o to nepožádá User.ReadWrite. Proto zlomyslný uživatel nemůže převzít kontrolu nad aplikací a použít ji ke změně dat.
Všimněte si, že User.Read aplikaci nedává jenom přístup k objektu uživatele. Každé oprávnění představuje konkrétní rozsah operací. Je důležité, aby vývojáři a správci přečetli popis oprávnění, aby přesně viděli, co konkrétní oprávnění umožňuje.
User.Read, kromě povolení čtení celého profilu aktuálního uživatele umožňuje aplikaci zobrazit základní informace z objektu Organizace v Microsoft Graphu.
Pojďme se podívat na další oprávnění:
| Povolení | Zobrazovaný řetězec | Description |
|---|---|---|
User.ReadBasic.All |
Čtení základních profilů všech uživatelů | Umožňuje aplikaci číst základní sadu vlastností profilu jiných uživatelů ve vaší organizaci jménem přihlášeného uživatele. Zahrnuje zobrazované jméno, křestní jméno a příjmení, e-mailovou adresu, otevřené rozšíření a fotografii. Umožňuje aplikaci číst úplný profil přihlášeného uživatele. |
Rozsah operací, který zahrnuje vše, co User.ReadBasic.All a User.Read dělají. Kromě toho máte přístup k zobrazovanému jménu, křestnímu jménu a jménu rodiny, e-mailové adrese, fotce a otevřeným rozšířením pro ostatní uživatele organizace. Konkrétní rozsah operací umožňuje aplikacím mít pěkné uživatelské rozhraní pro výběr lidí a je příkladem návrhářů rozhraní API, kteří používají oprávnění k povolení konkrétního rozsahu operací.
Podívejme se na několik dalších oprávnění k objektu uživatele Microsoft Graphu:
| Povolení | Zobrazovaný řetězec | Description |
|---|---|---|
User.Read.All |
Čtení úplných profilů všech uživatelů | Umožňuje aplikaci číst celou sadu vlastností profilu, sestav a správců jiných uživatelů ve vaší organizaci jménem přihlášeného uživatele. |
User.ReadWrite.All |
Čtení a zápis celých profilů všech uživatelů | Umožňuje aplikaci číst a zapisovat úplnou sadu vlastností profilů, zpráv a manažerů ostatních uživatelů ve vaší organizaci jménem přihlášeného uživatele. Umožňuje také aplikaci vytvářet a odstraňovat uživatele a resetovat hesla uživatelů jménem přihlášeného uživatele. |
Stejně jako u User.Read a User.ReadWrite, User.Read.All a User.ReadWrite.All jsou jedinečná oprávnění, která aplikaci umožňují dodržovat princip nulové důvěry s minimálními oprávněními.
User.Read.All je zajímavé, protože každý uživatel v organizaci má tuto schopnost (například otevřít Outlook, navigovat nahoru a dolů po hierarchii reportingu). Jako jednotlivec uvidíte úplný profil uživatele všech ostatních uživatelů ve vaší organizaci. Návrháři rozhraní Microsoft Graph API se ale rozhodli, že pouze administrátoři by měli aplikaci povolit provedení téže operace, protože User.Read.All zahrnuje organizační hierarchii nájemce. Pokud k těmto informacím přistoupil útočník, mohl by spustit cílený phishingový útok, ve kterém by phishingový e-mail pocházel od nadřízeného osoby nebo manažera jejího nadřízeného.
User.ReadWrite.All je výkonný rozsah operací. Aplikace s tímto oprávněním může aktualizovat nebo dokonce odstranit každého uživatele v tenantovi. Když je uživatel před aplikací, může aplikace jako delegovaná oprávnění provádět jenom to, co může aktuální uživatel dělat. Běžní uživatelé nemůžou aktualizovat ani odstraňovat jiné uživatele bez ohledu na oprávnění aplikace. Pokud ale správce tenanta aplikaci použije, může tyto operace provádět. Když se rozhodnete udělit nebo odepřít toto oprávnění, vyhodnoťte aplikaci s ohledem na uživatele správce tenanta.
Oprávnění vyžadující souhlas správce
Vzhledem k výkonu User.Read.All a User.ReadWrite.All určili návrháři rozhraní API Microsoft Graph tato oprávnění jako vyžadující souhlas správce. Pojďme přidat sloupec Správce? do naší tabulky oprávnění, abychom označili, kdy oprávnění vyžaduje souhlas správce:
| Povolení | Zobrazovaný řetězec | Description | Admin? |
|---|---|---|---|
User.Read |
Přihlášení a čtení profilu uživatele | Umožňuje uživatelům přihlásit se k aplikaci a umožní aplikaci číst profil přihlášených uživatelů. Umožňuje také aplikaci číst základní firemní informace přihlášených uživatelů. | Ne |
User.ReadWrite |
Přístup pro čtení a zápis k profilu uživatele | Umožňuje aplikaci číst úplný profil přihlášeného uživatele. Umožňuje také aplikaci aktualizovat profilové informace přihlášeného uživatele jeho jménem. | Ne |
User.ReadBasic.All |
Čtení základních profilů všech uživatelů | Umožňuje aplikaci číst základní sadu vlastností profilu jiných uživatelů ve vaší organizaci jménem přihlášeného uživatele. Zahrnuje zobrazované jméno, křestní jméno a příjmení, e-mailovou adresu, otevřené rozšíření a fotografii. Umožňuje aplikaci číst úplný profil přihlášeného uživatele. | Ne |
User.Read.All |
Čtení úplných profilů všech uživatelů | Umožňuje aplikaci číst celou sadu vlastností profilu, sestav a správců jiných uživatelů ve vaší organizaci jménem přihlášeného uživatele. | Ano |
User.ReadWrite.All |
Čtení a zápis celých profilů všech uživatelů | Umožňuje aplikaci číst a zapisovat úplnou sadu vlastností profilů, zpráv a manažerů ostatních uživatelů ve vaší organizaci jménem přihlášeného uživatele. Umožňuje také aplikaci vytvářet a odstraňovat uživatele a resetovat hesla uživatelů jménem přihlášeného uživatele. | Ano |
Jak je uvedeno v článku Vyžádání oprávnění, která vyžadují souhlas správce, mohou správci tenanta ignorovat požadavky a označit libovolná nebo všechna oprávnění aplikace ve svém tenantovi jako vyžadující souhlas správce. Navrhněte aplikaci tak, aby elegantně zpracovávala situaci, kdy neobdržíte token z vašeho požadavku. Nedostatek souhlasu je jedním z mnoha důvodů, proč vaše aplikace nemusí dostat token.
Další kroky
- Volání rozhraní API z jiného rozhraní API vám pomůže zajistit nulová důvěra (Zero Trust), když máte jedno rozhraní API, které potřebuje volat jiné rozhraní API a bezpečně vyvíjet aplikaci, když pracuje jménem uživatele.
- Získání autorizace pro přístup k prostředkům vám pomůže pochopit, jak nejlépe zajistit nulovou důvěryhodnost při získávání přístupových oprávnění k prostředkům pro vaši aplikaci.
- Přizpůsobení tokenů popisuje informace, které můžete přijímat v tokenech Microsoft Entra. Vysvětluje, jak přizpůsobit tokeny, aby se zlepšila flexibilita a řízení při zvýšení zabezpečení nulové důvěryhodnosti aplikací s nejnižšími oprávněními.
- Konfigurace deklarací identity skupin a rolí aplikací v tokenech ukazuje, jak nakonfigurovat aplikace s definicemi rolí aplikace a přiřadit skupiny zabezpečení k rolím aplikací. Tyto metody pomáhají zlepšit flexibilitu a kontrolu při zvyšování zabezpečení nulové důvěryhodnosti aplikací s nejnižšími oprávněními.
- Žádost o oprávnění, která vyžadují souhlas správce , popisuje oprávnění a prostředí souhlasu, pokud oprávnění aplikace vyžadují souhlas správce.
- V tomto rychlém startu: Chraňte webové rozhraní API pomocí platformy Microsoft Identity Platform, stáhněte a spusťte ukázku kódu, která ukazuje, jak chránit ASP.NET webové rozhraní API.
- V tomto kurzu – Transformace a ochrana rozhraní API ve službě Azure API Management se dozvíte o konfiguraci běžných zásad pro skrytí informací o zásobníku technologií a původních adres URL v textu odpovědi HTTP rozhraní API.
- Osvědčené postupy autorizace pomáhají implementovat nejlepší modely autorizace, oprávnění a souhlasu pro vaše aplikace.