Příklad rozhraní API chráněného rozhraním Microsoft Identity Consent Framework
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.
Zásady vytváření názvů pro názvy 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 s konkrétními prostředky
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:
Oprávnění | Zobrazovaný řetězec | Popis |
---|---|---|
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
to neexistuje), aby aplikace mohly dodržovat nulová důvěra (Zero Trust) princip nejnižší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
. Útočník proto nemůže ohrozit aplikaci 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í:
Oprávnění | Zobrazovaný řetězec | Popis |
---|---|---|
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, jméno a jméno rodiny, e-mailovou adresu, otevřená rozšíření a fotku. Umožňuje aplikaci číst úplný profil přihlášeného uživatele. |
Rozsah operací, který začíná vším, co User.ReadBasic.All
User.Read
dělá. 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:
Oprávnění | Zobrazovaný řetězec | Popis |
---|---|---|
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í profilu, sestav a správců jiný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.Read.All
User.ReadWrite
jsou User.ReadWrite.All
to jedinečná oprávnění, která aplikaci umožňují dodržovat nejnižší úroveň oprávnění nulová důvěra (Zero Trust) principu.
User.Read.All
je zajímavé, protože každý uživatel v organizaci má tuto funkci (například otevřít Outlook, přejít nahoru a dolů řetězec sestav). 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 by aplikaci měli povolit stejnou operaci, protože User.Read.All
zahrnuje organizační hierarchii tenanta. Pokud k informacím přistupoval chybný aktér, mohl by připojit cílený útok phishing, ve kterém e-mail phishing pochází od nadřízený osoby nebo manažera jeho nadřízený.
User.ReadWrite.All
je výkonný rozsah operací. Aplikace, která udělila toto oprávnění, 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. Při rozhodování o udělení nebo zamítnutí tohoto oprávnění byste měli aplikaci vyhodnotit s ohledem na uživatele správce tenanta.
Oprávnění vyžadující souhlas správce
Vzhledem k výkonu User.Read.All
rozhraní User.ReadWrite.All
Microsoft Graph API určili tato oprávnění jako vyžadování souhlasu správce. Přidáme Správa? Sloupec s naší tabulkou oprávnění označující, kdy oprávnění vyžaduje souhlas správce:
Oprávnění | Zobrazovaný řetězec | Popis | Správa? |
---|---|---|---|
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, jméno a jméno rodiny, e-mailovou adresu, otevřená rozšíření a fotku. 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í profilu, sestav a správců jiný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 znázorněno v článku o oprávněních žádosti, která vyžadují souhlas správce, můžou správci tenanta přerušovat požadavky a určit všechna oprávnění aplikace ve svém tenantovi, která vyžadují souhlas správce. Je vhodné navrhnout aplikaci tak, aby řádně zpracovávala, když z vaší žádosti neobdržíte token. 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 nulová důvěra (Zero Trust) při získávání oprávnění přístupu 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í a současně se zvýšilo zabezpečení nulové důvěryhodnosti aplikace 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 řízení a současně zvýšit zabezpečení nulové důvěryhodnosti aplikace 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.