Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln kan hjälpa dig som utvecklare att utforma din strategi för programbehörigheter för att ge minst behörighet. Innan du fortsätter kan du läsa artikeln om API-skydd för att lära dig metodtips för registrering, behörigheter och åtkomst.
Låt oss ta en titt på hur ett API som skyddas av Microsofts identitetsplattform använder Microsofts ramverk för identitetsmedgivande. Vi använder Microsoft Graph API som vårt exempel eftersom det gör den mest omfattande användningen av Microsofts ramverk för medgivande för identitetsplattform.
Namngivningskonvention för behörighetsnamn
Microsoft Graph-teamet skapade en namngivningskonvention för behörighetsnamn för att göra det enklare att ansluta behörigheten till den resursåtkomst som behörigheten aktiverar. Microsoft Graph-behörighetsnamn följer ett enkelt resource.operation.constraint-mönster . De två primära åtgärderna är Read och ReadWrite (som inkluderar uppdatering och borttagning).
Villkorselementet påverkar den åtkomstgrad som appen har i katalogen. Microsoft Graph har stöd för följande begränsningar:
- Alla beviljar behörighet för din app att utföra åtgärderna på alla resurser av den angivna typen i en katalog.
- Delade beviljar behörighet för din app att utföra åtgärderna på resurser som andra användare har delat med den inloggade användaren.
- AppFolder ger din app behörighet att läsa och skriva filer i en dedikerad mapp i OneDrive. Den här begränsningen exponeras endast för objektet Filer-behörigheter och är endast giltig för Microsoft-konton.
- Om du anger Ingen begränsning kan appen bara utföra åtgärderna på de resurser som den inloggade användaren äger.
Åtkomst och åtgärder mot specifika resurser
Nu ska vi titta på några behörigheter eller omfång för användarobjektet i Microsoft Graph för att se hur Microsoft API-designers har aktiverat specifik åtkomst och åtgärder mot specifika resurser:
| Tillåtelse | Visningssträng | Beskrivning |
|---|---|---|
User.Read |
Logga in och läsa användarprofil | Tillåter användare att logga in på appen och gör att appen kan läsa profilen för inloggade användare. Det gör också att appen kan läsa grundläggande företagsinformation för inloggade användare. |
User.ReadWrite |
Läs- och skrivåtkomst till användarprofil | Tillåter att appen läser den inloggade användarens fullständiga profil. Det gör också att appen kan uppdatera den inloggade användarens profilinformation för deras räkning. |
User.Read och User.ReadWrite finns (i motsats till en enda behörighet som User.Access den finns inte) så att program kan följa principen Noll förtroende för minsta behörighet. Om utvecklaren inte har något krav och kod för att uppdatera användarens profil ber appen inte om User.ReadWrite. Därför kan en dålig aktör inte kompromettera programmet och använda det för att ändra data.
Observera att User.Read inte bara ger programmet åtkomst till användarobjektet. Varje behörighet representerar ett visst åtgärdsområde. Det är viktigt att utvecklare och administratörer läser behörighetsbeskrivningen för att se exakt vad en specifik behörighet möjliggör.
User.Read, förutom att aktivera läsning av den aktuella användarens fullständiga profil, gör det möjligt för programmet att se grundläggande information från organisationsobjektet i Microsoft Graph.
Nu ska vi titta på en annan behörighet:
| Tillåtelse | Visningssträng | Beskrivning |
|---|---|---|
User.ReadBasic.All |
Läs alla användares grundläggande profiler | Gör att appen kan läsa en grundläggande uppsättning profilegenskaper för andra användare i organisationen för den inloggade användarens räkning. Innehåller visningsnamn, för- och efternamn, e-postadress, öppna tillägg och foto. Tillåter att appen läser den inloggade användarens fullständiga profil. |
Driftområdet för User.ReadBasic.All börjar med allt som User.Read gör. Dessutom kan du komma åt visningsnamn, för- och efternamn, e-postadress, foto och öppna tillägg för andra organisationsanvändare. Det specifika åtgärdsintervallet gör det möjligt för program att ha ett trevligt användargränssnitt för personväljaren och är ett exempel på API-designers som använder en behörighet för att aktivera ett visst åtgärdsintervall.
Nu ska vi titta på några fler behörigheter för Microsoft Graph-användarobjektet:
| Tillåtelse | Visningssträng | Beskrivning |
|---|---|---|
User.Read.All |
Läs alla användares fullständiga profiler | Gör att appen kan läsa hela uppsättningen av profilegenskaper, rapporter och chefer för andra användare i din organisation på uppdrag av den inloggade användaren. |
User.ReadWrite.All |
Läsa och skriva alla användares fullständiga profiler | Gör att appen kan läsa och skriva alla profilattribut, rapporter och chefer för andra användare i din organisation på den inloggade användarens räkning. Gör också att appen kan skapa och ta bort användare och återställa användarlösenord för den inloggade användarens räkning. |
Precis som med User.Read och User.ReadWrite, är User.Read.All och User.ReadWrite.All distinkta behörigheter som gör det möjligt för en applikation att följa principen om nollförtroende med lägsta möjliga behörighet.
User.Read.All är intressant eftersom alla användare i organisationen har den här funktionen (till exempel öppna Outlook, gå upp och ned i en rapporteringskedja). Som individ kan du se den fullständiga användarprofilen för alla andra användare i din organisation. Microsoft Graph API-designers beslutade dock att endast administratörer ska tillåta att ett program utför samma åtgärd eftersom User.Read.All den innehåller klientorganisationens organisationshierarki. Om en ondsint aktör har åtkomst till den här informationen kan de genomföra en riktad nätfiskeattack där nätfiskemeddelandet såg ut att komma från en persons chef eller chefens chef.
User.ReadWrite.All är ett kraftfullt verksamhetsområde. Ett program med den här behörigheten kan uppdatera, eller till och med ta bort, alla användare i klientorganisationen. När en användare är framför appen som delegerad behörighet kan appen bara göra vad den aktuella användaren kan göra. Vanliga användare kan inte uppdatera eller ta bort andra användare oavsett appens behörigheter. Men när en klientorganisationsadministratör använder appen kan de utföra dessa åtgärder. När du bestämmer dig för att bevilja eller neka den här behörigheten utvärderar du din app med en klientadministratörsanvändare i åtanke.
Behörigheter som kräver administratörsmedgivande
Med tanke på kraften i User.Read.All och User.ReadWrite.Allangav Microsoft Graph API-designers dessa behörigheter som kräver administratörsmedgivande. Nu ska vi lägga till en administratörskolumn i vår behörighetstabell för att ange när behörigheten kräver administratörsmedgivande:
| Tillåtelse | Visningssträng | Beskrivning | Admin? |
|---|---|---|---|
User.Read |
Logga in och läsa användarprofil | Tillåter användare att logga in på appen och gör att appen kan läsa profilen för inloggade användare. Det gör också att appen kan läsa grundläggande företagsinformation för inloggade användare. | No |
User.ReadWrite |
Läs- och skrivåtkomst till användarprofil | Tillåter att appen läser den inloggade användarens fullständiga profil. Det gör också att appen kan uppdatera den inloggade användarens profilinformation för deras räkning. | No |
User.ReadBasic.All |
Läs alla användares grundläggande profiler | Gör att appen kan läsa en grundläggande uppsättning profilegenskaper för andra användare i organisationen för den inloggade användarens räkning. Innehåller visningsnamn, för- och efternamn, e-postadress, öppna tillägg och foto. Tillåter att appen läser den inloggade användarens fullständiga profil. | No |
User.Read.All |
Läs alla användares fullständiga profiler | Gör att appen kan läsa hela uppsättningen av profilegenskaper, rapporter och chefer för andra användare i din organisation på uppdrag av den inloggade användaren. | Ja |
User.ReadWrite.All |
Läsa och skriva alla användares fullständiga profiler | Gör att appen kan läsa och skriva alla profilattribut, rapporter och chefer för andra användare i din organisation på den inloggade användarens räkning. Gör också att appen kan skapa och ta bort användare och återställa användarlösenord för den inloggade användarens räkning. | Ja |
Som visas i artikeln Begärandebehörigheter som kräver administrativt medgivande kan klientadministratörer åsidosätta kraven och ange alla eller alla programbehörigheter i klientorganisationen som kräver administratörsmedgivande. Utforma appen så att den hanteras korrekt när du inte tar emot en token från din begäran. Brist på medgivande är en av många orsaker till att din app kanske inte får en token.
Nästa steg
- Genom att anropa ett API från ett annat API kan du se till att Nolltillit när du har ett API som behöver anropa ett annat API och på ett säkert sätt utveckla ditt program när det fungerar för en användares räkning.
- Att erhålla auktorisering för åtkomst till resurser hjälper dig att förstå hur du bäst kan säkerställa Nolltillit när du hämtar åtkomstbehörigheter för resurser till din applikation.
- Anpassa token beskriver den information som du kan ta emot i Microsoft Entra-token. Det förklarar hur du kan anpassa tokens för att förbättra flexibiliteten och kontrollen samtidigt som du ökar applikationens Zero Trust-säkerhet genom minsta möjliga behörigheter.
- Konfigurera gruppkrav och approller i token visar hur du konfigurerar dina appar med approlldefinitioner och tilldelar säkerhetsgrupper till approller. De här metoderna bidrar till att förbättra flexibiliteten och kontrollen samtidigt som säkerheten för Zero Trust ökas genom att använda minsta möjliga behörighet.
- Begär behörigheter som kräver administrativt medgivande beskriver behörighets- och medgivandeupplevelsen när programbehörigheter kräver administrativt medgivande.
- I den här snabbstarten: Skydda ett webb-API med Microsofts identitetsplattform laddar du ned och kör ett kodexempel som visar hur du skyddar ett ASP.NET webb-API.
- I den här självstudien – Transformera och skydda ditt API i Azure API Management lär du dig hur du konfigurerar vanliga principer för att dölja information om teknikstackar och ursprungliga URL:er i API HTTP-svarstexten.
- Metodtips för auktorisering hjälper dig att implementera de bästa auktoriserings-, behörighets- och medgivandemodellerna för dina program.