Dela via


Skala hanteringen av Rolltilldelningar i Azure med hjälp av villkor och anpassade säkerhetsattribut

Rollbaserad åtkomstkontroll i Azure (Azure RBAC) har en gräns för rolltilldelningar per prenumeration. Om du behöver skapa hundratals eller till och med tusentals Azure-rolltilldelningar kan du stöta på den här gränsen. Det kan vara svårt att hantera hundratals eller tusentals rolltilldelningar. Beroende på ditt scenario kan du minska antalet rolltilldelningar och göra det enklare att hantera åtkomst.

Den här artikeln beskriver en lösning för att skala hanteringen av rolltilldelningar med hjälp av villkor för Azure-attributbaserad åtkomstkontroll (Azure ABAC) och anpassade Säkerhetsattribut för Microsoft Entra för huvudkonton.

Exempelscenario

Överväg ett företag med namnet Contoso med tusentals kunder som vill konfigurera följande konfiguration:

  • Distribuera kunddata över 128 lagringskonton av säkerhets- och prestandaskäl.
  • Lägg till 2 000 containrar till varje lagringskonto där det finns en container för varje kund.
  • Representera varje kund med ett unikt Microsoft Entra-tjänstens huvudnamn.
  • Tillåt varje kund att komma åt objekt i sin container, men inte andra containrar.

Den här konfigurationen kan potentiellt kräva 256 000 rolltilldelningar för lagringsblobdataägare i en prenumeration, vilket ligger långt över gränsen för rolltilldelningar. Att ha så här många rolltilldelningar skulle vara svårt, om inte omöjligt, att underhålla.

Diagram showing thousands for role assignments.

Exempellösning

Ett sätt att hantera det här scenariot på ett underhållsbart sätt är att använda rolltilldelningsvillkor. Följande diagram visar en lösning för att minska de 256 000 rolltilldelningarna till bara en rolltilldelning med hjälp av ett villkor. Rolltilldelningen har ett högre resursgruppsomfång och ett villkor hjälper till att kontrollera åtkomsten till containrarna. Villkoret kontrollerar om containernamnet matchar det anpassade säkerhetsattributet för tjänstens huvudnamn för kunden.

Diagram showing one role assignment and a condition.

Här är uttrycket i villkoret som gör att den här lösningen fungerar:

  @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name]
  StringEquals
  @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Contosocustomer_name]

Det fullständiga villkoret skulle likna följande. Listan över åtgärder kan justeras till bara de åtgärder du behöver.

(
 (
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/deleteBlobVersion/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/permanentDelete/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write'})
 )
 OR 
 (
  @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Contosocustomer_name]
 )
)

Varför ska du använda den här lösningen?

Det finns flera mekanismer för åtkomstkontroll som du kan använda för att ge åtkomst till dataplansresurser.

Åtkomstnycklar är ett vanligt sätt att ge åtkomst till dataplansresurser. Åtkomstnycklar ger läs-, skriv- och borttagningsbehörigheter till den som har åtkomstnyckeln. Det innebär att angripare kan få åtkomst till dina känsliga data om de kan hämta dina åtkomstnycklar. Åtkomstnycklar har ingen identitetsbindning, har ingen förfallotid och är en säkerhetsrisk att lagra.

Precis som åtkomstnycklar har SAS-token (signatur för delad åtkomst) inte identitetsbindning, men upphör att gälla regelbundet. Bristen på identitetsbindning representerar samma säkerhetsrisker som åtkomstnycklar. Du måste hantera förfallodatumet för att säkerställa att klienterna inte får fel. SAS-token kräver ytterligare kod för att hantera och arbeta dagligen och kan vara en betydande kostnad för ett DevOps-team.

Azure RBAC ger centraliserad detaljerad åtkomstkontroll. Azure RBAC har identitetsbindning som minskar din säkerhetsrisk. Med hjälp av villkor kan du potentiellt skala hanteringen av rolltilldelningar och göra åtkomstkontrollen enklare att underhålla eftersom åtkomsten baseras på flexibla och dynamiska attribut.

Här är några av fördelarna med den här lösningen:

  • Centraliserad åtkomstkontroll
  • Enklare att underhålla
  • Förlitar sig inte på åtkomstnycklar eller SAS-token
  • Kräver inte att du hanterar åtkomst för varje objekt
  • Kan potentiellt förbättra din säkerhetsstatus

Kan du använda den här lösningen?

Om du har ett liknande scenario följer du de här stegen för att se om du kan använda den här lösningen.

Steg 1: Avgöra om du uppfyller kraven

Om du vill använda den här lösningen måste du ha:

Steg 2: Identifiera de attribut som du kan använda i ditt villkor

Det finns flera attribut som du kan använda i ditt villkor, till exempel följande:

  • Containerns namn
  • Blobsökväg
  • Blobindextaggar [Nycklar]
  • Blobindextaggar [Värden i nyckel]

Du kan också definiera egna anpassade säkerhetsattribut för användare, företagsprogram och hanterade identiteter.

Mer information finns i Villkorsformat och syntax för Azure-rolltilldelning och Vad är anpassade säkerhetsattribut i Microsoft Entra-ID?.

Steg 3: Skapa ett villkor med ett högre omfång

Skapa en eller flera rolltilldelningar som använder ett villkor i ett högre omfång för att hantera åtkomst. Mer information finns i Lägga till eller redigera villkor för Azure-rolltilldelning med hjälp av Azure-portalen.

Nästa steg