Sdílet prostřednictvím


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.Reada 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.ReadWritejsou 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.

Vzhledem k výkonu User.Read.All rozhraní User.ReadWrite.AllMicrosoft 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