Åtkomstkontrollmodell i Azure Data Lake Storage Gen2

Data Lake Storage Gen2 stöder följande auktoriseringsmekanismer:

  • Auktorisering av delad nyckel
  • Auktorisering för signatur för delad åtkomst (SAS)
  • Rollbaserad åtkomstkontroll (Azure RBAC)
  • Attributbaserad åtkomstkontroll (Azure ABAC)
  • Åtkomstkontrollistor (ACL)

Delad nyckel och SAS-auktorisering ger åtkomst till en användare (eller ett program) utan att kräva att de har en identitet i Microsoft Entra-ID. Med dessa två former av autentisering har Azure RBAC, Azure ABAC och ACL:er ingen effekt.

Både Azure RBAC och ACL kräver att användaren (eller programmet) har en identitet i Microsoft Entra-ID. Med Azure RBAC kan du ge "grov kornig" åtkomst till lagringskontodata, till exempel läs- eller skrivåtkomst till alla data i ett lagringskonto. Med Azure ABAC kan du förfina RBAC-rolltilldelningar genom att lägga till villkor. Du kan till exempel bevilja läs- eller skrivåtkomst till alla dataobjekt i ett lagringskonto som har en specifik tagg. Med ACL:er kan du bevilja "detaljerad" åtkomst, till exempel skrivåtkomst till en specifik katalog eller fil.

Den här artikeln fokuserar på Azure RBAC, ABAC och ACL:er och hur systemet utvärderar dem tillsammans för att fatta auktoriseringsbeslut för lagringskontoresurser.

Rollbaserad åtkomstkontroll (Azure RBAC)

Azure RBAC använder rolltilldelningar för att tillämpa uppsättningar med behörigheter på säkerhetsobjekt. Ett säkerhetsobjekt är ett objekt som representerar en användare, grupp, tjänstens huvudnamn eller hanterade identitet som definieras i Microsoft Entra-ID. En behörighetsuppsättning kan ge ett säkerhetsobjekt en "grov kornig" åtkomstnivå, till exempel läs- eller skrivåtkomst till alla data i ett lagringskonto eller alla data i en container.

Följande roller tillåter ett säkerhetsobjekt att komma åt data i ett lagringskonto.

Roll Description
Storage Blob Data-ägare Fullständig åtkomst till Blob Storage-containrar och data. Med den här åtkomsten kan säkerhetsobjektet ange ett objekt för ägaren och ändra ACL:erna för alla objekt.
Storage Blob Data-deltagare Läsa, skriva och ta bort åtkomst till Blob Storage-containrar och blobar. Den här åtkomsten tillåter inte att säkerhetsobjektet anger ägarskapet för ett objekt, men det kan ändra ACL för objekt som ägs av säkerhetsobjektet.
Storage Blob Data-läsare Läsa och lista bloblagringscontainrar och blobar.

Roller som Ägare, Deltagare, Läsare och Lagringskontodeltagare tillåter ett säkerhetsobjekt att hantera ett lagringskonto, men ger inte åtkomst till data i det kontot. Dessa roller (exklusive Läsare) kan dock få åtkomst till lagringsnycklarna, som kan användas i olika klientverktyg för att komma åt data.

Attributbaserad åtkomstkontroll (Azure ABAC)

Azure ABAC bygger på Azure RBAC genom att lägga till rolltilldelningsvillkor baserat på attribut i samband med specifika åtgärder. Ett rolltilldelningsvillkor är ytterligare en kontroll som du kan lägga till i rolltilldelningen för att ge mer förfinad åtkomstkontroll. Du kan inte uttryckligen neka åtkomst till specifika resurser med hjälp av villkor.

Mer information om hur du använder Azure ABAC för att styra åtkomsten till Azure Storage finns i Auktorisera åtkomst till Azure Blob Storage med hjälp av villkor för Rolltilldelning i Azure.

Åtkomstkontrollistor (ACL)

ACL:er ger dig möjlighet att använda "finare kornnivå" för åtkomst till kataloger och filer. En ACL är en behörighetskonstruktion som innehåller en serie ACL-poster. Varje ACL-post associerar säkerhetsobjektet med en åtkomstnivå. Mer information finns i Åtkomstkontrollistor (ACL: er) i Azure Data Lake Storage Gen2.

Så här utvärderas behörigheter

Under säkerhetshuvudnamnsbaserad auktorisering utvärderas behörigheter enligt följande diagram.

data lake storage permission flow

  1. Azure avgör om det finns en rolltilldelning för huvudkontot.
    • Om det finns en rolltilldelning utvärderas villkor för rolltilldelning (2).
    • Annars utvärderas ACL:erna (4) härnäst.
  2. Azure avgör om det finns några villkor för ABAC-rolltilldelning.
    • Om det inte finns några villkor beviljas åtkomst.
    • Om det finns villkor utvärderas de för att se om de matchar begäran (3).
  3. Azure avgör om alla ABAC-rolltilldelningsvillkor matchar attributen för begäran.
    • Om alla matchar beviljas åtkomst.
    • Om minst en av dem inte matchar utvärderas ACL:erna (4) härnäst.
  4. Om åtkomst inte uttryckligen har beviljats efter utvärdering av rolltilldelningar och villkor utvärderas ACL:erna.
    • Om ACL:erna tillåter den begärda åtkomstnivån beviljas åtkomst.
    • Om inte nekas åtkomst.

Viktigt!

På grund av hur åtkomstbehörigheter utvärderas av systemet kan du inte använda en ACL för att begränsa åtkomst som redan har beviljats av en rolltilldelning och dess villkor. Det beror på att systemet utvärderar Azure-rolltilldelningar och villkor först, och om tilldelningen ger tillräcklig åtkomstbehörighet ignoreras ACL:er.

Följande diagram visar behörighetsflödet för tre vanliga åtgärder: lista kataloginnehåll, läsa en fil och skriva en fil.

data lake storage permission flow example

Behörighetstabell: Kombinera Azure RBAC, ABAC och ACL:er

I följande tabell visas hur du kombinerar Azure-roller, villkor och ACL-poster så att ett säkerhetsobjekt kan utföra de åtgärder som anges i kolumnen Åtgärd . Den här tabellen visar en kolumn som representerar varje nivå i en fiktiv kataloghierarki. Det finns en kolumn för rotkatalogen för containern (/), en underkatalog med namnet Oregon, en underkatalog till Oregon-katalogen med namnet Portland och en textfil i Portland-katalogen med namnet Data.txt. I dessa kolumner visas korta formulärrepresentationer av den ACL-post som krävs för att bevilja behörigheter. N/A (ej tillämpligt) visas i kolumnen om en ACL-post inte krävs för att utföra åtgärden.

Åtgärd Tilldelad Azure-roll (med eller utan villkor) / Oregon/ Portland/ Data.txt
Läs Data.txt Storage Blob-dataägare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob-datadeltagare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob Data-läsare Inte tillgänglig Saknas Saknas Inte tillgänglig
None --X --X --X R--
Lägg till i Data.txt Storage Blob-dataägare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob-datadeltagare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob Data-läsare --X --X --X -W-
None --X --X --X RW-
Ta bort Data.txt Storage Blob-dataägare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob-datadeltagare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob Data-läsare --X --X -WX Inte tillgängligt
None --X --X -WX Inte tillgängligt
Skapa Data.txt Storage Blob-dataägare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob-datadeltagare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob Data-läsare --X --X -WX Inte tillgängligt
None --X --X -WX Inte tillgängligt
Lista/ Storage Blob-dataägare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob-datadeltagare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob Data-läsare Inte tillgänglig Saknas Saknas Inte tillgänglig
None R-X Inte tillgänglig Saknas Inte tillgänglig
Lista /Oregon/ Storage Blob-dataägare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob-datadeltagare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob Data-läsare Inte tillgänglig Saknas Saknas Inte tillgänglig
None --X R-X Inte tillgänglig Inte tillgänglig
Lista /Oregon/Portland/ Storage Blob-dataägare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob-datadeltagare Inte tillgänglig Saknas Saknas Inte tillgänglig
Storage Blob Data-läsare Inte tillgänglig Saknas Saknas Inte tillgänglig
None --X --X R-X Inte tillgängligt

Kommentar

Om du vill visa innehållet i en container i Azure Storage Explorer måste säkerhetsobjekt logga in på Storage Explorer med hjälp av Microsoft Entra-ID och (minst) ha läsbehörighet (R--) till rotmappen (\) för en container. Den här behörighetsnivån ger dem möjlighet att lista innehållet i rotmappen. Om du inte vill att innehållet i rotmappen ska visas kan du tilldela dem rollen Läsare . Med den rollen kan de lista containrarna i kontot, men inte containerinnehållet. Du kan sedan bevilja åtkomst till specifika kataloger och filer med hjälp av ACL:er.

Säkerhetsgrupper

Använd alltid Microsoft Entra-säkerhetsgrupper som det tilldelade huvudkontot i en ACL-post. Motstå möjligheten att direkt tilldela enskilda användare eller tjänstens huvudnamn. Med den här strukturen kan du lägga till och ta bort användare eller tjänstens huvudnamn utan att behöva tillämpa ACL:er på en hel katalogstruktur igen. I stället kan du bara lägga till eller ta bort användare och tjänstens huvudnamn från lämplig Microsoft Entra-säkerhetsgrupp.

Det finns många olika sätt att konfigurera grupper. Anta till exempel att du har en katalog med namnet /LogData som innehåller loggdata som genereras av servern. Azure Data Factory (ADF) matar in data i den mappen. Specifika användare från tjänstutvecklingsteamet laddar upp loggar och hanterar andra användare av den här mappen, och olika Databricks-kluster analyserar loggar från den mappen.

Om du vill aktivera dessa aktiviteter kan du skapa en LogsWriter grupp och en LogsReader grupp. Sedan kan du tilldela behörigheter på följande sätt:

  • LogsWriter Lägg till gruppen i ACL:en för katalogen /LogData med rwx behörigheter.
  • LogsReader Lägg till gruppen i ACL:en för katalogen /LogData med r-x behörigheter.
  • Lägg till tjänstens huvudnamnsobjekt eller hanterad tjänstidentitet (MSI) för ADF i LogsWriters gruppen.
  • Lägg till användare i serviceteknikteamet i LogsWriter gruppen.
  • Lägg till objektet för tjänstens huvudnamn eller MSI för Databricks i LogsReader gruppen.

Om en användare i serviceteknikteamet lämnar företaget kan du bara ta bort dem från LogsWriter gruppen. Om du inte lade till den användaren i en grupp, utan i stället lade till en dedikerad ACL-post för den användaren, måste du ta bort den ACL-posten från katalogen /LogData . Du måste också ta bort posten från alla underkataloger och filer i hela kataloghierarkin i katalogen /LogData .

Information om hur du skapar en grupp och lägger till medlemmar finns i Skapa en grundläggande grupp och lägg till medlemmar med hjälp av Microsoft Entra-ID.

Viktigt!

Azure Data Lake Storage Gen2 är beroende av Microsoft Entra-ID för att hantera säkerhetsgrupper. Microsoft Entra ID rekommenderar att du begränsar gruppmedlemskap för ett visst säkerhetsobjekt till mindre än 200. Den här rekommendationen beror på en begränsning av JSON-webbtoken (JWT) som tillhandahåller information om säkerhetsobjektets gruppmedlemskap i Microsoft Entra-program. Om du överskrider den här gränsen kan det leda till oväntade prestandaproblem med Data Lake Storage Gen2. Mer information finns i Konfigurera gruppanspråk för program med hjälp av Microsoft Entra-ID.

Begränsningar för Azure-rolltilldelningar och ACL-poster

Med hjälp av grupper är det mindre troligt att du överskrider det maximala antalet rolltilldelningar per prenumeration och det maximala antalet ACL-poster per fil eller katalog. I följande tabell beskrivs dessa gränser.

Mekanism Omfång Gränser Behörighetsnivå som stöds
Azure RBAC Lagringskonton, containrar.
Azure-rolltilldelningar mellan resurser på prenumerations- eller resursgruppsnivå.
4000 Azure-rolltilldelningar i en prenumeration Azure-roller (inbyggda eller anpassade)
ACL Katalog, fil 32 ACL-poster (i praktiken 28 ACL-poster) per fil och per katalog. Åtkomst- och standard-ACL:er har varsin gräns på 32 ACL. ACL-behörighet

Sas-auktorisering (Signatur för delad nyckel och signatur för delad åtkomst)

Azure Data Lake Storage Gen2 stöder även metoder för delad nyckel och SAS för autentisering. En egenskap hos dessa autentiseringsmetoder är att ingen identitet är associerad med anroparen och att behörighetsbaserad auktorisering med säkerhetsobjekt därför inte kan utföras.

När det gäller delad nyckel får anroparen effektivt "superanvändare"-åtkomst, vilket innebär fullständig åtkomst till alla åtgärder på alla resurser, inklusive data, inställning av ägare och ändrade ACL:er.

SAS-token innehåller tillåtna behörigheter som en del av token. Behörigheterna som ingår i SAS-token tillämpas effektivt på alla auktoriseringsbeslut, men inga ytterligare ACL-kontroller utförs.

Nästa steg

Mer information om åtkomstkontrollistor finns i Åtkomstkontrollistor (ACL: er) i Azure Data Lake Storage Gen2.