Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jak povolit přístup pro čtení k objektům blob na základě značek indexu objektů blob a vlastních atributů zabezpečení pomocí podmínek řízení přístupu na základě atributů (ABAC). To usnadňuje správu přístupu k objektům blob.
Požadavky
Pokud chcete přiřadit vlastní atributy zabezpečení a přidat podmínky přiřazení rolí v tenantovi Microsoft Entra, potřebujete:
Důležité
Ve výchozím nastavení nemají globální správce a další role správců oprávnění ke čtení, definování nebo přiřazování vlastních atributů zabezpečení. Pokud tyto požadavky nesplňujete, v editoru podmínek se nezobrazí atributy principála a uživatele.
Podmínka
V tomto článku povolíte přístup pro čtení k objektům blob, pokud má uživatel vlastní atribut zabezpečení, který odpovídá značce indexu objektu blob. Toho se dosahuje přidáním podmínky k přiřazení role.
Například, pokud má Brenda atribut Project=Baker, může číst pouze objekty blob se značkou indexu Project=Baker. Podobně může Chandra číst pouze datové bloky s Project=Cascade.
Tady je, jak podmínka vypadá v kódu:
(
(
!(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$>]
)
)
Další informace o podmínkách najdete v tématu Co je řízení přístupu na základě atributů Azure (Azure ABAC)?
Krok 1: Přidání nového vlastního atributu zabezpečení
Přihlaste se do Azure Portalu.
Klikněte navlastní atributy zabezpečeníMicrosoft Entra ID>.
Přidejte atribut s názvem
Projects hodnotamiBakeraCascade. Nebo použijte existující atribut. Další informace naleznete v tématu Přidání nebo deaktivace vlastních atributů zabezpečení v Microsoft Entra ID.
Krok 2: Přiřazení vlastního atributu zabezpečení uživateli
V Microsoft Entra ID vytvořte skupinu zabezpečení.
Přidejte uživatele jako člena skupiny.
Přiřaďte uživateli atribut
Projects hodnotouCascade. Další informace najdete v tématu Přiřazení, aktualizace, výpis nebo odebrání vlastních atributů zabezpečení pro uživatele.
Nezapomeňte kliknout na Uložit a uložit zadání.
Krok 3: Nastavení úložiště a indexových značek blobů
Vytvořte účet úložiště, který je kompatibilní s funkcí indexových značek blob. Další informace naleznete v článku Správa a vyhledávání dat Azure Blob pomocí značek indexu objektů blob.
Vytvořte nový kontejner v rámci účtu úložiště a nastavte úroveň veřejného přístupu na Privátní (bez anonymního přístupu).
Nastavte typ ověřování na uživatelský účet Azure AD.
Nahrajte textové soubory do kontejneru a nastavte následující značky indexu objektů blob.
Soubor Klíč Hodnota Textový soubor Baker Projekt Pekař Kaskádový textový soubor Projekt Kaskáda Návod
Informace o znacích povolených pro značky indexu objektů blob najdete v tématu Nastavení značek indexu objektů blob.
Krok 4: Přiřazení role Čtenář dat objektů blob služby Storage s podmínkou
Otevřete novou kartu a přihlaste se k webu Azure Portal.
Otevřete skupinu prostředků, která má účet úložiště.
Klikněte na Řízení přístupu (IAM).
Kliknutím na kartu Přiřazení rolí zobrazíte přiřazení rolí v tomto rozsahu.
Klikněte na Přidat>Přidat přiřazení role.
Na kartě Role vyberte roli Čtenář dat objektů blob služby Storage .
Na kartě Členové vyberte skupinu zabezpečení, kterou jste vytvořili dříve.
(Volitelné) Do pole Popis zadejte přístup pro čtení k objektům blob, pokud má uživatel vlastní atribut zabezpečení, který odpovídá značce indexu objektu blob.
Na kartě Podmínky (volitelné) klikněte na Přidat podmínku.
Zobrazí se stránka Přidat podmínku přiřazení role.
V části Přidat akci klikněte na Přidat akci.
Zobrazí se podokno pro výběr akce. Toto podokno je filtrovaný seznam akcí dat na základě přiřazení role, která bude cílem vaší podmínky.
Klepněte na Přečíst blob a potom klepněte na Vybrat.
V části Výraz sestavení klepněte na Přidat.
Zadejte následující nastavení:
Nastavení Hodnota Zdroj atributů Ředitel Vlastnost <attributeset>_Projekt Operátor StringEquals Možnost Vlastnost Zdroj atributů Zdroj Vlastnost Značky indexu objektů blob [Hodnoty v klíči] Klíč Projekt Poznámka:
Pokud objekt zabezpečení není uvedený jako možnost ve zdroji atributů, ujistěte se, že jste definovali vlastní atribut zabezpečení, jak je popsáno výše v kroku 1: Přidání nového vlastního atributu zabezpečení.
Posuňte se nahoru na typ Editoru a klikněte na Kód.
Vaše podmínka by měla vypadat nějak takto:
( ( !(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$>] ) )Kliknutím na Uložit uložíte podmínku.
Na kartě Revize a přiřazení klikněte na Revize a přiřazení a přiřaďte roli Čtenář dat objektů blob služby Storage s určenou podmínkou.
Krok 5: Přiřaďte roli Čtenář
Opakujte předchozí kroky a přiřaďte roli Čtenář pro bezpečnostní skupinu na úrovni skupiny prostředků.
Poznámka:
Obvykle nemusíte přiřazovat roli Čtenář. To se ale provádí, abyste mohli podmínku otestovat pomocí webu Azure Portal.
Krok 6: Otestování podmínky
V novém okně otevřete Azure Portal.
Přihlaste se jako uživatel, který jste vytvořili pomocí vlastního atributu
Project=Cascadezabezpečení.Otevřete účet úložiště a kontejner, který jste vytvořili.
Ujistěte se, že je metoda ověřování nastavená na uživatelský účet Azure AD , a ne přístupový klíč.
Klikněte na textový soubor Baker.
Neměli byste být schopni zobrazit nebo stáhnout objekt blob a měla by se zobrazit zpráva o selhání autorizace.
Klikněte na Kaskádový textový soubor.
Měli byste být schopni zobrazit a stáhnout objekt blob.
Azure PowerShell
K přidání podmínek přiřazení rolí můžete použít také Azure PowerShell. Následující příkazy ukazují, jak přidat podmínky. Informace najdete v tématu Kurz: Přidání podmínky přiřazení role k omezení přístupu k objektům blob pomocí Azure PowerShellu.
Přidání podmínky
Použijte příkaz Connect-AzAccount a postupujte podle pokynů, které se zobrazí pro přihlášení k adresáři jako správce řízení přístupu na základě role.
Connect-AzAccountPomocí rutiny Get-AzRoleAssignment získáte přiřazení role, které jste přiřadili ke skupině zabezpečení.
$groupRoleAssignment = Get-AzRoleAssignment -ObjectId <groupObjectId> -Scope <scope>ConditionNastavte vlastnost objektu přiřazení role. Nezapomeňte použít název sady atributů.$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`$>]))"ConditionVersionNastavte vlastnost objektu přiřazení role.$groupRoleAssignment.ConditionVersion = "2.0"K aktualizaci přiřazení role použijte Set-AzRoleAssignment .
Set-AzRoleAssignment -InputObject $groupRoleAssignment
Otestovat podmínku
V novém okně PowerShellu se pomocí příkazu Connect-AzAccount přihlaste jako člen skupiny zabezpečení.
Connect-AzAccountPomocí rutiny New-AzStorageContext nastavte kontext pro účet úložiště.
$bearerCtx = New-AzStorageContext -StorageAccountName <accountName>Pomocí rutiny Get-AzStorageBlob se pokuste přečíst soubor Baker.
Get-AzStorageBlob -Container <containerName> -Blob <blobNameBaker> -Context $bearerCtxObjekt blob byste neměli číst a měla by se zobrazit zpráva o neúspěšné autorizaci.
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. ...Pomocí rutiny Get-AzStorageBlob se pokuste přečíst soubor Cascade.
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 (příkazový řádek nástroje Azure)
K přidání podmínek přiřazení rolí můžete použít také Azure CLI. Následující příkazy ukazují, jak přidat podmínky. Informace najdete v tématu Kurz: Přidání podmínky přiřazení role k omezení přístupu k objektům blob pomocí Azure CLI.
Přidání podmínky
Použijte příkaz az login a postupujte podle pokynů, které se zobrazí pro přihlášení k adresáři jako správce řízení přístupu na základě role.
az loginPoužijte az role assignment list k získání přiřazení role, které jste přiřadili skupině zabezpečení.
az role assignment list --assignee <groupObjectId> --scope <scope>Vytvořte soubor JSON s následujícím formátem.
{ "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" }Aktualizujte
conditionvlastnost. Nezapomeňte použít název sady atributů."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$>]))",Aktualizujte
conditionVersionvlastnost."conditionVersion": "2.0",Pomocí příkazu az role assignment update přidejte podmínku k přiřazení role.
az role assignment update --role-assignment "./path/roleassignment.json"
Otestuj podmínku
V novém příkazovém okně se pomocí příkazu az login přihlaste jako člen skupiny zabezpečení.
az loginPomocí příkazu az storage blob show se pokuste přečíst vlastnosti souboru Baker.
az storage blob show --account-name <storageAccountName> --container-name <containerName> --name <blobNameBaker> --auth-mode loginNeměli byste být schopni číst blob a měla by se zobrazit zpráva o neúspěšné autorizaci.
You do not have the required permissions needed to perform this operation. ...Pomocí příkazu az storage blob show se pokuste přečíst vlastnosti souboru Cascade.
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, ... }