Tillåt läsåtkomst till blobar baserat på taggar och anpassade säkerhetsattribut
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=Baker
kan 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
Project
med värdenaBaker
ochCascade
. 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.
Project
Tilldela attributet med värdetCascade
till 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=Cascade
anpassade 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-AzAccount
Anvä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
Condition
rolltilldelningsobjektet. 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
ConditionVersion
rolltilldelningsobjektet.$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-AzAccount
Anvä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 $bearerCtx
Du 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 login
Anvä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 login
Anvä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 login
Du 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, ... }