你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Bicep 创建或更新 Azure 自定义角色
如果 Azure 内置角色不满足组织的特定需求,你可以创建自己的自定义角色。 本文介绍如何使用 Bicep 创建或更新自定义角色。
Bicep 是一种特定于域的语言 (DSL),使用声明性语法来部署 Azure 资源。 它提供简明的语法、可靠的类型安全性以及对代码重用的支持。 Bicep 会针对你的 Azure 基础结构即代码解决方案提供最佳创作体验。
若要创建自定义角色,请指定角色名称、角色权限以及可使用角色的位置。 在本文中,你将创建一个名为“自定义角色 - RG 读者”的角色,其资源权限可在订阅或更低层次的范围内分配。
先决条件
若要创建自定义角色,必须拥有创建自定义角色的权限,例如用户访问权限管理员。
还必须拥有一个有效的 Azure 订阅。 如果没有,可以在开始之前创建一个免费帐户。
查阅 Bicep 文件
本文中使用的 Bicep 文件来自 Azure 快速入门模板。 Bicep 文件具有四个参数和一个资源部分。 这四个参数为:
- 默认值为
["Microsoft.Resources/subscriptions/resourceGroups/read"]
的操作数组。 - 默认值为空的
notActions
数组。 - 默认值为
Custom Role - RG Reader
的角色名称。 - 默认值为
Subscription Level Deployment of a Role Definition
的角色说明。
将可分配此自定义角色的范围设置为当前订阅。
自定义角色需要唯一 ID。 可以使用 guid() 函数生成 ID。 由于自定义角色还需要租户的唯一显示名称,因此可以使用角色名称作为 guid()
函数的参数来创建确定性 GUID。 如果以后需要使用同一 Bicep 文件更新自定义角色,则确定性 GUID 非常有用。
targetScope = 'subscription'
@description('Array of actions for the roleDefinition')
param actions array = [
'Microsoft.Resources/subscriptions/resourceGroups/read'
]
@description('Array of notActions for the roleDefinition')
param notActions array = []
@description('Friendly name of the role definition')
param roleName string = 'Custom Role - RG Reader'
@description('Detailed description of the role definition')
param roleDescription string = 'Subscription Level Deployment of a Role Definition'
var roleDefName = guid(roleName)
resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
name: roleDefName
properties: {
roleName: roleName
description: roleDescription
type: 'customRole'
permissions: [
{
actions: actions
notActions: notActions
}
]
assignableScopes: [
subscription().id
]
}
}
Bicep 文件中定义了以下资源:
部署 Bicep 文件
将该 Bicep 文件另存为本地计算机上的 main.bicep。
使用 roleDefinition 的操作创建名为 myActions 的变量。
$myActions='["Microsoft.Resources/subscriptions/resourceGroups/read"]'
使用 Azure CLI 或 Azure PowerShell 来部署该 Bicep 文件。
az deployment sub create --location eastus --name customRole --template-file ./main.bicep --parameters actions=$myActions
部署完成后,应会看到一条指出部署成功的消息。
查看已部署的资源
使用 Azure 门户、Azure CLI 或 Azure PowerShell 验证是否已创建自定义角色。
az role definition list --name "Custom Role - RG Reader"
更新自定义角色
与创建自定义角色类似,可以使用 Bicep 来更新现有的自定义角色。 若要更新自定义角色,需要指定需要更新的角色。 如果以前在 Bicep 中创建了具有确定性的唯一角色 ID 的自定义角色,则可以使用相同的 Bicep 文件并仅使用显示名称来指定自定义角色。
指定更新的操作。
$myActions='["Microsoft.Resources/resources/read","Microsoft.Resources/subscriptions/resourceGroups/read"]'
使用 Azure CLI 或 Azure PowerShell 更新自定义角色。
az deployment sub create --location eastus --name customrole --template-file ./main.bicep --parameters actions=$myActions roleName="Custom Role - RG Reader"
注意
可能需要几分钟时间才能传播更新的自定义角色。
清理资源
如果不再需要自定义角色,请使用 Azure 门户、Azure CLI 或 Azure PowerShell 将其移除。
az role definition delete --name "Custom Role - RG Reader"