管理 Azure 自定义角色
本单元介绍管理 Azure 自定义角色的人员和方式。
谁可以管理自定义角色?
通常,拥有“所有者”或“用户访问管理员”角色的管理员有权创建和管理自定义角色。 默认情况下,这些角色对所有角色分配范围具有 Microsoft.Authorization/roleDefinitions/write
权限。 创建、删除或更新自定义角色需要该权限。
AssignableScopes 下的自定义角色定义中定义了角色分配范围。 如第 2 单元所述,AssignableScopes 可能是一个或多个订阅、资源组或资源。
下表列出了创建、删除、更新或查看自定义角色所需的权限。 要管理自定义角色,你需要分配有角色定义中具有相关 Actions 和 AssignableScopes 的角色。
任务 | 操作 | 描述 |
---|---|---|
创建/删除 | 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”。
选择角色,然后选择“删除”。
在下个单元中,使用 Azure CLI 通过以下命令删除自定义角色:
az role definition delete --name "role name"
在 PowerShell 中,使用以下命令删除角色:
Get-AzRoleDefinition "role name" | Remove-AzRoleDefinition