Přiřazení rolí Azure pomocí Azure CLI
Řízení přístupu na základě role v Azure (Azure RBAC) je autorizační systém, který používáte ke správě přístupu k prostředkům Azure. Chcete-li udělit přístup, přiřaďte role uživatelům, skupinám, instančním objektům nebo spravovaným identitám v konkrétním rozsahu. Tento článek popisuje, jak přiřadit role pomocí Azure CLI.
Požadavky
Pokud chcete přiřadit role, musíte mít:
Microsoft.Authorization/roleAssignments/write
oprávnění, jako je řízení přístupu na základě role Správa istrator- Bash v Azure Cloud Shellu nebo Azure CLI
Postup přiřazení role Azure
Přiřazení role se skládá ze tří prvků: objekt zabezpečení, definice role a obor.
Krok 1: Určení, kdo potřebuje přístup
Roli můžete přiřadit uživateli, skupině, instančnímu objektu nebo spravované identitě. Pokud chcete přiřadit roli, budete možná muset zadat jedinečné ID objektu. ID má formát: 11111111-1111-1111-1111-111111111111
. ID můžete získat pomocí webu Azure Portal nebo Azure CLI.
Uživatel
Pro uživatele Microsoft Entra získejte hlavní název uživatele, například patlong@contoso.com ID objektu uživatele. K získání ID objektu můžete použít příkaz az ad user show.
az ad user show --id "{principalName}" --query "id" --output tsv
Skupina
Pro skupinu Microsoft Entra potřebujete ID objektu skupiny. K získání ID objektu můžete použít příkaz az ad group show nebo az ad group list.
az ad group show --group "{groupName}" --query "id" --output tsv
Instanční objekt
Pro instanční objekt Microsoft Entra (identita používaná aplikací) potřebujete ID instančního objektu. K získání ID objektu můžete použít příkaz az ad sp list. Pro instanční objekt použijte ID objektu, nikoli ID aplikace.
az ad sp list --all --query "[].{displayName:displayName, id:id}" --output tsv
az ad sp list --display-name "{displayName}"
Spravovaná identita
Pro spravovanou identitu přiřazenou systémem nebo spravovanou identitu přiřazenou uživatelem potřebujete ID objektu. K získání ID objektu můžete použít příkaz az ad sp list.
az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"
Pokud chcete jenom vypsat spravované identity přiřazené uživatelem, můžete použít příkaz az identity list.
az identity list
Krok 2: Výběr příslušné role
Oprávnění se seskupují do rolí. Můžete si vybrat ze seznamu několika předdefinovaných rolí Azure nebo můžete použít vlastní role. Osvědčeným postupem je udělit přístup s minimálními potřebnými oprávněními, takže se vyhněte přiřazování širší role.
Pokud chcete zobrazit seznam rolí a získat jedinečné ID role, můžete použít příkaz az role definition list.
az role definition list --query "[].{name:name, roleType:roleType, roleName:roleName}" --output tsv
Tady je postup, jak zobrazit podrobnosti konkrétní role.
az role definition list --name "{roleName}"
Další informace najdete v tématu Výpis definic rolí Azure.
Krok 3: Určení potřebného oboru
Azure poskytuje čtyři úrovně rozsahu: prostředek, skupinu prostředků, předplatné a skupinu pro správu. Osvědčeným postupem je udělit přístup s minimálními potřebnými oprávněními, takže se vyhněte přiřazování role v širším rozsahu. Další informace o oboru naleznete v tématu Vysvětlení oboru.
Rozsah prostředků
Pro rozsah prostředků potřebujete ID prostředku pro daný prostředek. ID prostředku najdete tak, že se podíváte na vlastnosti prostředku na webu Azure Portal. ID prostředku má následující formát.
/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}
Rozsah skupiny prostředků
Pro obor skupiny prostředků potřebujete název skupiny prostředků. Název najdete na stránce Skupiny prostředků na webu Azure Portal nebo můžete použít příkaz az group list.
az group list --query "[].{name:name}" --output tsv
Rozsah předplatného
Pro rozsah předplatného potřebujete ID předplatného. ID najdete na stránce Předplatná na webu Azure Portal nebo můžete použít příkaz az account list.
az account list --query "[].{name:name, id:id}" --output tsv
Rozsah skupiny pro správu
Pro obor skupiny pro správu potřebujete název skupiny pro správu. Název najdete na stránce Skupiny pro správu na webu Azure Portal nebo můžete použít příkaz az account management-group list.
az account management-group list --query "[].{name:name, id:id}" --output tsv
Krok 4: Přiřazení role
Pokud chcete přiřadit roli, použijte příkaz az role assignment create . V závislosti na oboru má příkaz obvykle jeden z následujících formátů.
Rozsah prostředků
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}"
Rozsah skupiny prostředků
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
Rozsah předplatného
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}"
Rozsah skupiny pro správu
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/providers/Microsoft.Management/managementGroups/{managementGroupName}"
Následující příklad ukazuje výstup, když uživateli přiřadíte roli Přispěvatel virtuálních počítačů v oboru skupiny prostředků.
{
"canDelegate": null,
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
"name": "{roleAssignmentId}",
"principalId": "{principalId}",
"principalType": "User",
"resourceGroup": "{resourceGroupName}",
"roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c",
"scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
"type": "Microsoft.Authorization/roleAssignments"
}
Přiřazení příkladů rolí
Přiřazení role pro všechny kontejnery objektů blob v oboru prostředků účtu úložiště
Přiřadí roli Přispěvatel dat v objektu blob úložiště instančnímu objektu s ID 55555555-5555-5555-5555-55555555555 v oboru prostředku pro účet úložiště s názvem storage12345.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"
Přiřazení role pro konkrétní obor prostředků kontejneru objektů blob
Přiřadí roli Přispěvatel dat objektu blob úložiště instančnímu objektu s ID 555555555-5555-5555-5555-555555555555 v oboru prostředku kontejneru objektů blob s názvem blob-container-01.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01"
Přiřazení role pro skupinu v určitém oboru prostředků virtuální sítě
Přiřadí roli Přispěvatel virtuálních počítačů skupině týmu Ann Mack s ID 222222222-2222-2222-2222-2222222222222 v oboru prostředků pro virtuální síť s názvem pharma-sales-project-network.
az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network"
Přiřazení role pro uživatele v oboru skupiny prostředků
Přiřadí roli Přispěvatel virtuálních počítačů uživateli v oboru skupiny prostředků farmakovitické prodeje. patlong@contoso.com
az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Přiřazení role pro uživatele pomocí jedinečného ID role v oboru skupiny prostředků
Někdy se může změnit název role, například:
- Používáte vlastní roli a rozhodnete se změnit název.
- Používáte roli preview, která má v názvu (Preview). Po vydání role se role přejmenuje.
I když je role přejmenována, ID role se nezmění. Pokud k vytváření přiřazení rolí používáte skripty nebo automatizaci, doporučujeme místo názvu role použít jedinečné ID role. Proto pokud se role přejmenuje, budou vaše skripty pravděpodobně fungovat.
Následující příklad přiřadí uživateli roli patlong@contoso.com Přispěvatel virtuálních počítačů v oboru skupiny prostředků prodeje pharma-sales.
az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Přiřazení role pro všechny kontejnery objektů blob v oboru skupiny prostředků
Přiřadí roli Přispěvatel dat objektu blob úložiště instančnímu objektu s ID 55555555-5555-5555-5555-555555555555 v oboru skupiny prostředků Example-Storage-rg.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Example-Storage-rg"
Přiřazení role pro aplikaci v oboru skupiny prostředků
Přiřadí roli Přispěvatel virtuálních počítačů k aplikaci s ID instančního objektu 44444444-4444-4444-4444-4444444444444 v oboru skupiny prostředků prodeje pharma-sales.
az role assignment create --assignee "44444444-4444-4444-4444-444444444444" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Přiřazení role pro nový instanční objekt v oboru skupiny prostředků
Pokud vytvoříte nový instanční objekt a okamžitě se pokusíte přiřadit roli k danému instančnímu objektu, přiřazení této role může v některých případech selhat. Pokud například pomocí skriptu vytvoříte novou spravovanou identitu a pak se pokusíte přiřadit roli k danému instančnímu objektu, přiřazení role může selhat. Důvodem tohoto selhání je pravděpodobně zpoždění replikace. Instanční objekt se vytvoří v jedné oblasti; Přiřazení role však může nastat v jiné oblasti, která ještě nereplikovala instanční objekt. Pokud chcete tento scénář vyřešit, měli byste při vytváření přiřazení role zadat typ objektu zabezpečení.
Pokud chcete přiřadit roli, použijte příkaz az role assignment create, zadejte hodnotu pro --assignee-object-id
a pak nastavte --assignee-principal-type
hodnotu ServicePrincipal
.
az role assignment create --assignee-object-id "{assigneeObjectId}" \
--assignee-principal-type "{assigneePrincipalType}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
Následující příklad přiřadí roli Přispěvatel virtuálních počítačů spravované identitě msi-test v oboru skupiny prostředků prodeje pharma-sales:
az role assignment create --assignee-object-id "33333333-3333-3333-3333-333333333333" \
--assignee-principal-type "ServicePrincipal" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Přiřazení role pro uživatele v oboru předplatného
Přiřadí uživateli roli annm@example.com Čtenář v oboru předplatného.
az role assignment create --assignee "annm@example.com" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Přiřazení role pro skupinu v oboru předplatného
Přiřadí roli Čtenář skupině Týmu Ann Mack s ID 222222222-2222-2222-2222-222222222222222 v oboru předplatného.
az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Přiřazení role pro všechny kontejnery objektů blob v oboru předplatného
Přiřadí uživateli roli alain@example.com Čtenář dat objektů blob služby Storage v oboru předplatného.
az role assignment create --assignee "alain@example.com" \
--role "Storage Blob Data Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Přiřazení role pro uživatele v oboru skupiny pro správu
Přiřadí uživateli roli alain@example.com Čtenář fakturace v oboru skupiny pro správu.
az role assignment create --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"