你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:使用 Azure CLI 创建 Azure 自定义角色
如果 Azure 内置角色不满足组织的特定需求,你可以创建自己的自定义角色。 对于本教程,你将使用 Azure CLI 创建名为 Reader Support Tickets 的自定义角色。 该自定义角色让用户可在订阅的控制平面中查看所有内容,以及创建支持票证。
在本教程中,你将了解如何执行以下操作:
- 创建自定义角色
- 列出自定义角色
- 更新自定义角色
- 删除自定义角色
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
先决条件
若要完成本教程,需要:
- 创建自定义角色的权限,例如用户访问管理员istrator
- Azure Cloud Shell 或 Azure CLI
登录 Azure CLI
登录到 Azure CLI。
创建自定义角色
创建自定义角色的最简单方法是从 JSON 模板着手,添加你的更改,然后创建新角色。
查看适用于 Microsoft.Support 资源提供程序的操作列表。 这有助于了解可用来创建你的权限的操作。
操作 说明 Microsoft.Support/register/action 注册到支持资源提供程序 Microsoft.Support/supportTickets/read 获取支持票证详细信息(包括状态、严重性、联系详细信息和通信),或获取各个订阅中的支持票证列表。 Microsoft.Support/supportTickets/write 创建或更新支持票证。 可以针对技术、计费、配额或订阅管理相关的问题创建支持票证。 可以更新现有支持票证的严重性、联系详细信息和通信。 创建一个名为 ReaderSupportRole.json 的新文件。
在编辑器中打开 ReaderSupportRole.json 并添加以下 JSON。
有关不同属性的信息,请参阅 Azure 自定义角色。
{ "Name": "", "IsCustom": true, "Description": "", "Actions": [], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/{subscriptionId1}" ] }
将以下操作添加到
Actions
属性。 这些操作允许用户查看订阅中的所有内容,以及创建支持票证。"*/read", "Microsoft.Support/*"
使用 az account list 命令获取你的订阅 ID。
az account list --output table
在
AssignableScopes
中,将{subscriptionId1}
替换为你的订阅 ID。必须添加显式的订阅 ID,否则将不允许将角色导入到订阅中。
将
Name
和Description
属性更改为 "Reader Support Tickets" 和 "View everything in the subscription and also open support tickets"。JSON 文件应如下所示:
{ "Name": "Reader Support Tickets", "IsCustom": true, "Description": "View everything in the subscription and also open support tickets.", "Actions": [ "*/read", "Microsoft.Support/*" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/00000000-0000-0000-0000-000000000000" ] }
若要新建自定义角色,请使用 az role definition create 命令,并指定 JSON 角色定义文件。
az role definition create --role-definition "~/CustomRoles/ReaderSupportRole.json"
{ "additionalProperties": {}, "assignableScopes": [ "/subscriptions/00000000-0000-0000-0000-000000000000" ], "description": "View everything in the subscription and also open support tickets.", "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222", "name": "22222222-2222-2222-2222-222222222222", "permissions": [ { "actions": [ "*/read", "Microsoft.Support/*" ], "additionalProperties": {}, "dataActions": [], "notActions": [], "notDataActions": [] } ], "roleName": "Reader Support Tickets", "roleType": "CustomRole", "type": "Microsoft.Authorization/roleDefinitions" }
现在,新的自定义角色可用,并可分配给用户、组或服务主体,就像内置角色一样。
列出自定义角色
若要列出所有自定义角色,请使用 az role definition list 命令及
--custom-role-only
参数。az role definition list --custom-role-only true
[ { "additionalProperties": {}, "assignableScopes": [ "/subscriptions/00000000-0000-0000-0000-000000000000" ], "description": "View everything in the subscription and also open support tickets.", "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222", "name": "22222222-2222-2222-2222-222222222222", "permissions": [ { "actions": [ "*/read", "Microsoft.Support/*", "Microsoft.Resources/deployments/*", "Microsoft.Insights/diagnosticSettings/*/read" ], "additionalProperties": {}, "dataActions": [], "notActions": [], "notDataActions": [] } ], "roleName": "Reader Support Tickets", "roleType": "CustomRole", "type": "Microsoft.Authorization/roleDefinitions" } ]
还可以在 Azure 门户中查看自定义角色。
更新自定义角色
若要更新自定义角色,请更新 JSON 文件,然后更新自定义角色。
打开 ReaderSupportRole.json 文件。
在
Actions
中,添加用于创建和管理资源组部署"Microsoft.Resources/deployments/*"
的操作。 请确保在上一操作后包括一个逗号。更新后的 JSON 文件应如下所示:
{ "Name": "Reader Support Tickets", "IsCustom": true, "Description": "View everything in the subscription and also open support tickets.", "Actions": [ "*/read", "Microsoft.Support/*", "Microsoft.Resources/deployments/*" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/00000000-0000-0000-0000-000000000000" ] }
若要更新自定义角色,请使用 az role definition update 命令并指定更新后的 JSON 文件。
az role definition update --role-definition "~/CustomRoles/ReaderSupportRole.json"
{ "additionalProperties": {}, "assignableScopes": [ "/subscriptions/00000000-0000-0000-0000-000000000000" ], "description": "View everything in the subscription and also open support tickets.", "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222", "name": "22222222-2222-2222-2222-222222222222", "permissions": [ { "actions": [ "*/read", "Microsoft.Support/*", "Microsoft.Resources/deployments/*" ], "additionalProperties": {}, "dataActions": [], "notActions": [], "notDataActions": [] } ], "roleName": "Reader Support Tickets", "roleType": "CustomRole", "type": "Microsoft.Authorization/roleDefinitions" }
删除自定义角色
使用 az role definition delete 命令并指定角色名称或角色 ID 来删除自定义角色。
az role definition delete --name "Reader Support Tickets"