您现在访问的是微软AZURE全睃版技术文档网站,若需覝访问由世纪互蝔违蝥的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

教程:使用 Azure PowerShell 授予组对 Azure 资源的访问权限

可以通过 Azure 基于角色的访问控制 (Azure RBAC) 管理对 Azure 资源的访问权限。 在本教程中,请授予组访问权限,以便通过 Azure PowerShell 查看订阅中的所有内容并管理资源组中的一切。

在本教程中,你将了解如何执行以下操作:

  • 在不同范围授予组访问权限
  • 列出访问权限
  • 删除访问权限

如果没有 Azure 订阅,请在开始之前创建一个免费帐户

备注

本文已经过更新,以便使用 Azure Az PowerShell 模块。 若要与 Azure 交互,建议使用的 PowerShell 模块是 Az PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

先决条件

若要完成本教程,需要:

  • 在 Azure Active Directory 中创建组的权限(或者有现成的组)
  • Azure Cloud Shell

角色分配

在 Azure RBAC 中,若要授予访问权限,请创建角色分配。 角色分配包含三个要素:安全主体、角色订阅和范围。 下面是两个将要在本教程中执行的角色分配:

安全主体 角色定义 范围

(RBAC 教程组)
读者 订阅

(RBAC 教程组)
参与者 资源组
(rbac-tutorial-resource-group)

组的角色分配

创建组

若要分配角色,需要一个用户、组或服务主体。 如果还没有组,可以创建一个。

  • 在 Azure Cloud Shell 中,使用 New-AzureADGroup 命令创建一个新的组。

    New-AzureADGroup -DisplayName "RBAC Tutorial Group" `
       -MailEnabled $false -SecurityEnabled $true -MailNickName "NotSet"
    
    ObjectId                             DisplayName         Description
    --------                             -----------         -----------
    11111111-1111-1111-1111-111111111111 RBAC Tutorial Group
    

如果你无权创建组,可以尝试改用教程:使用 Azure PowerShell 授予用户对 Azure 资源的访问权限

创建资源组

请使用资源组来演示如何在资源组范围分配角色。

  1. 使用 Get-AzLocation 命令获取区域位置的列表。

    Get-AzLocation | select Location
    
  2. 选择附近的一个位置,将其分配给某个变量。

    $location = "westus"
    
  3. 使用 New-AzResourceGroup 命令创建新的资源组。

    New-AzResourceGroup -Name "rbac-tutorial-resource-group" -Location $location
    
    ResourceGroupName : rbac-tutorial-resource-group
    Location          : westus
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rbac-tutorial-resource-group
    

授予访问权限

若要为组授予访问权限,请使用 New-AzRoleAssignment 命令分配一个角色。 必须指定安全主体、角色定义和范围。

  1. 使用 Get-AzureADGroup 命令获取组的对象 ID。

    Get-AzureADGroup -SearchString "RBAC Tutorial Group"
    
    ObjectId                             DisplayName         Description
    --------                             -----------         -----------
    11111111-1111-1111-1111-111111111111 RBAC Tutorial Group
    
  2. 在变量中保存组对象 ID。

    $groupId = "11111111-1111-1111-1111-111111111111"
    
  3. 使用 Get-AzSubscription 命令获取订阅的 ID。

    Get-AzSubscription
    
    Name     : Pay-As-You-Go
    Id       : 00000000-0000-0000-0000-000000000000
    TenantId : 22222222-2222-2222-2222-222222222222
    State    : Enabled
    
  4. 在变量中保存订阅范围。

    $subScope = "/subscriptions/00000000-0000-0000-0000-000000000000"
    
  5. 读者角色分配给订阅范围内的组。

    New-AzRoleAssignment -ObjectId $groupId `
      -RoleDefinitionName "Reader" `
      -Scope $subScope
    
    RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/44444444-4444-4444-4444-444444444444
    Scope              : /subscriptions/00000000-0000-0000-0000-000000000000
    DisplayName        : RBAC Tutorial Group
    SignInName         :
    RoleDefinitionName : Reader
    RoleDefinitionId   : acdd72a7-3385-48ef-bd42-f606fba81ae7
    ObjectId           : 11111111-1111-1111-1111-111111111111
    ObjectType         : Group
    CanDelegate        : False
    
  6. 参与者角色分配给资源组范围内的组。

    New-AzRoleAssignment -ObjectId $groupId `
      -RoleDefinitionName "Contributor" `
      -ResourceGroupName "rbac-tutorial-resource-group"
    
    RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rbac-tutorial-resource-group/providers/Microsoft.Authorization/roleAssignments/33333333-3333-3333-3333-333333333333
    Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rbac-tutorial-resource-group
    DisplayName        : RBAC Tutorial Group
    SignInName         :
    RoleDefinitionName : Contributor
    RoleDefinitionId   : b24988ac-6180-42a0-ab88-20f7382dd24c
    ObjectId           : 11111111-1111-1111-1111-111111111111
    ObjectType         : Group
    CanDelegate        : False
    

列出访问权限

  1. 若要验证订阅的访问权限,请使用 Get-AzRoleAssignment 命令列出角色分配。

    Get-AzRoleAssignment -ObjectId $groupId -Scope $subScope
    
    RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/22222222-2222-2222-2222-222222222222
    Scope              : /subscriptions/00000000-0000-0000-0000-000000000000
    DisplayName        : RBAC Tutorial Group
    SignInName         :
    RoleDefinitionName : Reader
    RoleDefinitionId   : acdd72a7-3385-48ef-bd42-f606fba81ae7
    ObjectId           : 11111111-1111-1111-1111-111111111111
    ObjectType         : Group
    CanDelegate        : False
    

    在输出中,可以看到“读者”角色已分配给订阅范围的“RBAC 教程组”。

  2. 若要验证资源组的访问权限,请使用 Get-AzRoleAssignment 命令列出角色分配。

    Get-AzRoleAssignment -ObjectId $groupId -ResourceGroupName "rbac-tutorial-resource-group"
    
    RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rbac-tutorial-resource-group/providers/Microsoft.Authorization/roleAssignments/33333333-3333-3333-3333-333333333333
    Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rbac-tutorial-resource-group
    DisplayName        : RBAC Tutorial Group
    SignInName         :
    RoleDefinitionName : Contributor
    RoleDefinitionId   : b24988ac-6180-42a0-ab88-20f7382dd24c
    ObjectId           : 11111111-1111-1111-1111-111111111111
    ObjectType         : Group
    CanDelegate        : False
    
    RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/22222222-2222-2222-2222-222222222222
    Scope              : /subscriptions/00000000-0000-0000-0000-000000000000
    DisplayName        : RBAC Tutorial Group
    SignInName         :
    RoleDefinitionName : Reader
    RoleDefinitionId   : acdd72a7-3385-48ef-bd42-f606fba81ae7
    ObjectId           : 11111111-1111-1111-1111-111111111111
    ObjectType         : Group
    CanDelegate        : False
    

    在输出中,可以看到“参与者”角色和“读者”角色已分配给“RBAC 教程组”。 “参与者”角色处于 rbac-tutorial-resource-group 范围,“读者”角色在订阅范围继承。

(可选)使用 Azure 门户列出访问权限

  1. 若要查看角色分配在 Azure 门户中的显示情况,请查看“访问控制(IAM)”边栏选项卡,以了解相关订阅。

    组在订阅范围的角色分配

  2. 查看“访问控制(IAM)”边栏选项卡,了解相关资源组。

    组在资源组范围的角色分配

删除访问权限

若要删除用户、组和应用程序的访问权限,请使用 Remove-AzRoleAssignment 删除角色分配。

  1. 使用以下命令,删除组在资源组范围的“参与者”角色分配。

    Remove-AzRoleAssignment -ObjectId $groupId `
      -RoleDefinitionName "Contributor" `
      -ResourceGroupName "rbac-tutorial-resource-group"
    
  2. 使用以下命令,删除组在订阅范围的“读者”角色分配。

    Remove-AzRoleAssignment -ObjectId $groupId `
      -RoleDefinitionName "Reader" `
      -Scope $subScope
    

清理资源

若要清理本教程创建的资源,请删除资源组和组。

  1. 使用 Remove-AzResourceGroup 命令删除资源组。

    Remove-AzResourceGroup -Name "rbac-tutorial-resource-group"
    
    Confirm
    Are you sure you want to remove resource group 'rbac-tutorial-resource-group'
    [Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):
    
  2. 系统要求确认时,请键入“Y”。只需数秒钟即可删除。

  3. 使用 Remove-AzureADGroup 命令删除组。

    Remove-AzureADGroup -ObjectId $groupId
    

    如果在尝试删除组时收到错误,也可在门户中删除组。

后续步骤