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:

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-ida 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"

Další kroky