管理 Azure 自定义角色

已完成

本单元介绍管理 Azure 自定义角色的人员和方式。

谁可以管理自定义角色?

通常,拥有“所有者”或“用户访问管理员”角色的管理员有权创建和管理自定义角色。 默认情况下,这些角色对所有角色分配范围具有 Microsoft.Authorization/roleDefinitions/write 权限。 创建、删除或更新自定义角色需要该权限。

AssignableScopes 下的自定义角色定义中定义了角色分配范围。 如第 2 单元所述,AssignableScopes 可能是一个或多个订阅、资源组或资源。

下表列出了创建、删除、更新或查看自定义角色所需的权限。 要管理自定义角色,你需要分配有角色定义中具有相关 ActionsAssignableScopes 的角色。

任务 操作 描述
创建/删除 Microsoft.Authorization/roleDefinitions/write 用户可以创建或删除用于在范围内使用的自定义角色。 例如:订阅、资源组和资源的“所有者”和“用户访问管理员”。
更新 Microsoft.Authorization/roleDefinitions/write 用户可以更新范围内的自定义角色。 例如:订阅、资源组和资源的“所有者”和“用户访问管理员”。
查看 Microsoft.Authorization/roleDefinitions/read 用户可以查看某个范围内可供分配的自定义角色。 所有内置角色都允许自定义角色用于分配。

创建自定义角色

在上个单元中,你使用 Azure CLI 创建了一个自定义角色。 还可通过 Azure 门户或 Azure PowerShell 创建自定义角色。

使用 Azure 门户创建自定义角色

在 Azure 门户中,转到希望自定义角色范围应用到的订阅或资源组,然后转到“访问控制(IAM)”,并选择“添加”>“添加自定义角色”。

在“添加”按钮下显示“添加自定义角色”选项的屏幕截图。

你可选择克隆现有角色,也可从头开始。

显示选择了克隆角色单选按钮且将虚拟机参与者作为要克隆的角色的屏幕截图。

无论选择哪种操作,你都可编辑权限、范围和生成的 JSON。

使用 Azure PowerShell 创建自定义角色

使用 Azure PowerShell 创建角色所涉及的步骤类似于前面两个单元中涵盖的步骤。 在 JSON 文件中定义自定义角色之后,请在 Azure CLI 中使用以下命令创建自定义角色:

az role definition create --role-definition vm-operator-role.json

要在 Azure PowerShell 中创建角色,请运行以下命令:

New-AzRoleDefinition -InputFile "vm-operator-role.json"

更新自定义角色

要更新自定义角色,可以使用 Azure CLI 或 Azure PowerShell。 在下一单元中,你将分步完成更新自定义角色定义的特定步骤;但通常在使用更改更新 JSON 文件后,将运行以下命令之一。

要使用 Azure CLI 更新自定义角色,请运行以下带路径(指向含有更新的 JSON 文件)的命令:

az role definition update --role-definition "<<path-to-json-file>>"

在 Azure PowerShell 中,运行以下带路径(指向已更新的 JSON 文件)的命令:

Set-AzRoleDefinition -InputFile "<<path-to-json-file>>"

查看自定义角色

在下一个单元中,你将了解如何查看 Azure 门户中的自定义角色。 还可以通过使用 Azure CLI 或 PowerShell 获取自定义角色列表。

要使用 Azure CLI 列出所有自定义角色,请使用以下命令:

az role definition list --custom-role-only true --output json | jq '.[] | {"roleName":.roleName, "roleType":.roleType}'

请注意,命令仅请求角色名和角色类型。 通过此操作,可以更轻松地查看许多角色。

要使用 Azure PowerShell 列出所有自定义角色,请使用以下命令。 此命令列出订阅中可供分配的自定义角色。 如果订阅不在角色的 AssignableScopes 中,则不会列出自定义角色。

Get-AzRoleDefinition | ? {$_.IsCustom -eq $true} | FT Name, IsCustom

查看角色定义

要查看特定角色的完整定义,请使用以下 Azure CLI 命令:

az role definition list --name "Virtual Machine Operator"

要在 PowerShell 中查看定义,请使用以下命令:

Get-AzRoleDefinition "Virtual Machine Operator" 

列出自定义角色分配

以下命令可用于查看分配给在 Azure CLI 中创建的自定义角色的人员:

az role assignment list --role "Virtual Machine Operator"

在 PowerShell 中,使用以下命令:

Get-AzRoleAssignment -RoleDefinitionName "Virtual Machine Operator"

删除自定义角色

下一单元中的练习需要在上一单元中创建的自定义角色,因此请不要删除自定义角色。 我们先来谈一谈如何删除自定义角色。

删除角色分配

如果确定不再需要自定义角色,需要先删除角色分配,再删除该角色。

在 Azure 门户中,转到自定义角色的范围应用到的订阅、资源组或资源,就可以删除分配。 然后,转到“访问控制 (IAM)”>“角色分配”。 按角色名进行筛选,选择分配给该角色的所有用户,然后选择“删除”。

在 Azure CLI 中,使用带有自定义角色名称的以下命令:

   az role assignment delete --role "role name"

在 Azure PowerShell 中,使用 Remove-AzRoleAssignment cmdlet。 命令外观可能类似以下内容:

Remove-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionName "role name" -Scope /subscriptions/<subscription_id>

ObjectID 是用户、组或服务主体的 Azure AD ObjectId。

删除自定义角色

可使用 Azure 门户、Azure CLI 或 Azure PowerShell 删除自定义角色。

在 Azure 门户中,转到自定义角色范围应用到的订阅、资源组或资源,然后转到“访问控制(IAM)”>“角色”。 要查找角色,请选择“类型”>“CustomRole”。

显示在下拉列表中选定“CustomRole”的屏幕截图。

选择角色,然后选择“删除”。

在下个单元中,使用 Azure CLI 通过以下命令删除自定义角色:

az role definition delete --name "role name"

在 PowerShell 中,使用以下命令删除角色:

Get-AzRoleDefinition "role name" | Remove-AzRoleDefinition

知识检查

1.

用于更新自定义角色的 Azure PowerShell cmdlet 是什么?

2.

删除自定义角色的步骤是什么?