Sdílet prostřednictvím


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. Pokud chcete 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 určitém oboru. 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 #D0 nebo ID objektu uživatele. K získání ID objektu můžete použít 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

Principál služby

Pro služební principál Microsoft Entra (identita používaná aplikací) potřebujete ID objektu služebního principálu. K získání ID objektu můžete použít příkaz az ad sp list. Pro službu hlavní identitu použijte ID objektu a ne 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 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 az identity list.

az identity list

Krok 2: Výběr příslušné role

Oprávnění jsou seskupena do rolí. Můžete si vybrat ze seznamu několika vestavěný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, skupina prostředků, předplatné a skupina 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.

#B0 Rozsah prostředků #C1

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 zdroje má následující formát.

/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}

rozsah skupina prostředků

Pro rozsah skupiny prostředků potřebujete název skupiny prostředků. Název najdete na stránce Skupiny prostředků v Azure portálu nebo můžete použít 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á v Azure portálu nebo můžete použít příkaz az account list.

az account list --query "[].{name:name, id:id}" --output tsv

#B0 Rozsah skupiny správy #C1

Pro rozsah skupiny pro správu potřebujete název skupiny pro správu. Název najdete na stránce Skupiny pro správu v Azure portálu nebo můžete použít 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 zdroje

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}"

Rozsah skupiny zdrojů

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"

#B0 Rozsah předplatného #C1

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}"

Rozsah správcovské skupiny

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řadit příklady rolí

Přiřazení role pro všechny kontejnery objektů blob v rámci prostředků účtu úložiště

Přiřadí roli Přispěvatel dat úložiště Blob instančnímu objektu s ID 55555555-5555-5555-5555-555555555555 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řadit roli pro konkrétní rozsah prostředků kontejneru blobů

Přiřadí roli Storage Blob Data Contributor služebnímu principálu s ID objektu 55555555-5555-5555-5555-555555555555 v rámci prostředku pro kontejner 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ě Ann Mack Team s ID 22222222-2222-2222-2222-222222222222 v rámci 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řadit roli uživateli v rámci skupiny prostředků

Přiřadí roli Přispěvatele virtuálního počítače uživateli v rámci skupiny prostředků pharma-sales.

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 svou vlastní roli a rozhodli jste se změnit její název.
  • Používáte roli s náhledem, 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í roli Přispěvatel virtuálních strojů uživateli v rámci skupiny prostředků 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řaďte roli pro všechny kontejnery objektů BLOB v rámci oboru skupiny prostředků.

Přiřadí roli Přispěvatel dat objektu blob úložiště instanci služby 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ího počítače k aplikaci s ID objektu služby 44444444-4444-4444-4444-444444444444 v rámci skupiny prostředků 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řadit roli pro nový služební principal v rámci 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. Služební principál je vytvořen v jedné oblasti; přiřazení role však může nastat v jiné oblasti, která služební principál ještě nereplikovala. Abyste tento scénář vyřešili, měli byste při vytváření přiřazení role zadat hlavní typ.

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 rámci skupiny prostředků 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í roli Čtenáře uživateli v rozsahu předplatného.

az role assignment create --assignee "annm@example.com" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"

Přiřaďte roli skupině v rámci předplatného

Přiřadí roli Čtenář skupině Tým Ann Mack s ID 22222222-2222-2222-2222-222222222222 v rámci 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 na všechny kontejnery blobů v rámci předplatného

Přiřadí roli Čtenář dat objektů blob služby Storage uživateli alain@example.com v rámci 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řadit roli uživateli na úrovni skupiny pro správu

Přiřadí roli Čtenář faktur uživateli alain@example.com na úrovni rozsahu skupiny pro správu.

az role assignment create --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"

Další kroky