Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln får du lära dig hur du tillåter läsåtkomst till blobar baserat på blobindextaggar och anpassade säkerhetsattribut med hjälp av attributbaserade åtkomstkontrollvillkor (ABAC). Detta kan göra det enklare att hantera åtkomst till blobar.
Förutsättningar
Om du vill tilldela anpassade säkerhetsattribut och lägga till rolltilldelningsvillkor i din Microsoft Entra-klientorganisation behöver du:
- Administratör för attributdefinition och attributtilldelningsadministratör
- Administratör för rollbaserad åtkomstkontroll
Viktigt!
Som standard har global administratör och andra administratörsroller inte behörighet att läsa, definiera eller tilldela anpassade säkerhetsattribut. Om du inte uppfyller dessa krav visas inte huvudnamns-/användarattributen i villkorsredigeraren.
Villkor
I den här artikeln tillåter du läsåtkomst till blobar om användaren har ett anpassat säkerhetsattribut som matchar blobindextaggen. Detta uppnås genom att lägga till ett villkor i rolltilldelningen.

Om Till exempel Brenda har attributet Project=Bakerkan hon bara läsa blobar med Project=Baker blobindextaggen. På samma sätt kan Chandra bara läsa blobar med Project=Cascade.

Så här ser villkoret ut i kod:
(
(
!(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$>]
)
)
Mer information om villkor finns i Vad är azure-attributbaserad åtkomstkontroll (Azure ABAC)?.
Steg 1: Lägg till ett nytt anpassat säkerhetsattribut
Logga in på Azure-portalen.
Klicka på Anpassade säkerhetsattribut för Microsoft Entra ID>.
Lägg till ett attribut med namnet
Projectmed värdenaBakerochCascade. Eller använd ett befintligt attribut. Mer information finns i Lägga till eller inaktivera anpassade säkerhetsattribut i Microsoft Entra-ID.
Steg 2: Tilldela det anpassade säkerhetsattributet till en användare
Skapa en säkerhetsgrupp i Microsoft Entra-ID.
Lägg till en användare som medlem i gruppen.
ProjectTilldela attributet med värdetCascadetill användaren. Mer information finns i Tilldela, uppdatera, lista eller ta bort anpassade säkerhetsattribut för en användare.
Se till att klicka på Spara för att spara tilldelningen.
Steg 3: Konfigurera lagrings- och blobindextaggar
Skapa ett lagringskonto som är kompatibelt med funktionen blobindextaggar. Mer information finns i Hantera och hitta Azure Blob-data med blobindextaggar.
Skapa en ny container i lagringskontot och ange den offentliga åtkomstnivån till Privat (ingen anonym åtkomst).
Ange autentiseringstypen till Azure AD-användarkonto.
Ladda upp textfiler till containern och ange följande blobindextaggar.
Fil Tangent Värde Textfil för bagare Projekt Baker Kaskadtextfil Projekt Cascade Dricks
Information om de tecken som tillåts för blobindextaggar finns i Ange blobindextaggar.
Steg 4: Tilldela rollen Storage Blob Data Reader med ett villkor
Öppna en ny flik och logga in på Azure-portalen.
Öppna den resursgrupp som har lagringskontot.
Klicka på Åtkomstkontroll (IAM).
Klicka på fliken Rolltilldelningar för att visa rolltilldelningarna i det här omfånget.
Klicka på Lägg till lägg till>rolltilldelning.
På fliken Roll väljer du rollen Lagringsblobdataläsare .
På fliken Medlemmar väljer du den säkerhetsgrupp som du skapade tidigare.
(Valfritt) I rutan Beskrivning anger du Läsåtkomst till blobar om användaren har ett anpassat säkerhetsattribut som matchar blobindextaggen.
På fliken Villkor (valfritt) klickar du på Lägg till villkor.
Sidan Lägg till rolltilldelningsvillkor visas.
I avsnittet Lägg till åtgärd klickar du på Lägg till åtgärd.
Fönstret Välj en åtgärd visas. Det här fönstret är en filtrerad lista över dataåtgärder baserat på rolltilldelningen som ska vara målet för ditt villkor.
Klicka på Läs en blob och sedan på Välj.
I avsnittet Skapa uttryck klickar du på Lägg till.
Ange följande inställningar:
Inställning Värde Attributkälla Huvudkonto Attribut <attributuppsättning>_Project Operatör StringEquals Alternativ Attribut Attributkälla Resurs Attribut Blobindextaggar [Värden i nyckel] Key Projekt Kommentar
Om Principal inte visas som ett alternativ i Attributkälla kontrollerar du att du har definierat anpassat säkerhetsattribut enligt beskrivningen tidigare i Steg 1: Lägg till ett nytt anpassat säkerhetsattribut.

Rulla upp till Redigeringstyp och klicka på Kod.
Ditt villkor bör se ut ungefär så här:
( ( !(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$>] ) )Spara villkoret genom att klicka på Spara .
På fliken Granska + tilldela klickar du på Granska + tilldela för att tilldela rollen Storage Blob Data Reader med ett villkor.
Steg 5: Tilldela rollen Läsare
Upprepa föregående steg för att tilldela rollen Läsare för säkerhetsgruppen i resursgruppens omfång.
Kommentar
Du behöver vanligtvis inte tilldela rollen Läsare. Detta görs dock så att du kan testa villkoret med hjälp av Azure-portalen.
Steg 6: Testa villkoret
Öppna Azure-portalen i ett nytt fönster.
Logga in som den användare som du skapade med det
Project=Cascadeanpassade säkerhetsattributet.Öppna lagringskontot och containern som du skapade.
Kontrollera att autentiseringsmetoden är inställd på Azure AD-användarkonto och inte åtkomstnyckel.

Klicka på textfilen Baker.
Du bör INTE kunna visa eller ladda ned bloben och ett meddelande om att auktoriseringen misslyckades ska visas.
Klicka på Kaskadtextfil.
Du bör kunna visa och ladda ned bloben.
Azure PowerShell
Du kan också använda Azure PowerShell för att lägga till rolltilldelningsvillkor. Följande kommandon visar hur du lägger till villkor. Mer information finns i Självstudie: Lägga till ett rolltilldelningsvillkor för att begränsa åtkomsten till blobar med hjälp av Azure PowerShell.
Lägg till ett villkor
Använd kommandot Anslut-AzAccount och följ anvisningarna som visas för att logga in på din katalog som administratör för rollbaserad åtkomstkontroll.
Connect-AzAccountAnvänd Get-AzRoleAssignment för att hämta rolltilldelningen som du tilldelade till säkerhetsgruppen.
$groupRoleAssignment = Get-AzRoleAssignment -ObjectId <groupObjectId> -Scope <scope>Ange egenskapen för
Conditionrolltilldelningsobjektet. Se till att använda attributuppsättningens namn.$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`$>]))"Ange egenskapen för
ConditionVersionrolltilldelningsobjektet.$groupRoleAssignment.ConditionVersion = "2.0"Använd Set-AzRoleAssignment för att uppdatera rolltilldelningen.
Set-AzRoleAssignment -InputObject $groupRoleAssignment
Testa villkoret
I ett nytt PowerShell-fönster använder du kommandot Anslut-AzAccount för att logga in som medlem i säkerhetsgruppen.
Connect-AzAccountAnvänd New-AzStorageContext för att ange kontexten för lagringskontot.
$bearerCtx = New-AzStorageContext -StorageAccountName <accountName>Använd Get-AzStorageBlob för att försöka läsa Baker-filen.
Get-AzStorageBlob -Container <containerName> -Blob <blobNameBaker> -Context $bearerCtxDu bör INTE kunna läsa bloben och ett meddelande om att auktoriseringen misslyckades ska visas.
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. ...Använd Get-AzStorageBlob för att försöka läsa Cascade-filen.
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
Du kan också använda Azure CLI för att lägga till rolltilldelningsvillkor. Följande kommandon visar hur du lägger till villkor. Mer information finns i Självstudie: Lägga till ett rolltilldelningsvillkor för att begränsa åtkomsten till blobar med hjälp av Azure CLI.
Lägg till ett villkor
Använd kommandot az login och följ anvisningarna som visas för att logga in på din katalog som administratör för rollbaserad åtkomstkontroll.
az loginAnvänd az role assignment list för att hämta rolltilldelningen som du tilldelade till säkerhetsgruppen.
az role assignment list --assignee <groupObjectId> --scope <scope>Skapa en JSON-fil med följande format.
{ "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" }Uppdatera egenskapen
condition. Se till att använda attributuppsättningens namn."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$>]))",Uppdatera egenskapen
conditionVersion."conditionVersion": "2.0",Använd az role assignment update för att lägga till villkoret i rolltilldelningen.
az role assignment update --role-assignment "./path/roleassignment.json"
Testa villkoret
I ett nytt kommandofönster använder du kommandot az login för att logga in som medlem i säkerhetsgruppen.
az loginAnvänd az storage blob show för att försöka läsa egenskaperna för Baker-filen.
az storage blob show --account-name <storageAccountName> --container-name <containerName> --name <blobNameBaker> --auth-mode loginDu bör INTE kunna läsa bloben och ett meddelande om att auktoriseringen misslyckades ska visas.
You do not have the required permissions needed to perform this operation. ...Använd az storage blob show för att försöka läsa egenskaperna för Cascade-filen.
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, ... }