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 Protection-cikket, amely bemutatja a regisztrációval, az engedélyek és hozzájárulások meghatározásával és a hozzáférés kikényszerítésével kapcsolatos ajánlott eljárásokat.

Tekintsük át, hogyan használja az Microsoft Identitásplatform által védett API a Microsoft identitás-hozzájárulási keretrendszerét. Példaként a Microsoft Graph API-t fogjuk használni, mivel ez teszi a Microsoft Identitásplatform hozzájárulási keretrendszer 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élyek az alkalmazás számára engedélyezik 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ési és olvasási felhasználói profil 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 (szemben egyetlen ilyen User.Access engedéllyel), hogy az alkalmazások a legkisebb jogosultság Teljes felügyelet elvét kövessé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 fogja kérni User.ReadWrite. Ezért a támadó nem veszélyeztetheti az alkalmazást, és az adatok módosítására használhatja.

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, a vezeték- és utónevet, 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, amely mindennel kezdődik, User.ReadBasic.All ami User.Read igen. Emellett megjelenítheti a megjelenítendő nevet, a vezeték- és utónevet, az e-mail-címet, a fényképet és a megnyitott bővítményeket 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 legkevésbé jogosultsági Teljes felügyelet alapelvet.

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. Egy ilyen engedéllyel rendelkező alkalmazás frissítheti vagy akár törölheti 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, egy bérlői rendszergazdai felhasználóval kell kiértékelnie az alkalmazást.

A Microsoft Graph API-tervezők ezen engedélyeket rendszergazdai User.Read.AllUser.ReadWrite.Allhozzájárulást igénylőként jelölték ki és adták meg. Adjunk hozzá egy Rendszergazda? Oszlop az engedélytáblához, amely jelzi, hogy mikor van szükség rendszergazdai hozzájárulásra:

Engedély Sztring megjelenítése Leírás Rendszergazda?
User.Read Bejelentkezési és olvasási felhasználói profil 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. Nem
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. Nem
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, a vezeték- és utónevet, 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. Nem
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érési engedélyekről szóló 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ő összes alkalmazásengedélyt. Érdemes úgy megtervezni az alkalmazást, hogy elegánsan 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

  • Ha egy API-t egy másik API-ból hív meg, azzal biztosíthatja, hogy Teljes felügyelet, ha egy olyan API-val rendelkezik, amelyet egy másik API-nak kell meghívnia, és biztonságosan fejlesztenie kell az alkalmazást, amikor egy felhasználó nevében dolgozik.
  • Az erőforrások elérésére vonatkozó engedélyek beszerzése segít megérteni, hogyan biztosíthatja a legjobban Teljes felügyelet az alkalmazás erőforrás-hozzáférési engedélyeinek beszerzésekor.
  • A jogkivonatok testreszabása ismerteti a Microsoft Entra-jogkivonatokban kapott információkat, valamint azt, hogy hogyan szabhatja testre a jogkivonatokat a rugalmasság és a szabályozás javítása érdekében, miközben a minimális jogosultsággal rendelkező, az alkalmazás zéró megbízhatósági biztonságát növeli.
  • A csoportjogcímek és alkalmazásszerepkörök jogkivonatokban való konfigurálása bemutatja, hogyan konfigurálhatja alkalmazásait alkalmazásszerepkör-definíciókkal, és hogyan rendelhet hozzá biztonsági csoportokat az alkalmazásszerepkörökhöz a rugalmasság és az ellenőrzés javítása érdekében, miközben a minimális jogosultsággal rendelkező alkalmazásmegbízhatóság nélküli biztonság növelése érdekében.
  • A rendszergazdai hozzájárulást igénylő engedélyek kérése azt az engedély- és hozzájárulási élményt ismerteti, amikor az alkalmazásengedélyek rendszergazdai hozzájárulást igényelnek.
  • Ebben a rövid útmutatóban: Webes API védelme a Microsoft Identitásplatform, egy kódminta letöltése és futtatása, amely bemutatja, hogyan védheti meg a ASP.NET webes API-t.
  • Ebben az oktatóanyagban – Az API átalakítása és védelme az Azure API Managementben, megtudhatja, hogyan konfigurálhat általános szabályzatokat a technológiai veremadatok és az eredeti URL-címek elrejtéséhez az API HTTP válasz törzsében.
  • Az ajánlott engedélyezési eljárások segítségével implementálhatja a legjobb engedélyezési, engedély- és hozzájárulási modelleket az alkalmazásokhoz.