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

Azure ロールベースのアクセス制御 (RBAC) は、Azure のリソースに対するアクセスを管理するために使用する承認システムです。Azure role-based access control (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 CLI を使用してロールを割り当てる方法について説明します。Azure ロールベースのアクセス制御 (RBAC) は、Azure のリソースに対するアクセスを管理するために使用する承認システムです。Azure role-based access control (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 CLI.

前提条件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 CLI を使用して取得できます。You can get the ID using the Azure portal or Azure CLI.

UserUser

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

az ad user show --id "{email}" --query objectId --output tsv

グループGroup

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

az ad group show --group "{name}" --query objectId --output tsv

ApplicationApplication

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

az ad sp list --display-name "{name}" --query [].objectId --output tsv

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

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

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

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

az role assignment create --role {roleNameOrId} --assignee {assignee} --resource-group {resourceGroup}

次の例では、pharma-sales リソース グループのスコープで、patlong@contoso.com ユーザーに "仮想マシンの共同作成者" ロールを付与します。The following example assigns the Virtual Machine Contributor role to patlong@contoso.com user at the pharma-sales resource group scope:

az role assignment create --role "Virtual Machine Contributor" --assignee patlong@contoso.com --resource-group pharma-sales

一意のロール 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 を使用してロールの割り当てを追加するには、az role assignment create を使用します。To add a role assignment using the unique role ID instead of the role name, use az role assignment create.

az role assignment create --role {roleId} --assignee {assignee} --resource-group {resourceGroup}

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

az role assignment create --role 9980e02c-c2be-4d73-94e8-173b1dc7cf3c --assignee patlong@contoso.com --resource-group pharma-sales

サブスクリプションをスコープとするグループGroup at a subscription scope

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

az role assignment create --role {roleNameOrId} --assignee-object-id {assigneeObjectId} --resource-group {resourceGroup} --scope /subscriptions/{subscriptionId}

次の例では、Ann Mack Team グループ (ID 22222222-2222-2222-2222-222222222222) に、サブスクリプション スコープで "閲覧者" ロールが割り当てられます。The following example assigns the Reader role to the Ann Mack Team group with ID 22222222-2222-2222-2222-222222222222 at a subscription scope.

az role assignment create --role Reader --assignee-object-id 22222222-2222-2222-2222-222222222222 --scope /subscriptions/00000000-0000-0000-0000-000000000000

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

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

次の例では、Ann Mack Team グループ (ID 22222222-2222-2222-2222-222222222222) に、リソース スコープで pharma-sales-project-network という名前の仮想ネットワークに対する "仮想マシン共同作成者" ロールが割り当てられます。The following example assigns the Virtual Machine Contributor role to the Ann Mack Team group with ID 22222222-2222-2222-2222-222222222222 at a resource scope for a virtual network named pharma-sales-project-network.

az role assignment create --role "Virtual Machine Contributor" --assignee-object-id 22222222-2222-2222-2222-222222222222 --scope /subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network

リソース グループをスコープとするアプリケーションApplication at a resource group scope

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

az role assignment create --role {roleNameOrId} --assignee-object-id {assigneeObjectId} --resource-group {resourceGroup}

次の例では、pharma-sales リソース グループのスコープで、オブジェクト ID 44444444-4444-4444-4444-444444444444 を使ってアプリケーションに "仮想マシンの共同作成者" ロールを割り当てています。The following example assigns the Virtual Machine Contributor role to an application with object ID 44444444-4444-4444-4444-444444444444 at the pharma-sales resource group scope.

az role assignment create --role "Virtual Machine Contributor" --assignee-object-id 44444444-4444-4444-4444-444444444444 --resource-group pharma-sales

サブスクリプションをスコープとするユーザーUser at a subscription scope

サブスクリプションのスコープでユーザーにロールの割り当てを追加するには、az role assignment create を使用します。To add a role assignment for a user at a subscription scope, use az role assignment create. サブスクリプション ID を取得するには、Azure portal の [サブスクリプション] ブレードで確認するか、az account list を使用できます。To get the subscription ID, you can find it on the Subscriptions blade in the Azure portal or you can use az account list.

az role assignment create --role {roleNameOrId} --assignee {assignee} --subscription {subscriptionNameOrId}

次の例では、サブスクリプション スコープで annm@example.com ユーザーに閲覧者ロールを割り当てます。The following example assigns the Reader role to the annm@example.com user at a subscription scope.

az role assignment create --role "Reader" --assignee annm@example.com --subscription 00000000-0000-0000-0000-000000000000

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

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

az role assignment create --role {roleNameOrId} --assignee {assignee} --scope /providers/Microsoft.Management/managementGroups/{groupId}

次の例では、管理グループ スコープで alain@example.com ユーザーに課金データ閲覧者ロールを割り当てます。The following example assigns the Billing Reader role to the alain@example.com user at a management group scope.

az role assignment create --role "Billing Reader" --assignee alain@example.com --scope /providers/Microsoft.Management/managementGroups/marketing-group

新しいサービス プリンシパルNew service principal

新しいサービス プリンシパルを作成し、そのサービス プリンシパルにロールをすぐに割り当てようとすると、場合によってはそのロールの割り当てが失敗することがあります。If you create a new service principal and immediately try to assign a role to that service principal, that role assignment can fail in some cases. たとえば、スクリプトを使用して新しいマネージド ID を作成し、そのサービス プリンシパルにロールを割り当てようとすると、ロールの割り当てが失敗する可能性があります。For example, if you use a script to create a new managed identity and then try to assign a role to that service principal, the role assignment might fail. このエラーの原因は、レプリケーションの遅延である可能性があります。The reason for this failure is likely a replication delay. サービス プリンシパルは 1 つのリージョンに作成されます。ただし、ロールの割り当ては、サービス プリンシパルがまだレプリケートされていない別のリージョンで発生する可能性があります。The service principal is created in one region; however, the role assignment might occur in a different region that hasn't replicated the service principal yet. このシナリオに対処するには、ロールの割り当てを作成するときに、プリンシパルの種類を指定する必要があります。To address this scenario, you should specify the principal type when creating the role assignment.

ロールの割り当てを追加するには、az role assignment create を使用し、--assignee-object-id の値を指定してから、--assignee-principal-typeServicePrincipal に設定します。To add a role assignment, use az role assignment create, specify a value for --assignee-object-id, and then set --assignee-principal-type to ServicePrincipal.

az role assignment create --role {roleNameOrId} --assignee-object-id {assigneeObjectId} --assignee-principal-type {assigneePrincipalType} --resource-group {resourceGroup} --scope /subscriptions/{subscriptionId}

次の例では、pharma-sales リソース グループ スコープで、msi-test マネージド ID に "仮想マシン共同作成者" ロールを割り当てます。The following example assigns the Virtual Machine Contributor role to the msi-test managed identity at the pharma-sales resource group scope:

az role assignment create --role "Virtual Machine Contributor" --assignee-object-id 33333333-3333-3333-3333-333333333333 --assignee-principal-type ServicePrincipal --resource-group pharma-sales

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

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

az role assignment delete --assignee {assignee} --role {roleNameOrId} --resource-group {resourceGroup}

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

az role assignment delete --assignee patlong@contoso.com --role "Virtual Machine Contributor" --resource-group pharma-sales

次の例では、サブスクリプション スコープで "閲覧者" ロールが Ann Mack Team グループ (ID 22222222-2222-2222-2222-222222222222 ) から削除されます。The following example removes the Reader role from the Ann Mack Team group with ID 22222222-2222-2222-2222-222222222222 at a subscription scope. グループのオブジェクト ID を取得する方法については、「オブジェクト ID を取得する」を参照してください。For information about how to get the object ID of the group, see Get object IDs.

az role assignment delete --assignee 22222222-2222-2222-2222-222222222222 --role "Reader" --subscription 00000000-0000-0000-0000-000000000000

次の例では、管理グループ スコープで alain@example.com ユーザーから "課金データ閲覧者" ロールが削除されます。The following example removes the Billing Reader role from the alain@example.com user at the management group scope. 管理グループの ID を取得するには、az account management-group list を使用できます。To get the ID of the management group, you can use az account management-group list.

az role assignment delete --assignee alain@example.com --role "Billing Reader" --scope /providers/Microsoft.Management/managementGroups/marketing-group

次のステップNext steps