チュートリアル:RBAC と Azure PowerShell を使用して Azure リソースへのアクセス権をユーザーに付与するTutorial: Grant a user access to Azure resources using RBAC and Azure PowerShell

ロールベースのアクセス制御 (RBAC) は、Azure のリソースに対するアクセス権を管理するための手法です。Role-based access control (RBAC) is the way that you manage access to Azure resources. このチュートリアルでは、Azure PowerShell を使用して、サブスクリプション内のすべてを表示し、リソース グループ内のすべてを管理するためのアクセス権をユーザーに付与します。In this tutorial, you grant a user access to view everything in a subscription and manage everything in a resource group using Azure PowerShell.

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • さまざまなスコープでのユーザーへのアクセス権の付与Grant access for a user at different scopes
  • アクセス権の表示List access
  • アクセス権の削除Remove access

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。If you don't have an Azure subscription, create a free account before you begin.

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

前提条件Prerequisites

このチュートリアルを完了するには、以下が必要です。To complete this tutorial, you will need:

  • Azure Active Directory でユーザーを作成する (または既存のユーザーを所有する) ためのアクセス許可Permissions to create users in Azure Active Directory (or have an existing user)
  • Azure Cloud ShellAzure Cloud Shell

ロールの割り当てRole assignments

RBAC では、アクセス権を付与するには、ロールの割り当てを作成する必要があります。In RBAC, to grant access, you create a role assignment. ロールの割り当ては、セキュリティ プリンシパル、ロールの定義、スコープの 3 つの要素で構成されています。A role assignment consists of three elements: security principal, role definition, and scope. このチュートリアルで実行するロールの割り当ては次の 2 つです。Here are the two role assignments you will perform in this tutorial:

セキュリティ プリンシパルSecurity principal ロール定義Role definition Scope (スコープ)Scope
UserUser
(RBAC チュートリアル ユーザー)(RBAC Tutorial User)
ReaderReader サブスクリプションSubscription
UserUser
(RBAC チュートリアル ユーザー)(RBAC Tutorial User)
ContributorContributor リソース グループResource group
(rbac-tutorial-resource-group)(rbac-tutorial-resource-group)

ユーザーのロールの割り当て

ユーザーの作成Create a user

ロールを割り当てるには、ユーザー、グループ、またはサービス プリンシパルが必要です。To assign a role, you need a user, group, or service principal. ユーザーがない場合は、作成します。If you don't already have a user, you can create one.

  1. Azure Cloud Shell で、パスワードの複雑さの要件に準拠したパスワードを作成します。In Azure Cloud Shell, create a password that complies with your password complexity requirements.

    $PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
    $PasswordProfile.Password = "Password"
    
  2. New-AzureADUser コマンドを使用して、ご自身のドメインのユーザーを新しく作成します。Create a new user for your domain using the New-AzureADUser command.

    New-AzureADUser -DisplayName "RBAC Tutorial User" -PasswordProfile $PasswordProfile `
      -UserPrincipalName "rbacuser@example.com" -AccountEnabled $true -MailNickName "rbacuser"
    
    ObjectId                             DisplayName        UserPrincipalName    UserType
    --------                             -----------        -----------------    --------
    11111111-1111-1111-1111-111111111111 RBAC Tutorial User rbacuser@example.com Member
    

リソース グループの作成Create a resource group

リソース グループを使用して、リソース グループ スコープでロールを割り当てる方法を示すことができます。You use a resource group to show how to assign a role at a resource group scope.

  1. Get-AzLocation コマンドを使用して、リージョンの場所の一覧を取得します。Get a list of region locations using the Get-AzLocation command.

    Get-AzLocation | select Location
    
  2. 近くの場所を選択し、変数に割り当てます。Select a location near you and assign it to a variable.

    $location = "westus"
    
  3. New-AzResourceGroup コマンドを使用して、新しいリソース グループを作成します。Create a new resource group using the New-AzResourceGroup command.

    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
    

アクセス権の付与Grant access

ユーザーにアクセス権を付与するには、New-AzRoleAssignment コマンドを使用してロールを割り当てます。To grant access for the user, you use the New-AzRoleAssignment command to assign a role. セキュリティ プリンシパル、ロールの定義、およびスコープを指定する必要があります。You must specify the security principal, role definition, and scope.

  1. Get-AzSubscription コマンドを使用して、サブスクリプションの ID を取得します。Get the ID of your subscription using the Get-AzSubscription command.

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

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

    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. 共同作成者ロールをリソース グループ スコープでユーザーに割り当てます。Assign the Contributor role to the user at the resource group scope.

    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
    

アクセス権の表示List access

  1. サブスクリプションのアクセス権を確認するには、Get-AzRoleAssignment コマンドを使用して、ロールの割り当てを一覧表示します。To verify the access for the subscription, use the Get-AzRoleAssignment command to list the role assignments.

    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 チュートリアル ユーザーに割り当てられていることを確認できます。In the output, you can see that the Reader role has been assigned to the RBAC Tutorial User at the subscription scope.

  2. リソース グループのアクセス権を確認するには、Get-AzRoleAssignment コマンドを使用して、ロールの割り当てを一覧表示します。To verify the access for the resource group, use the Get-AzRoleAssignment command to list the role assignments.

    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 チュートリアル ユーザーに割り当てられていることを確認できます。In the output, you can see that both the Contributor and Reader roles have been assigned to the RBAC Tutorial User. 共同作成者ロールは rbac-tutorial-resource-group スコープです。また、閲覧者ロールは、サブスクリプション スコープに継承されます。The Contributor role is at the rbac-tutorial-resource-group scope and the Reader role is inherited at the subscription scope.

(省略可能) Azure portal を使用したアクセス権の表示(Optional) List access using the Azure Portal

  1. Azure portal で、ロールの割り当てがどのように表示されるかを確認するには、サブスクリプションの [アクセス制御 (IAM)] ブレードを表示します。To see how the role assignments look in the Azure portal, view the Access control (IAM) blade for the subscription.

    サブスクリプション スコープでのユーザーのロールの割り当て

  2. リソース グループの [アクセス制御 (IAM)] ブレードを表示します。View the Access control (IAM) blade for the resource group.

    リソース グループ スコープでのユーザーのロールの割り当て

アクセス権の削除Remove access

ユーザー、グループ、アプリケーションのアクセス権を削除するには、Remove-AzRoleAssignment を使用して、ロールの割り当てを削除します。To remove access for users, groups, and applications, use Remove-AzRoleAssignment to remove a role assignment.

  1. 次のコマンドを使用して、リソース グループ スコープでユーザーの共同作成者ロールの割り当てを削除します。Use the following command to remove the Contributor role assignment for the user at the resource group scope.

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

    Remove-AzRoleAssignment -SignInName rbacuser@example.com `
      -RoleDefinitionName "Reader" `
      -Scope $subScope
    

リソースのクリーンアップClean up resources

このチュートリアルで作成したリソースをクリーンアップするには、リソース グループとユーザーを削除します。To clean up the resources created by this tutorial, delete the resource group and the user.

  1. Remove-AzResourceGroup コマンドを使用して、リソース グループを削除します。Delete the resource group using the Remove-AzResourceGroup command.

    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」と入力します。削除には数秒かかります。When asked to confirm, type Y. It will take a few seconds to delete.

  3. Remove-AzureADUser コマンドを使用して、ユーザーを削除します。Delete the user using the Remove-AzureADUser command.

    Remove-AzureADUser -ObjectId "rbacuser@example.com"
    

次の手順Next steps