チュートリアル: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
User
(RBAC チュートリアル ユーザー)
Reader サブスクリプション
User
(RBAC チュートリアル ユーザー)
Contributor Resource group
(rbac-tutorial-resource-group)

Role assignments for a user

ユーザーの作成

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

  1. Azure Cloud Shell で、パスワードの複雑さの要件に準拠したパスワードを作成します。

    $PasswordProfile = @{ Password = "<Password>" }
    
  2. New-MgUser コマンドを使用して、ドメインの新規ユーザーを作成します。

    New-MgUser -DisplayName "RBAC Tutorial User" -PasswordProfile $PasswordProfile `
       -UserPrincipalName "rbacuser@example.com" -AccountEnabled:$true -MailNickName "rbacuser"
    
    DisplayName        Id                                   Mail UserPrincipalName
    -----------        --                                   ---- -----------------
    RBAC Tutorial User 11111111-1111-1111-1111-111111111111      rbacuser@example.com
    

リソース グループを作成する

リソース グループを使用して、リソース グループ スコープでロールを割り当てる方法を示すことができます。

  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-AzSubscription コマンドを使用して、サブスクリプションの ID を取得します。

    Get-AzSubscription
    
    Name     : Pay-As-You-Go
    Id       : 00000000-0000-0000-0000-000000000000
    TenantId : 22222222-2222-2222-2222-222222222222
    State    : Enabled
    
  2. サブスクリプション スコープを変数に保存します。

    $subScope = "/subscriptions/00000000-0000-0000-0000-000000000000"
    
  3. 閲覧者ロールをサブスクリプション スコープでユーザーに割り当てます。

    New-AzRoleAssignment -SignInName rbacuser@example.com `
      -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 User
    SignInName         : rbacuser@example.com
    RoleDefinitionName : Reader
    RoleDefinitionId   : acdd72a7-3385-48ef-bd42-f606fba81ae7
    ObjectId           : 11111111-1111-1111-1111-111111111111
    ObjectType         : User
    CanDelegate        : False
    
  4. 共同作成者ロールをリソース グループ スコープでユーザーに割り当てます。

    New-AzRoleAssignment -SignInName rbacuser@example.com `
      -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 User
    SignInName         : rbacuser@example.com
    RoleDefinitionName : Contributor
    RoleDefinitionId   : b24988ac-6180-42a0-ab88-20f7382dd24c
    ObjectId           : 11111111-1111-1111-1111-111111111111
    ObjectType         : User
    CanDelegate        : False
    

アクセス権の表示

  1. サブスクリプションのアクセス権を確認するには、Get-AzRoleAssignment コマンドを使用して、ロールの割り当てを一覧表示します。

    Get-AzRoleAssignment -SignInName rbacuser@example.com -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 User
    SignInName         : rbacuser@example.com
    RoleDefinitionName : Reader
    RoleDefinitionId   : acdd72a7-3385-48ef-bd42-f606fba81ae7
    ObjectId           : 11111111-1111-1111-1111-111111111111
    ObjectType         : User
    CanDelegate        : False
    

    出力では、閲覧者ロールが、サブスクリプション スコープで RBAC チュートリアル ユーザーに割り当てられていることを確認できます。

  2. リソース グループのアクセス権を確認するには、Get-AzRoleAssignment コマンドを使用して、ロールの割り当てを一覧表示します。

    Get-AzRoleAssignment -SignInName rbacuser@example.com -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 User
    SignInName         : rbacuser@example.com
    RoleDefinitionName : Contributor
    RoleDefinitionId   : b24988ac-6180-42a0-ab88-20f7382dd24c
    ObjectId           : 11111111-1111-1111-1111-111111111111
    ObjectType         : User
    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 User
    SignInName         : rbacuser@example.com
    RoleDefinitionName : Reader
    RoleDefinitionId   : acdd72a7-3385-48ef-bd42-f606fba81ae7
    ObjectId           : 11111111-1111-1111-1111-111111111111
    ObjectType         : User
    CanDelegate        : False
    

    出力では、共同作成者ロールと閲覧者ロールの両方が、RBAC チュートリアル ユーザーに割り当てられていることを確認できます。 共同作成者ロールは rbac-tutorial-resource-group スコープです。また、閲覧者ロールは、サブスクリプション スコープに継承されます。

(省略可能) Azure portal を使用したアクセス権の表示

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

    Role assignments for a user at subscription scope

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

    Role assignments for a user at resource group scope

アクセス権の削除

ユーザー、グループ、アプリケーションのアクセス権を削除するには、Remove-AzRoleAssignment を使用して、ロールの割り当てを削除します。

  1. 次のコマンドを使用して、リソース グループ スコープでユーザーの共同作成者ロールの割り当てを削除します。

    Remove-AzRoleAssignment -SignInName rbacuser@example.com `
      -RoleDefinitionName "Contributor" `
      -ResourceGroupName "rbac-tutorial-resource-group"
    
  2. 次のコマンドを使用して、サブスクリプション スコープでユーザーの閲覧者ロールの割り当てを削除します。

    Remove-AzRoleAssignment -SignInName rbacuser@example.com `
      -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-MgUser コマンドを使用して、ユーザーを削除します。

    $User = Get-MgUser -Filter "DisplayName eq 'RBAC Tutorial User'"
    Remove-MgUser -UserId $User.Id
    

次のステップ