快速入门:使用 Bicep 分配 Azure 角色

可以通过 Azure 基于角色的访问控制 (Azure RBAC) 管理对 Azure 资源的访问权限。 在本快速入门中,你将创建资源组并授予用户在资源组中创建和管理虚拟机的访问权限。 本快速入门使用 Bicep 来授予访问权限。

Bicep 是一种特定于域的语言 (DSL),使用声明性语法来部署 Azure 资源。 它提供简明的语法、可靠的类型安全性以及对代码重用的支持。 Bicep 会针对你的 Azure 基础结构即代码解决方案提供最佳创作体验。

先决条件

若要分配 Azure 角色和删除角色分配,必须满足以下条件:

  • 如果没有 Azure 订阅,可在开始前创建一个试用帐户
  • Microsoft.Authorization/roleAssignments/writeMicrosoft.Authorization/roleAssignments/delete 权限,例如基于角色的访问控制管理员
  • 若要分配角色,必须指定三个要素:安全主体、角色定义和范围。 在本快速入门中,安全主体是你或目录中的其他用户,角色定义是虚拟机参与者,范围是指定的资源组。

查阅 Bicep 文件

本快速入门中使用的 Bicep 文件来自 Azure 快速入门模板。 Bicep 文件具有两个参数和一个资源部分。 请注意,资源部分包含角色分配的三个要素:安全主体、角色定义和作用域。

@description('Specifies the role definition ID used in the role assignment.')
param roleDefinitionID string

@description('Specifies the principal ID assigned to the role.')
param principalId string

var roleAssignmentName= guid(principalId, roleDefinitionID, resourceGroup().id)
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: roleAssignmentName
  properties: {
    roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionID)
    principalId: principalId
  }
}

output name string = roleAssignment.name
output resourceGroupName string = resourceGroup().name
output resourceId string = roleAssignment.id

Bicep 文件中定义了以下资源:

部署 Bicep 文件

  1. 将该 Bicep 文件另存为本地计算机上的 main.bicep。

  2. 使用 Azure CLI 或 Azure PowerShell 来部署该 Bicep 文件。

    az group create --name exampleRG --location chinanorth
    az deployment group create --resource-group exampleRG --template-file main.bicep --parameters roleDefinitionID=9980e02c-c2be-4d73-94e8-173b1dc7cf3c principalId=<principal-id>
    

注意

将 <principal-id> 替换为分配给角色的主体 ID。

部署完成后,应会看到一条指出部署成功的消息。

查看已部署的资源

使用 Azure 门户、Azure CLI 或 Azure PowerShell 列出资源组中已部署的资源。

az role assignment list --resource-group exampleRG

清理资源

如果不再需要角色分配,请使用 Azure 门户、Azure CLI 或 Azure PowerShell 将其移除。 有关详细信息,请参阅删除 Azure 角色分配

使用 Azure 门户、Azure CLI 或 Azure PowerShell 删除资源组。

az group delete --name exampleRG

后续步骤