Share via


Het beheer van Azure-roltoewijzingen schalen met behulp van voorwaarden en aangepaste beveiligingskenmerken

Op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) heeft een limiet van roltoewijzingen per abonnement. Als u honderden of zelfs duizenden Azure-roltoewijzingen moet maken, kunt u deze limiet tegenkomen. Het beheren van honderden of duizenden roltoewijzingen kan lastig zijn. Afhankelijk van uw scenario kunt u mogelijk het aantal roltoewijzingen verminderen en eenvoudiger toegang beheren.

In dit artikel wordt een oplossing beschreven voor het schalen van het beheer van roltoewijzingen met behulp van azure ABAC-voorwaarden (op kenmerken gebaseerd toegangsbeheer) en aangepaste beveiligingskenmerken van Microsoft Entra voor principals.

Voorbeeldscenario

Overweeg een bedrijf met de naam Contoso met duizenden klanten die de volgende configuratie willen instellen:

  • Distribueer klantgegevens over 128 opslagaccounts om beveiligings- en prestatieredenen.
  • Voeg 2000 containers toe aan elk opslagaccount met een container voor elke klant.
  • Vertegenwoordig elke klant door een unieke Microsoft Entra-service-principal.
  • Sta elke klant toegang toe tot objecten in hun container, maar niet tot andere containers.

Voor deze configuratie zijn mogelijk 256.000 roltoewijzingen voor opslagblobgegevenseigenaar in een abonnement vereist. Dit is ruim buiten de limiet voor roltoewijzingen. Het is moeilijk om deze veel roltoewijzingen te onderhouden, als dat niet onmogelijk is.

Diagram showing thousands for role assignments.

Voorbeeldoplossing

Een manier om dit scenario op een onderhoudbare manier te verwerken, is door voorwaarden voor roltoewijzing te gebruiken. In het volgende diagram ziet u een oplossing om de 256.000 roltoewijzingen te verminderen tot slechts één roltoewijzing met behulp van een voorwaarde. De roltoewijzing bevindt zich in een hoger bereik van een resourcegroep en een voorwaarde helpt de toegang tot de containers te beheren. De voorwaarde controleert of de containernaam overeenkomt met het aangepaste beveiligingskenmerk van de service-principal voor de klant.

Diagram showing one role assignment and a condition.

Hier volgt de expressie in de voorwaarde waarmee deze oplossing werkt:

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

De volledige voorwaarde zou er ongeveer als volgt uitzien. De lijst met acties kan worden aangepast aan alleen de acties die u nodig hebt.

(
 (
  !(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]
 )
)

Waarom deze oplossing gebruiken?

Er zijn verschillende mechanismen voor toegangsbeheer die u kunt gebruiken om toegang te bieden tot gegevensvlakbronnen.

Toegangssleutels zijn een veelgebruikte manier om toegang te bieden tot gegevensvlakbronnen. Toegangssleutels bieden lees-, schrijf- en verwijdermachtigingen voor wie de toegangssleutel bezit. Dit betekent dat aanvallers toegang kunnen krijgen tot uw gevoelige gegevens als ze uw toegangssleutels kunnen krijgen. Toegangssleutels hebben geen identiteitsbinding, hebben geen verlooptijd en vormen een beveiligingsrisico om op te slaan.

Net als toegangssleutels hebben SAS-tokens (Shared Access Signature) geen identiteitsbinding, maar verlopen ze regelmatig. Het ontbreken van identiteitsbindingen vertegenwoordigt dezelfde beveiligingsrisico's als toegangssleutels. U moet de vervaldatum beheren om ervoor te zorgen dat clients geen fouten krijgen. SAS-tokens vereisen extra code om dagelijks te beheren en te werken en kan een aanzienlijke overhead zijn voor een DevOps-team.

Azure RBAC biedt gecentraliseerd gedetailleerd toegangsbeheer. Azure RBAC heeft identiteitsbinding die uw beveiligingsrisico vermindert. Met behulp van voorwaarden kunt u het beheer van roltoewijzingen mogelijk schalen en toegangsbeheer eenvoudiger te onderhouden maken omdat de toegang is gebaseerd op flexibele en dynamische kenmerken.

Hier volgen enkele voordelen van deze oplossing:

  • Gecentraliseerd toegangsbeheer
  • Eenvoudiger te onderhouden
  • Vertrouwt niet op toegangssleutels of SAS-tokens
  • Vereist niet dat u de toegang voor elk object beheert
  • Kan uw beveiligingspostuur mogelijk verbeteren

Kunt u deze oplossing gebruiken?

Als u een vergelijkbaar scenario hebt, volgt u deze stappen om te zien of u deze oplossing mogelijk kunt gebruiken.

Stap 1: Bepalen of u voldoet aan de vereisten

Als u deze oplossing wilt gebruiken, moet u het volgende hebben:

Stap 2: De kenmerken identificeren die u in uw voorwaarde kunt gebruiken

Er zijn verschillende kenmerken die u in uw voorwaarde kunt gebruiken, zoals de volgende:

  • Containernaam
  • Blobpad
  • Blob-indextags [Sleutels]
  • Blob-indextags [Waarden in sleutel]

U kunt ook uw eigen aangepaste beveiligingskenmerken definiëren voor gebruikers, bedrijfstoepassingen en beheerde identiteiten.

Zie voor meer informatie de indeling en syntaxis van de voorwaarde voor azure-roltoewijzing en wat zijn aangepaste beveiligingskenmerken in Microsoft Entra-id?.

Stap 3: Een voorwaarde maken in een hoger bereik

Maak een of meer roltoewijzingen die een voorwaarde in een hoger bereik gebruiken om de toegang te beheren. Zie Voorwaarden voor Azure-roltoewijzing toevoegen of bewerken met behulp van Azure Portal voor meer informatie.

Volgende stappen