Példa a Microsoft identitás-jóváhagyási keretrendszer által védett API-ra

Ez a cikk segítséget nyújthat fejlesztőként az alkalmazásengedély-stratégia kialakításában a minimális jogosultság biztosítása érdekében. A folytatás előtt tekintse meg az API védelmi cikkét, amely bemutatja a regisztrációval, engedélyekkel és hozzáféréssel kapcsolatos ajánlott eljárásokat.

Tekintsük át, hogy a Microsoft identitásplatformja által védett API hogyan használja a Microsoft identitás-jóváhagyási keretrendszerét. Példaként a Microsoft Graph API-t használjuk, mert ez teszi a Microsoft identitásplatform hozzájárulási keretrendszerének legkiterjedtebb használatát.

Elnevezési konvenció engedélynevekhez

A Microsoft Graph csapata létrehozott egy elnevezési konvenciót az engedélynevekhez, hogy megkönnyítse az engedély és az engedély által engedélyezett erőforrás-hozzáférés összekapcsolását. A Microsoft Graph-engedélynevek egy egyszerű resource.operation.constraint mintát követnek. A két elsődleges művelet a Read és a ReadWrite (beleértve a frissítést és a törlést).

A kényszerelem befolyásolja az alkalmazás címtáron belüli hozzáférésének mértékét. A Microsoft Graph az alábbi korlátozásokat támogatja:

  • Mindegyik engedélyt ad az alkalmazásnak, hogy végrehajtsa a műveleteket a címtárban megadott típusú összes erőforráson.
  • A megosztott engedélyekkel az alkalmazás végrehajthatja a más felhasználók által a bejelentkezett felhasználóval megosztott erőforrásokon végzett műveleteket.
  • Az AppFolder engedélyt ad az alkalmazásnak fájlok olvasására és írására a OneDrive egy dedikált mappájában. Ez a korlátozás csak a Fájlok engedélyobjektumon érhető el, és csak a Microsoft-fiókokra érvényes.
  • Ha nem határoz meg korlátozást, az alkalmazás csak a bejelentkezett felhasználó tulajdonában lévő erőforrásokon hajthatja végre a műveleteket.

Hozzáférés és műveletek adott erőforrásokhoz

Tekintsünk meg néhány engedélyt vagy hatókört a Microsoft Graph felhasználói objektumához, amelyből megtudhatja, hogy a Microsoft API-tervezők hogyan engedélyezték az adott erőforrásokhoz való hozzáférést és műveleteket:

Engedély Sztring megjelenítése Leírás
User.Read Bejelentkezés és felhasználói profil olvasása Lehetővé teszi, hogy a felhasználók bejelentkezhessenek az alkalmazásba, és lehetővé teszik az alkalmazás számára a bejelentkezett felhasználók profiljának olvasását. Lehetővé teszi továbbá, hogy az alkalmazás beolvassa a bejelentkezett felhasználók alapvető vállalati adatait.
User.ReadWrite Felhasználói profilhoz való olvasási és írási hozzáférés Lehetővé teszi, hogy az alkalmazás elolvassa a bejelentkezett felhasználó teljes profilját. Lehetővé teszi továbbá, hogy az alkalmazás a nevében frissítse a bejelentkezett felhasználó profiladatait.

User.Read és User.ReadWrite léteznek (ellentétben egyetlen, nem létező User.Access engedéllyel), hogy az alkalmazások a legkisebb jogosultság elvét, azaz a nulla bizalmú modellt követhessék. Ha a fejlesztő nem rendelkezik a felhasználó profiljának frissítésére vonatkozó követelménysel és kóddal, az alkalmazás nem kér User.ReadWrite. Ezért egy rosszindulatú felhasználó nem tudja veszélyeztetni az alkalmazást, és nem használhatja az adatok módosítására.

Figyelje meg, hogy User.Read nem csak hozzáférést biztosít az alkalmazásnak a felhasználói objektumhoz. Minden engedély egy adott művelettartományt jelöl. Fontos, hogy a fejlesztők és a rendszergazdák elolvassák az engedély leírását, hogy pontosan lássák, milyen engedélyeket engedélyeznek. User.ReadAmellett, hogy lehetővé teszi az aktuális felhasználó teljes profiljának olvasását, lehetővé teszi, hogy az alkalmazás a Microsoft Graph Szervezetek objektumából származó alapvető információkat lássa.

Tekintsünk meg egy másik engedélyt:

Engedély Sztring megjelenítése Leírás
User.ReadBasic.All Az összes felhasználó alapprofiljának olvasása Lehetővé teszi az alkalmazás számára, hogy a bejelentkezett felhasználó nevében beolvassa a szervezet többi felhasználójának alapvető profiltulajdonságait. Tartalmazza a megjelenítendő nevet, az utónevet és a családnevet, az e-mail-címet, a megnyitott bővítményeket és a fényképet. Lehetővé teszi, hogy az alkalmazás beolvassa a bejelentkezett felhasználó teljes profilját.

A művelettartomány azzal kezdődik, hogy User.ReadBasic.All mindent megtesz, amit User.Read. Emellett hozzáférhet a megjelenítendő névhez, az utó- és családnévhez, az e-mail-címhez, a fényképhez és a nyitott bővítményekhez más szervezeti felhasználók számára. Az adott működési tartomány lehetővé teszi az alkalmazások számára, hogy szép felhasználói felhasználói felülettel rendelkezzenek, és példa az API-tervezőkre, akik engedéllyel engedélyeznek egy adott művelettartományt.

Tekintsünk meg még néhány engedélyt a Microsoft Graph felhasználói objektumához:

Engedély Sztring megjelenítése Leírás
User.Read.All Az összes felhasználó teljes profiljának olvasása Lehetővé teszi, hogy az alkalmazás a bejelentkezett felhasználó nevében elolvassa a szervezet többi felhasználójának profiltulajdonságait, jelentéseit és kezelőinek teljes készletét.
User.ReadWrite.All Az összes felhasználó teljes profiljának olvasása és írása Lehetővé teszi az alkalmazás számára, hogy a bejelentkezett felhasználó nevében elolvassa és megírja a szervezet többi felhasználójának profiltulajdonságait, jelentéseit és kezelőinek teljes készletét. Emellett lehetővé teszi az alkalmazás számára, hogy felhasználókat hozzon létre és töröljön, és visszaállítsa a felhasználói jelszavakat a bejelentkezett felhasználó nevében.

Mint az User.Read és User.ReadWrite, User.Read.All és User.ReadWrite.All különböző engedélyek, amelyek lehetővé teszik az alkalmazás számára, hogy kövesse a minimum jogosultság és a zéró bizalom elvét.

User.Read.All érdekes, mert a szervezet minden felhasználója rendelkezik ezzel a képességgel (például megnyithatja az Outlookot, felfelé és lefelé haladhat egy jelentési láncban). Ön, mint egyéni, láthatja a szervezet összes többi felhasználójának teljes felhasználói profilját. A Microsoft Graph API tervezői azonban úgy döntöttek, hogy csak a rendszergazdák engedélyezhetik egy alkalmazásnak ugyanazt a műveletet, mert User.Read.All a bérlő szervezeti hierarchiáját is magában foglalja. Ha egy rossz szereplő hozzáfért ezekhez az információkhoz, célzott adathalász támadást indíthat, ahol az adathalász e-mail egy személy felettesétől vagy a felettesétől származik.

User.ReadWrite.All egy hatékony működési tartomány. Az ilyen engedélyekkel rendelkező alkalmazások frissíthetik vagy akár törölhetik is a bérlő összes felhasználóját. Delegált engedélyként, amikor egy felhasználó az alkalmazás előtt van, az alkalmazás csak azt teheti, amit az aktuális felhasználó tehet. A normál felhasználók az alkalmazás engedélyétől függetlenül nem frissíthetnek vagy törölhetnek más felhasználókat. Ha azonban egy bérlői rendszergazda használja az alkalmazást, akkor végrehajthatja ezeket a műveleteket. Amikor úgy dönt, hogy megadja vagy megtagadja ezt az engedélyt, értékelje ki az alkalmazást egy bérlői rendszergazdai felhasználó szem előtt tartásával.

A Microsoft Graph API-tervezők ezeket az engedélyeket úgy jelölték, mint amelyek rendszergazdai hozzájárulást igényelnek User.Read.All és User.ReadWrite.All. Adjunk hozzá egy Rendszergazda? oszlopot az engedélytáblánkhoz, amely jelzi, hogy mikor van szükség rendszergazdai hozzájárulásra:

Engedély Sztring megjelenítése Leírás Adminisztrátor?
User.Read Bejelentkezés és felhasználói profil olvasása Lehetővé teszi, hogy a felhasználók bejelentkezhessenek az alkalmazásba, és lehetővé teszik az alkalmazás számára a bejelentkezett felhasználók profiljának olvasását. Lehetővé teszi továbbá, hogy az alkalmazás beolvassa a bejelentkezett felhasználók alapvető vállalati adatait. No
User.ReadWrite Felhasználói profilhoz való olvasási és írási hozzáférés Lehetővé teszi, hogy az alkalmazás elolvassa a bejelentkezett felhasználó teljes profilját. Lehetővé teszi továbbá, hogy az alkalmazás a nevében frissítse a bejelentkezett felhasználó profiladatait. No
User.ReadBasic.All Az összes felhasználó alapprofiljának olvasása Lehetővé teszi az alkalmazás számára, hogy a bejelentkezett felhasználó nevében beolvassa a szervezet többi felhasználójának alapvető profiltulajdonságait. Tartalmazza a megjelenítendő nevet, az utónevet és a családnevet, az e-mail-címet, a megnyitott bővítményeket és a fényképet. Lehetővé teszi, hogy az alkalmazás beolvassa a bejelentkezett felhasználó teljes profilját. No
User.Read.All Az összes felhasználó teljes profiljának olvasása Lehetővé teszi, hogy az alkalmazás a bejelentkezett felhasználó nevében elolvassa a szervezet többi felhasználójának profiltulajdonságait, jelentéseit és kezelőinek teljes készletét. Igen
User.ReadWrite.All Az összes felhasználó teljes profiljának olvasása és írása Lehetővé teszi az alkalmazás számára, hogy a bejelentkezett felhasználó nevében elolvassa és megírja a szervezet többi felhasználójának profiltulajdonságait, jelentéseit és kezelőinek teljes készletét. Emellett lehetővé teszi az alkalmazás számára, hogy felhasználókat hozzon létre és töröljön, és visszaállítsa a felhasználói jelszavakat a bejelentkezett felhasználó nevében. Igen

Amint azt a rendszergazdai hozzájárulást igénylő kérelemengedélyek című cikkben is látható, a bérlői rendszergazdák felülírhatják a követelményeket, és rendszergazdai hozzájárulást igénylőként jelölhetik ki a bérlőjükben lévő bármely vagy az összes alkalmazásengedélyt. Úgy tervezheti meg az alkalmazást, hogy zökkenőmentesen kezelje, ha nem kap jogkivonatot a kéréséből. A hozzájárulás hiánya az egyik oka annak, hogy az alkalmazás nem kap jogkivonatot.

Következő lépések