チュートリアル:Azure PowerShell を使用して Azure リソースへのアクセス権をグループに付与する

Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure のリソースに対するアクセスを管理するための手法です。 このチュートリアルでは、Azure PowerShell を使用して、サブスクリプション内のすべてを表示し、リソース グループ内のすべてを管理するためのアクセス権をグループに付与します。

このチュートリアルでは、以下の内容を学習します。

  • さまざまなスコープでのグループへのアクセス権の付与
  • アクセス権の表示
  • アクセス権の削除

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

Note

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

前提条件

このチュートリアルを完了するには、次の要件があります。

ロールの割り当て

Azure RBAC でアクセス権を付与するには、ロールの割り当てを作成します。 ロールの割り当ては、セキュリティ プリンシパル、ロールの定義、スコープの 3 つの要素で構成されています。 このチュートリアルで実行するロールの割り当ては次の 2 つです。

セキュリティ プリンシパル ロール定義 Scope
グループ
(RBAC チュートリアル グループ)
Reader サブスクリプション
グループ
(RBAC チュートリアル グループ)
Contributor Resource group
(rbac-tutorial-resource-group)

Role assignments for a group

グループの作成

ロールを割り当てるには、ユーザー、グループ、またはサービス プリンシパルが必要です。 グループがない場合は、作成します。

  • Azure Cloud Shell で、New-MgGroup コマンドを使用して、新しいグループを作成します。

    New-MgGroup -DisplayName "RBAC Tutorial Group" -MailEnabled:$false `
        -SecurityEnabled:$true -MailNickName "NotSet"
    
    DisplayName         Id                                   MailNickname Description GroupTypes
    -----------         --                                   ------------ ----------- ----------
    RBAC Tutorial Group 11111111-1111-1111-1111-111111111111 NotSet                   {}
    

グループを作成するアクセス許可がない場合は、代わりに「チュートリアル: 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-MgGroup コマンドを使用して、グループのオブジェクト ID を取得します。

    Get-MgGroup -Filter "DisplayName eq 'RBAC Tutorial Group'"
    
    DisplayName         Id                                   MailNickname Description GroupTypes
    -----------         --                                   ------------ ----------- ----------
    RBAC Tutorial Group 11111111-1111-1111-1111-111111111111 NotSet                   {}
    
  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 portal を使用したアクセス権の表示

  1. Azure portal で、ロールの割り当てがどのように表示されるかを確認するには、サブスクリプションの [アクセス制御 (IAM)] ブレードを表示します。

    Role assignments for a group at subscription scope

  2. リソース グループの [アクセス制御 (IAM)] ブレードを表示します。

    Role assignments for a group at resource group scope

アクセス権の削除

ユーザー、グループ、アプリケーションのアクセス権を削除するには、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-MgGroup コマンドを使用して、グループを削除します。

    Remove-MgGroup -GroupID $groupId
    

    グループを削除しようしたときにエラーが発生する場合は、ポータルでもグループを削除できます。

次のステップ