Leestoegang tot blobs toestaan op basis van tags en aangepaste beveiligingskenmerken

In dit artikel leert u hoe u leestoegang tot blobs toestaat op basis van blob-indextags en aangepaste beveiligingskenmerken met behulp van abac-voorwaarden (op kenmerken gebaseerd toegangsbeheer). Hierdoor is het eenvoudiger om toegang tot blobs te beheren.

Vereisten

Als u aangepaste beveiligingskenmerken wilt toewijzen en voorwaarden voor roltoewijzingen wilt toevoegen in uw Microsoft Entra-tenant, hebt u het volgende nodig:

Belangrijk

Globale beheerder en andere beheerdersrollen hebben standaard geen machtigingen voor het lezen, definiëren en toewijzen van aangepaste beveiligingskenmerken. Als u niet aan deze vereisten voldoet, ziet u de principal-/gebruikerskenmerken niet in de voorwaarde-editor.

Conditie

In dit artikel staat u leestoegang tot blobs toe als de gebruiker een aangepast beveiligingskenmerk heeft dat overeenkomt met de blobindextag. Dit wordt bereikt door een voorwaarde toe te voegen aan de roltoewijzing.

Diagram of role assignment with a condition.

Als Brenda bijvoorbeeld het kenmerk Project=Bakerheeft, kan ze alleen blobs lezen met de Project=Baker blob-indextag. Op dezelfde manier kan Chandra alleen blobs lezen met Project=Cascade.

Diagram showing read access to blobs based on tags and custom security attributes.

Dit is hoe de voorwaarde eruitziet in code:

(
 (
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
 )
 OR 
 (
  @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]
 )
)

Zie Wat is op kenmerken gebaseerd toegangsbeheer van Azure (Azure ABAC)? voor meer informatie over voorwaarden.

Stap 1: Een nieuw aangepast beveiligingskenmerk toevoegen

  1. Meld u aan bij de Azure-portal.

  2. Klik op Aangepaste beveiligingskenmerken van Microsoft Entra ID>.

  3. Voeg een kenmerk toe met de namen Project van Baker en Cascade. Of gebruik een bestaand kenmerk. Zie Aangepaste beveiligingskenmerken toevoegen of deactiveren in Microsoft Entra ID voor meer informatie.

    Screenshot of adding a custom security attribute.

Stap 2: Het aangepaste beveiligingskenmerk toewijzen aan een gebruiker

  1. Maak in Microsoft Entra ID een beveiligingsgroep.

  2. Voeg een gebruiker toe als lid van de groep.

  3. Wijs het Project kenmerk toe met een waarde van Cascade de gebruiker. Zie Toewijzen, bijwerken, weergeven of verwijderen van aangepaste beveiligingskenmerken voor een gebruiker voor meer informatie.

    Screenshot of assigning a custom security attribute.

  4. Klik op Opslaan om uw opdracht op te slaan.

Stap 3: Opslag- en blobindextags instellen

  1. Maak een opslagaccount dat compatibel is met de functie blobindextags. Zie Azure Blob-gegevens beheren en zoeken met blobindextags voor meer informatie.

  2. Maak een nieuwe container in het opslagaccount en stel het openbare toegangsniveau in op Privé (geen anonieme toegang).

  3. Stel het verificatietype in op het Azure AD-gebruikersaccount.

  4. Upload tekstbestanden naar de container en stel de volgende blobindextags in.

    File Sleutel Weergegeven als
    Baker-tekstbestand Project Baker
    Trapsgewijs tekstbestand Project Cascade

    Tip

    Zie Blob-indextags instellen voor informatie over de tekens die zijn toegestaan voor blobindextags.

Stap 4: De rol Opslagblobgegevenslezer toewijzen met een voorwaarde

  1. Open een nieuw tabblad en meld u aan bij Azure Portal.

  2. Open de resourcegroep met het opslagaccount.

  3. Klik op Toegangsbeheer (IAM).

  4. Klik op het tabblad Roltoewijzingen om de roltoewijzingen in dit bereik weer te geven.

  5. Klik op Roltoewijzing toevoegen>.

  6. Selecteer op het tabblad Rol de rol Opslagblobgegevenslezer .

  7. Selecteer op het tabblad Leden de beveiligingsgroep die u eerder hebt gemaakt.

  8. (Optioneel) Voer in het vak Beschrijving leestoegang tot blobs in als de gebruiker een aangepast beveiligingskenmerk heeft dat overeenkomt met de blobindextag.

  9. Klik op het tabblad Voorwaarden (optioneel) op Voorwaarde toevoegen.

    De pagina Roltoewijzingsvoorwaarde toevoegen wordt weergegeven.

  10. Klik in de sectie Actie toevoegen op Actie toevoegen.

    Het deelvenster Een actie selecteren wordt weergegeven. Dit deelvenster is een gefilterde lijst met gegevensacties op basis van de roltoewijzing die het doel van uw voorwaarde is.

  11. Klik op Een blob lezen en klik vervolgens op Selecteren.

  12. Klik in de sectie Build-expressie op Toevoegen.

  13. Geef de volgende instellingen op:

    Instelling Weergegeven als
    Kenmerkbron Principal
    Kenmerk <attributeset>_Project
    Operator StringEquals
    Optie Kenmerk
    Kenmerkbron Resource
    Kenmerk Blob-indextags [Waarden in sleutel]
    Key Project

    Notitie

    Als Principal niet wordt vermeld als een optie in de kenmerkbron, moet u ervoor zorgen dat u een aangepast beveiligingskenmerk hebt gedefinieerd zoals eerder beschreven in stap 1: Een nieuw aangepast beveiligingskenmerk toevoegen.

    Screenshot of condition using principal attribute displayed in visual editor.

  14. Schuif omhoog naar het type Editor en klik op Code.

    Uw voorwaarde moet er ongeveer als volgt uitzien:

    (
     (
      !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
     )
     OR 
     (
      @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]
     )
    )
    
  15. Klik op Opslaan om de voorwaarde op te slaan.

  16. Klik op het tabblad Controleren en toewijzen op Controleren + toewijzen om de rol Opslagblobgegevenslezer met een voorwaarde toe te wijzen.

Stap 5: Rol Lezer toewijzen

  • Herhaal de vorige stappen om de rol Lezer toe te wijzen voor de beveiligingsgroep binnen het bereik van de resourcegroep.

    Notitie

    Doorgaans hoeft u de rol Lezer niet toe te wijzen. Dit wordt echter gedaan zodat u de voorwaarde kunt testen met behulp van Azure Portal.

Stap 6: De voorwaarde testen

  1. Open Azure Portal in een nieuw venster.

  2. Meld u aan als de gebruiker die u hebt gemaakt met het Project=Cascade aangepaste beveiligingskenmerk.

  3. Open het opslagaccount en de container die u hebt gemaakt.

  4. Zorg ervoor dat de verificatiemethode is ingesteld op het Azure AD-gebruikersaccount en niet op de toegangssleutel.

    Screenshot of storage container with test files.

  5. Klik op het tekstbestand Baker.

    U moet de blob NIET kunnen weergeven of downloaden en er moet een bericht met een autorisatie mislukt worden weergegeven.

  6. Klik op Trapsgewijs tekstbestand.

    U moet de blob kunnen bekijken en downloaden.

Azure PowerShell

U kunt ook Azure PowerShell gebruiken om voorwaarden voor roltoewijzing toe te voegen. De volgende opdrachten laten zien hoe u voorwaarden toevoegt. Zie Zelfstudie: Een voorwaarde voor roltoewijzing toevoegen om de toegang tot blobs te beperken met behulp van Azure PowerShell voor meer informatie.

Een voorwaarde toevoegen

  1. Gebruik de opdracht Verbinding maken-AzAccount en volg de instructies die lijken aan te melden bij uw directory als op rollen gebaseerd toegangsbeheer Beheer istrator.

    Connect-AzAccount
    
  2. Gebruik Get-AzRoleAssignment om de roltoewijzing op te halen die u aan de beveiligingsgroep hebt toegewezen.

    $groupRoleAssignment = Get-AzRoleAssignment -ObjectId <groupObjectId> -Scope <scope>
    
  3. Stel de Condition eigenschap van het roltoewijzingsobject in. Zorg ervoor dat u de naam van de kenmerkenset gebruikt.

    $groupRoleAssignment.Condition="((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>]))"
    
  4. Stel de ConditionVersion eigenschap van het roltoewijzingsobject in.

    $groupRoleAssignment.ConditionVersion = "2.0"
    
  5. Gebruik Set-AzRoleAssignment om de roltoewijzing bij te werken.

    Set-AzRoleAssignment -InputObject $groupRoleAssignment
    

De voorwaarde testen

  1. Gebruik in een nieuw PowerShell-venster de opdracht Verbinding maken-AzAccount om u aan te melden als lid van de beveiligingsgroep.

    Connect-AzAccount
    
  2. Gebruik New-AzStorageContext om de context voor het opslagaccount in te stellen.

    $bearerCtx = New-AzStorageContext -StorageAccountName <accountName>
    
  3. Gebruik Get-AzStorageBlob om het Baker-bestand te lezen.

    Get-AzStorageBlob -Container <containerName> -Blob <blobNameBaker> -Context $bearerCtx
    

    U moet de blob niet kunnen lezen en er moet een mislukt bericht over autorisatie worden weergegeven.

    Get-AzStorageBlob : This request is not authorized to perform this operation using this permission. HTTP Status Code:
    403 - HTTP Error Message: This request is not authorized to perform this operation using this permission.
    ...
    
  4. Gebruik Get-AzStorageBlob om het cascadebestand te lezen.

    Get-AzStorageBlob -Container <containerName> -Blob <blobNameCascade> -Context $bearerCtx
    You should be able to read the blob.
    AccountName: <storageAccountName>, ContainerName: <containerName>
    
    Name                 BlobType  Length          ContentType                    LastModified         AccessTier SnapshotT
                                                                                                                  ime
    ----                 --------  ------          -----------                    ------------         ---------- ---------
    CascadeFile.txt      BlockBlob 7               text/plain                     2021-04-24 05:35:24Z Hot
    

Azure-CLI

U kunt ook Azure CLI gebruiken om voorwaarden voor roltoewijzingen toe te voegen. De volgende opdrachten laten zien hoe u voorwaarden toevoegt. Zie Zelfstudie: Een voorwaarde voor roltoewijzing toevoegen om de toegang tot blobs te beperken met behulp van Azure CLI.

Een voorwaarde toevoegen

  1. Gebruik de opdracht az login en volg de instructies die lijken aan te melden bij uw directory als op rollen gebaseerd toegangsbeheer Beheer istrator.

    az login
    
  2. Gebruik az role assignment list om de roltoewijzing op te halen die u aan de beveiligingsgroep hebt toegewezen.

    az role assignment list --assignee <groupObjectId> --scope <scope>
    
  3. Maak een JSON-bestand met de volgende indeling.

    {
        "canDelegate": null,
        "condition": "",
        "conditionVersion": "",
        "description": "",
        "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
        "name": "{roleAssignmentId}",
        "principalId": "{groupObjectId}",
        "principalName": "{principalName}",
        "principalType": "Group",
        "resourceGroup": "{resourceGroup}",
        "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "roleDefinitionName": "Storage Blob Data Reader",
        "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
        "type": "Microsoft.Authorization/roleAssignments"
    }
    
  4. Werk de condition eigenschap bij. Zorg ervoor dat u de naam van de kenmerkenset gebruikt.

    "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]))",
    
  5. Werk de conditionVersion eigenschap bij.

    "conditionVersion": "2.0",
    
  6. Gebruik az role assignment update om de voorwaarde toe te voegen aan de roltoewijzing.

    az role assignment update --role-assignment "./path/roleassignment.json"
    

De voorwaarde testen

  1. Gebruik in een nieuw opdrachtvenster de opdracht az login om u aan te melden als lid van de beveiligingsgroep.

    az login
    
  2. Gebruik az storage blob show om de eigenschappen voor het Baker-bestand te lezen.

    az storage blob show --account-name <storageAccountName> --container-name <containerName> --name <blobNameBaker> --auth-mode login
    

    U moet de blob niet kunnen lezen en er moet een mislukt bericht over autorisatie worden weergegeven.

    You do not have the required permissions needed to perform this operation.
    ...
    
  3. Gebruik az storage blob show om de eigenschappen voor het cascade-bestand te lezen.

    az storage blob show --account-name <storageAccountName> --container-name <containerName> --name <blobNameCascade> --auth-mode login
    You should be able to read the blob.
    {
      "container": "<containerName>",
      "content": "",
      "deleted": false,
      "encryptedMetadata": null,
      "encryptionKeySha256": null,
      "encryptionScope": null,
    ...
    }
    

Volgende stappen