Povolení přístupu pro čtení k objektům blob na základě značek a vlastních atributů zabezpečení
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:
- Definice atributu Správa istrator a přiřazení atributů Správa istrator
- Řízení přístupu na základě role Správa istrator
Důležité
Globální Správa istrator a další role správce ve výchozím nastavení nemají 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 objektu zabezpečení 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.
Pokud má například Brenda atribut Project=Baker
, může číst pouze objekty blob se značkou indexu Project=Baker
objektů blob. Podobně může Chandra číst pouze objekty blob 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 k portálu Azure.
Klikněte na vlastní atributy zabezpečení Microsoft Entra ID>.
Přidejte atribut s názvem
Project
s hodnotamiBaker
aCascade
. 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.
Project
Přiřaďte atribut s hodnotouCascade
uživatele. 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í značek indexu úložiště a objektů blob
Vytvořte účet úložiště, který je kompatibilní s funkcí značek indexu objektů blob. Další informace najdete v tématu Správa a vyhledání dat objektů blob Azure 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 Key Hodnota Textový soubor Pekárna Projekt Baker Kaskádový textový soubor Projekt Cascade Tip
Informace o znaménách znaků 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 oboru.
Klikněte na 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 akce Vybrat. Toto podokno je filtrovaný seznam akcí dat na základě přiřazení role, která bude cílem vaší podmínky.
Klepněte na tlačítko Číst objekt blob a potom klepněte na tlačítko Vybrat.
V části Výraz sestavení klepněte na tlačítko Přidat.
Zadejte následující nastavení:
Nastavení Hodnota Zdroj atributů Objekt zabezpečení Atribut <attributeset>_Project Operátor StringEquals Možnost Atribut Zdroj atributů Resource Atribut Značky indexu objektů blob [Hodnoty v klíči] Key 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 podmínkou.
Krok 5: Přiřazení role Čtenář
Opakováním předchozích kroků přiřaďte roli Čtenář pro skupinu zabezpečení v oboru 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=Cascade
zabezpeč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 neúspěšné autorizaci.
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řidat podmínku
Použijte příkaz Připojení-AzAccount a postupujte podle pokynů, které se zobrazí pro přihlášení k adresáři jako řízení přístupu na základě role Správa istrator.
Connect-AzAccount
Pomocí 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>
Condition
Nastavte 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`$>]))"
ConditionVersion
Nastavte vlastnost objektu přiřazení role.$groupRoleAssignment.ConditionVersion = "2.0"
K aktualizaci přiřazení role použijte Set-AzRoleAssignment .
Set-AzRoleAssignment -InputObject $groupRoleAssignment
Otestování podmínky
V novém okně PowerShellu se pomocí příkazu Připojení-AzAccount přihlaste jako člen skupiny zabezpečení.
Connect-AzAccount
Pomocí 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 $bearerCtx
Objekt 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
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řidat podmínku
Použijte příkaz az login a postupujte podle pokynů, které se zobrazí pro přihlášení k adresáři jako řízení přístupu na základě role Správa istrator.
az login
Pomocí příkazu az role assignment list získejte 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
condition
vlastnost. 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
conditionVersion
vlastnost."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"
Otestování podmínky
V novém příkazovém okně se pomocí příkazu az login přihlaste jako člen skupiny zabezpečení.
az login
Pomocí 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 login
Objekt blob byste neměli číst 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, ... }