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:
- Kenmerkdefinitie Beheer istrator en kenmerktoewijzing Beheer istrator
- Op rollen gebaseerd toegangsbeheer Beheer istrator
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.
Als Brenda bijvoorbeeld het kenmerk Project=Baker
heeft, kan ze alleen blobs lezen met de Project=Baker
blob-indextag. Op dezelfde manier kan Chandra alleen blobs lezen met Project=Cascade
.
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
Meld u aan bij de Azure-portal.
Klik op Aangepaste beveiligingskenmerken van Microsoft Entra ID>.
Voeg een kenmerk toe met de namen
Project
vanBaker
enCascade
. Of gebruik een bestaand kenmerk. Zie Aangepaste beveiligingskenmerken toevoegen of deactiveren in Microsoft Entra ID voor meer informatie.
Stap 2: Het aangepaste beveiligingskenmerk toewijzen aan een gebruiker
Maak in Microsoft Entra ID een beveiligingsgroep.
Voeg een gebruiker toe als lid van de groep.
Wijs het
Project
kenmerk toe met een waarde vanCascade
de gebruiker. Zie Toewijzen, bijwerken, weergeven of verwijderen van aangepaste beveiligingskenmerken voor een gebruiker voor meer informatie.Klik op Opslaan om uw opdracht op te slaan.
Stap 3: Opslag- en blobindextags instellen
Maak een opslagaccount dat compatibel is met de functie blobindextags. Zie Azure Blob-gegevens beheren en zoeken met blobindextags voor meer informatie.
Maak een nieuwe container in het opslagaccount en stel het openbare toegangsniveau in op Privé (geen anonieme toegang).
Stel het verificatietype in op het Azure AD-gebruikersaccount.
Upload tekstbestanden naar de container en stel de volgende blobindextags in.
File Sleutel Weergegeven als Baker-tekstbestand Project Baker Trapsgewijs tekstbestand Project Cascade
Stap 4: De rol Opslagblobgegevenslezer toewijzen met een voorwaarde
Open een nieuw tabblad en meld u aan bij Azure Portal.
Open de resourcegroep met het opslagaccount.
Klik op Toegangsbeheer (IAM).
Klik op het tabblad Roltoewijzingen om de roltoewijzingen in dit bereik weer te geven.
Klik op Roltoewijzing toevoegen>.
Selecteer op het tabblad Rol de rol Opslagblobgegevenslezer .
Selecteer op het tabblad Leden de beveiligingsgroep die u eerder hebt gemaakt.
(Optioneel) Voer in het vak Beschrijving leestoegang tot blobs in als de gebruiker een aangepast beveiligingskenmerk heeft dat overeenkomt met de blobindextag.
Klik op het tabblad Voorwaarden (optioneel) op Voorwaarde toevoegen.
De pagina Roltoewijzingsvoorwaarde toevoegen wordt weergegeven.
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.
Klik op Een blob lezen en klik vervolgens op Selecteren.
Klik in de sectie Build-expressie op Toevoegen.
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.
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$>] ) )
Klik op Opslaan om de voorwaarde op te slaan.
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
Open Azure Portal in een nieuw venster.
Meld u aan als de gebruiker die u hebt gemaakt met het
Project=Cascade
aangepaste beveiligingskenmerk.Open het opslagaccount en de container die u hebt gemaakt.
Zorg ervoor dat de verificatiemethode is ingesteld op het Azure AD-gebruikersaccount en niet op de toegangssleutel.
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.
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
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
Gebruik Get-AzRoleAssignment om de roltoewijzing op te halen die u aan de beveiligingsgroep hebt toegewezen.
$groupRoleAssignment = Get-AzRoleAssignment -ObjectId <groupObjectId> -Scope <scope>
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`$>]))"
Stel de
ConditionVersion
eigenschap van het roltoewijzingsobject in.$groupRoleAssignment.ConditionVersion = "2.0"
Gebruik Set-AzRoleAssignment om de roltoewijzing bij te werken.
Set-AzRoleAssignment -InputObject $groupRoleAssignment
De voorwaarde testen
Gebruik in een nieuw PowerShell-venster de opdracht Verbinding maken-AzAccount om u aan te melden als lid van de beveiligingsgroep.
Connect-AzAccount
Gebruik New-AzStorageContext om de context voor het opslagaccount in te stellen.
$bearerCtx = New-AzStorageContext -StorageAccountName <accountName>
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. ...
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
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
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>
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" }
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$>]))",
Werk de
conditionVersion
eigenschap bij."conditionVersion": "2.0",
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
Gebruik in een nieuw opdrachtvenster de opdracht az login om u aan te melden als lid van de beveiligingsgroep.
az login
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. ...
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, ... }