Rollbaserad åtkomstkontroll för programutvecklare

Med rollbaserad åtkomstkontroll (RBAC) kan vissa användare eller grupper ha specifika behörigheter för att komma åt och hantera resurser. Program-RBAC skiljer sig från rollbaserad åtkomstkontroll i Azure och rollbaserad åtkomstkontroll i Microsoft Entra. Anpassade Azure-roller och inbyggda roller är båda en del av Azure RBAC, som används för att hantera Azure-resurser. Microsoft Entra RBAC används för att hantera Microsoft Entra-resurser. I den här artikeln beskrivs programspecifik RBAC. Information om hur du implementerar programspecifik RBAC finns i Så här lägger du till approller i ditt program och tar emot dem i token.

Rolldefinitioner

RBAC är en populär mekanism för att framtvinga auktorisering i program. När en organisation använder RBAC definierar en programutvecklare roller i stället för att auktorisera enskilda användare eller grupper. En administratör kan sedan tilldela roller till olika användare och grupper för att styra vem som har åtkomst till innehåll och funktioner.

RBAC hjälper en programutvecklare att hantera resurser och deras användning. RBAC gör det också möjligt för en programutvecklare att styra de områden i ett program som användarna kan komma åt. Administratörer kan styra vilka användare som har åtkomst till ett program med hjälp av egenskapen Användartilldelning som krävs . Utvecklare måste ta hänsyn till specifika användare i programmet och vad användarna kan göra i programmet.

En programutvecklare skapar först en rolldefinition i registreringsavsnittet i programmet i administrationscentret för Microsoft Entra. Rolldefinitionen innehåller ett värde som returneras för användare som har tilldelats rollen. En utvecklare kan sedan använda det här värdet för att implementera programlogik för att avgöra vad dessa användare kan eller inte kan göra i ett program.

RBAC-alternativ

Följande vägledning bör tillämpas när du överväger att inkludera rollbaserad åtkomstkontrollauktorisering i ett program:

  • Definiera de roller som krävs för programmets auktoriseringsbehov.
  • Tillämpa, lagra och hämta relevanta roller för autentiserade användare.
  • Fastställa programbeteendet baserat på de roller som tilldelats den aktuella användaren.

När rollerna har definierats stöder Microsofts identitetsplattform flera olika lösningar som kan användas för att tillämpa, lagra och hämta rollinformation för autentiserade användare. Dessa lösningar omfattar approller, Microsoft Entra-grupper och användning av anpassade datalager för information om användarroller.

Utvecklare har flexibiliteten att tillhandahålla en egen implementering för hur rolltilldelningar ska tolkas som programbehörigheter. Den här tolkningen av behörigheter kan innebära att använda mellanprogram eller andra alternativ som tillhandahålls av plattformen för program eller relaterade bibliotek. Program tar vanligtvis emot information om användarrollen som anspråk och bestämmer sedan användarbehörigheter baserat på dessa anspråk.

Approller

Med Microsoft Entra-ID kan du definiera approller för ditt program och tilldela dessa roller till användare och andra program. De roller som du tilldelar en användare eller ett program definierar deras åtkomstnivå till resurserna och åtgärderna i ditt program.

När Microsoft Entra-ID utfärdar en åtkomsttoken för en autentiserad användare eller ett program innehåller det namnen på de roller som du har tilldelat entiteten (användaren eller programmet) i åtkomsttokens roles anspråk. Ett program som ett webb-API som tar emot åtkomsttoken i en begäran kan sedan fatta auktoriseringsbeslut baserat på värdena i anspråket roles .

Grupper

Utvecklare kan också använda Microsoft Entra-grupper för att implementera RBAC i sina program, där användarens medlemskap i specifika grupper tolkas som deras rollmedlemskap. När en organisation använder grupper innehåller token ett gruppanspråk. Gruppanspråket anger identifierarna för alla tilldelade grupper av användaren i klientorganisationen.

Viktigt!

När du arbetar med grupper måste utvecklare vara medvetna om begreppet överförbrukningsanspråk. Om en användare som standard är medlem i mer än överförbrukningsgränsen (150 för SAML-token, 200 för JWT-token, 6 om det implicita flödet används) genererar Inte Microsoft Entra-ID ett gruppanspråk i token. I stället innehåller den ett "överförbrukningsanspråk" i token som anger att användaren av token måste fråga Microsoft Graph-API:et för att hämta användarens gruppmedlemskap. Mer information om hur du arbetar med överförbrukningsanspråk finns i Anspråk i åtkomsttoken. Det är möjligt att endast generera grupper som har tilldelats till ett program, även om gruppbaserad tilldelning kräver Microsoft Entra ID P1 eller P2 edition.

Anpassat datalager

Approller och grupper lagrar både information om användartilldelningar i Microsoft Entra-katalogen. Ett annat alternativ för att hantera information om användarroller som är tillgänglig för utvecklare är att underhålla informationen utanför katalogen i ett anpassat datalager. Till exempel i en SQL-databas, Azure Table Storage eller Azure Cosmos DB för Table.

Med anpassad lagring får utvecklare extra anpassning och kontroll över hur man tilldelar roller till användare och hur de ska representeras. Den extra flexibiliteten medför dock också ett större ansvar. Det finns till exempel för närvarande ingen mekanism för att inkludera den här informationen i token som returneras från Microsoft Entra-ID. Program måste hämta rollerna om rollinformationen underhålls i ett anpassat datalager. Hämtning av rollerna görs vanligtvis med hjälp av utökningspunkter som definierats i mellanprogrammet som är tillgängligt för plattformen som används för att utveckla programmet. Utvecklare ansvarar för att skydda det anpassade datalagret korrekt.

Med hjälp av anpassade Azure AD B2C-principer kan du interagera med anpassade datalager och inkludera anpassade anspråk i en token.

Välj en metod

I allmänhet är approller den rekommenderade lösningen. Approller ger den enklaste programmeringsmodellen och är avsedda för RBAC-implementeringar. Specifika programkrav kan dock tyda på att en annan metod skulle vara en bättre lösning.

Utvecklare kan använda approller för att styra om en användare kan logga in på ett program eller ett program kan hämta en åtkomsttoken för ett webb-API. Approller föredras framför Microsoft Entra-grupper av utvecklare när de vill beskriva och kontrollera auktoriseringsparametrarna i sina program. Ett program som till exempel använder grupper för auktoriseringsbrytningar i nästa klientorganisation, eftersom både gruppidentifieraren och namnet kan vara olika. Ett program som använder approller förblir säkert.

Även om antingen approller eller grupper kan användas för auktorisering kan viktiga skillnader mellan dem påverka vilken som är den bästa lösningen för ett visst scenario.

Approller Microsoft Entra-grupper Anpassat datalager
Programmeringsmodell Enklast. De är specifika för ett program och definieras i programregistreringen. De flyttas med programmet. Mer komplext. Gruppidentifierare varierar mellan klienter och överförbrukningsanspråk kan behöva beaktas. Grupper är inte specifika för ett program, utan för en Microsoft Entra-klientorganisation. Mest komplext. Utvecklare måste implementera det sätt på vilket rollinformation både lagras och hämtas.
Rollvärden är statiska mellan Microsoft Entra-klienter Ja Nej Beror på implementeringen.
Rollvärden kan användas i flera program Nej (såvida inte rollkonfigurationen dupliceras i varje programregistrering.) Ja Ja
Information som lagras i katalogen Ja Ja Nej
Information levereras via token Ja (rollanspråk) Ja (om ett överförbrukning, kan gruppanspråk behöva hämtas vid körning) Nej (hämtas vid körning via anpassad kod.)
Livstid Finns i programregistrering i katalogen. Tas bort när programregistreringen tas bort. Bor i katalogen. Förblir intakt även om programregistreringen tas bort. Finns i anpassat datalager. Inte kopplat till programregistrering.

Nästa steg