Azure PowerShell を使用して Azure ロールの割り当てを追加または削除するAdd or remove Azure role assignments using Azure PowerShell

Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure のリソースに対するアクセスを管理するために使用する承認システムです。Azure role-based access control (Azure RBAC) is the authorization system you use to manage access to Azure resources. アクセス権を付与するには、特定のスコープでユーザー、グループ、サービス プリンシパル、またはマネージド ID にロールを割り当てます。To grant access, you assign roles to users, groups, service principals, or managed identities at a particular scope. この記事では、Azure PowerShell を使用してロールを割り当てる方法について説明します。Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure のリソースに対するアクセスを管理するために使用する承認システムです。Azure role-based access control (Azure RBAC) is the authorization system you use to manage access to Azure resources. アクセス権を付与するには、特定のスコープでユーザー、グループ、サービス プリンシパル、またはマネージド ID にロールを割り当てます。To grant access, you assign roles to users, groups, service principals, or managed identities at a particular scope. This article describes how to assign roles using Azure PowerShell.

注意

この記事は、新しい 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 add or remove role assignments, you must have:

オブジェクト ID を取得するGet object IDs

ロールの割り当てを追加または削除するには、オブジェクトの一意の ID の指定が必要になることがあります。To add or remove role assignments, you might need to specify the unique ID of an object. ID の形式は 11111111-1111-1111-1111-111111111111 です。The ID has the format: 11111111-1111-1111-1111-111111111111. この ID は、Azure portal または Azure PowerShell を使用して取得できます。You can get the ID using the Azure portal or Azure PowerShell.

UserUser

Azure AD ユーザーのオブジェクト ID を取得するには、Get-AzADUser を使用できます。To get the object ID for an Azure AD user, you can use Get-AzADUser.

Get-AzADUser -StartsWith <string_in_quotes>
(Get-AzADUser -DisplayName <name_in_quotes>).id

グループGroup

Azure AD グループのオブジェクト ID を取得するには、Get-AzADGroup を使用できます。To get the object ID for an Azure AD group, you can use Get-AzADGroup.

Get-AzADGroup -SearchString <group_name_in_quotes>
(Get-AzADGroup -DisplayName <group_name_in_quotes>).id

ApplicationApplication

Azure AD サービス プリンシパルのオブジェクト ID (アプリケーションによって使用される ID) を取得するには、Get-AzADServicePrincipal を使用できます。To get the object ID for an Azure AD service principal (identity used by an application), you can use Get-AzADServicePrincipal. サービス プリンシパルの場合は、アプリケーション ID ではなく、オブジェクト ID を使用します。For a service principal, use the object ID and not the application ID.

Get-AzADServicePrincipal -SearchString <service_name_in_quotes>
(Get-AzADServicePrincipal -DisplayName <service_name_in_quotes>).id

ロールの割り当てを追加するAdd a role assignment

Azure RBAC でアクセス権を付与するには、ロールの割り当てを追加します。In Azure RBAC, to grant access, you add a role assignment.

リソース グループをスコープとするユーザーUser at a resource group scope

リソース グループのスコープでユーザーにロールの割り当てを追加するには、New-AzRoleAssignment を使用します。To add a role assignment for a user at a resource group scope, use New-AzRoleAssignment.

New-AzRoleAssignment -SignInName <email_or_userprincipalname> -RoleDefinitionName <role_name> -ResourceGroupName <resource_group_name>
PS C:\> New-AzRoleAssignment -SignInName alain@example.com -RoleDefinitionName "Virtual Machine Contributor" -ResourceGroupName pharma-sales


RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/pr
                     oviders/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Alain Charon
SignInName         : alain@example.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

一意のロール ID の使用Using the unique role ID

ロール名が変更されるときがあります。たとえば次のような場合です。There are a couple of times when a role name might change, for example:

  • 独自のカスタム ロールを使用していて、名前を変更することにした場合。You are using your own custom role and you decide to change the name.
  • 名前に (プレビュー) が含まれるプレビュー ロールを使用している場合。You are using a preview role that has (Preview) in the name. ロールがリリースされると、ロールの名前が変更されます。When the role is released, the role is renamed.

重要

プレビュー バージョンはサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。A preview version is provided without a service level agreement, and it's not recommended for production workloads. 特定の機能はサポート対象ではなく、機能が制限されることがあります。Certain features might not be supported or might have constrained capabilities. 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。For more information, see Supplemental Terms of Use for Microsoft Azure Previews.

ロールの名前が変更される場合でも、ロールの ID は変わりません。Even if a role is renamed, the role ID does not change. スクリプトまたはオートメーションを使用してロールの割り当てを作成する場合は、ロール名ではなく一意のロール ID を使用するのがベスト プラクティスです。If you are using scripts or automation to create your role assignments, it's a best practice to use the unique role ID instead of the role name. そうすれば、ロールの名前が変更されても、スクリプトが動作する可能性が高くなります。Therefore, if a role is renamed, your scripts are more likely to work.

ロール名ではなく一意のロール ID を使用してロールの割り当てを追加するには、New-AzRoleAssignment を使用します。To add a role assignment using the unique role ID instead of the role name, use New-AzRoleAssignment.

New-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionId <role_id> -Scope <resource_group_name/resource/management groups>

次の例では、pharma-sales リソース グループで、alain@example.com ユーザーに仮想マシンの共同作成者ロールを付与します。The following example assigns the Virtual Machine Contributor role to alain@example.com user at the pharma-sales resource group scope. 一意のロール ID を取得するには、Get-AzRoleDefinition を使用するか、「Azure 組み込みロール」を参照してください。To get the unique role ID, you can use Get-AzRoleDefinition or see Azure built-in roles.

PS C:\> New-AzRoleAssignment -ObjectId 44444444-4444-4444-4444-444444444444 -RoleDefinitionId 9980e02c-c2be-4d73-94e8-173b1dc7cf3c -Scope /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Alain Charon
SignInName         : alain@example.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

リソースをスコープとするグループGroup at a resource scope

リソースのスコープでグループにロールの割り当てを追加するには、New-AzRoleAssignment を使用します。To add a role assignment for a group at a resource scope, use New-AzRoleAssignment. グループのオブジェクト ID を取得する方法については、「オブジェクト ID を取得する」を参照してください。For information about how to get the object ID of the group, see Get object IDs.

New-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionName <role_name> -ResourceName <resource_name> -ResourceType <resource_type> -ParentResource <parent resource> -ResourceGroupName <resource_group_name>
PS C:\> Get-AzADGroup -SearchString "Pharma"

SecurityEnabled DisplayName         Id                                   Type
--------------- -----------         --                                   ----
           True Pharma Sales Admins aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa Group

PS C:\> New-AzRoleAssignment -ObjectId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa -RoleDefinitionName "Virtual Machine Contributor" -ResourceName RobertVirtualNetwork -ResourceType Microsoft.Network/virtualNetworks -ResourceGroupName RobertVirtualNetworkResourceGroup

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
                     /providers/Microsoft.Network/virtualNetworks/RobertVirtualNetwork/providers/Microsoft.Authorizat
                     ion/roleAssignments/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
                     /providers/Microsoft.Network/virtualNetworks/RobertVirtualNetwork
DisplayName        : Pharma Sales Admins
SignInName         :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
ObjectType         : Group
CanDelegate        : False

サブスクリプションをスコープとするアプリケーションApplication at a subscription scope

サブスクリプションのスコープでアプリケーションにロールの割り当てを追加するには、New-AzRoleAssignment を使用します。To add a role assignment for an application at a subscription scope, use New-AzRoleAssignment. アプリケーションのオブジェクト ID を取得する方法については、「オブジェクト ID を取得する」を参照してください。For information about how to get the object ID of the application, see Get object IDs.

New-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionName <role_name> -Scope /subscriptions/<subscription_id>
PS C:\> New-AzRoleAssignment -ObjectId 77777777-7777-7777-7777-777777777777 -RoleDefinitionName "Reader" -Scope /subscriptions/00000000-0000-0000-0000-000000000000

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000
DisplayName        : MyApp1
SignInName         :
RoleDefinitionName : Reader
RoleDefinitionId   : acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId           : 77777777-7777-7777-7777-777777777777
ObjectType         : ServicePrincipal
CanDelegate        : False

管理グループをスコープとするユーザーUser at a management group scope

管理グループのスコープでユーザーにロールの割り当てを追加するには、New-AzRoleAssignment を使用します。To add a role assignment for a user at a management group scope, use New-AzRoleAssignment. 管理グループ ID を取得するには、Azure portal の [管理グループ] ブレードで確認するか、Get-AzManagementGroup を使用できます。To get the management group ID, you can find it on the Management groups blade in the Azure portal or you can use Get-AzManagementGroup.

New-AzRoleAssignment -SignInName <email_or_userprincipalname> -RoleDefinitionName <role_name> -Scope /providers/Microsoft.Management/managementGroups/<group_id>
PS C:\> New-AzRoleAssignment -SignInName alain@example.com -RoleDefinitionName "Billing Reader" -Scope /providers/Microsoft.Management/managementGroups/marketing-group

RoleAssignmentId   : /providers/Microsoft.Management/managementGroups/marketing-group/providers/Microsoft.Authorization/roleAssignments/22222222-2222-2222-2222-222222222222
Scope              : /providers/Microsoft.Management/managementGroups/marketing-group
DisplayName        : Alain Charon
SignInName         : alain@example.com
RoleDefinitionName : Billing Reader
RoleDefinitionId   : fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

ロールの割り当てを削除するRemove a role assignment

Azure RBAC でアクセス権を削除するには、Remove-AzRoleAssignment を使用してロールの割り当てを削除します。In Azure RBAC, to remove access, you remove a role assignment by using Remove-AzRoleAssignment.

次の例では、pharma-sales リソース グループの alain@example.com ユーザーから、"仮想マシンの共同作成者" ロールの割り当てを削除します。The following example removes the Virtual Machine Contributor role assignment from the alain@example.com user on the pharma-sales resource group:

PS C:\> Remove-AzRoleAssignment -SignInName alain@example.com -RoleDefinitionName "Virtual Machine Contributor" -ResourceGroupName pharma-sales

次の例では、サブスクリプション スコープで <object_id> から <role_name> ロールを削除します。The following example removes the <role_name> role from <object_id> at a subscription scope.

Remove-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionName <role_name> -Scope /subscriptions/<subscription_id>

次の例では、管理グループ スコープで <object_id> から <role_name> ロールを削除します。The following example removes the <role_name> role from <object_id> at the management group scope.

Remove-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionName <role_name> -Scope /providers/Microsoft.Management/managementGroups/<group_id>

"The provided information does not map to a role assignment" (指定された情報は、ロールの割り当てにマップされていません) というエラー メッセージが表示された場合、-Scope または -ResourceGroupName パラメーターも指定してください。If you get the error message: "The provided information does not map to a role assignment", make sure that you also specify the -Scope or -ResourceGroupName parameters. 詳細については、「Azure RBAC のトラブルシューティング」を参照してください。For more information, see Troubleshoot Azure RBAC.

次のステップNext steps