Azure リソースの RBAC のトラブルシューティングTroubleshoot RBAC for Azure resources

この記事では、Azure portal でロールを使用するときに予想されることをユーザーが理解し、アクセスの問題を解決できるように、Azure リソースのロールベースのアクセス制御 (RBAC) に関する一般的な質問に回答します。This article answers common questions about role-based access control (RBAC) for Azure resources, so that you know what to expect when using the roles in the Azure portal and can troubleshoot access problems.

RBAC ロールの割り当てに関する問題Problems with RBAC role assignments

  • [追加] > [ロール割り当ての追加] オプションが無効になっているため、または "オブジェクト ID のクライアントは、アクションの実行を承認されていません" というアクセス許可エラーが発生するために、Azure portal の [アクセス制御 (IAM)] でロールの割り当てを追加できない場合は、ロールを割り当てようとしているスコープで Microsoft.Authorization/roleAssignments/write のアクセス許可を持っている所有者ユーザー アクセス管理者などのロールを割り当てられているユーザーで、現在サインインしていることを確認してください。If you are unable to add a role assignment in the Azure portal on Access control (IAM) because the Add > Add role assignment option is disabled or because you get the permissions error "The client with object id does not have authorization to perform action", check that you are currently signed in with a user that is assigned a role that has the Microsoft.Authorization/roleAssignments/write permission such as Owner or User Access Administrator at the scope you are trying to assign the role.
  • エラー メッセージ "ロールの割り当てはこれ以上作成できません (コード: RoleAssignmentLimitExceeded)" が、ロールを割り当てようとすると発生する場合は、代わりにロールをグループに割り当てて、ロールの割り当て数を減らしてみます。If you get the error message "No more role assignments can be created (code: RoleAssignmentLimitExceeded)" when you try to assign a role, try to reduce the number of role assignments by assigning roles to groups instead. Azure では、サブスクリプションあたり最大 2,000 個のロールの割り当てをサポートしています。Azure supports up to 2000 role assignments per subscription.

カスタム ロールに関する問題Problems with custom roles

  • カスタム ロールを作成する方法の手順が必要な場合は、Azure PowerShell または Azure CLI を使用するカスタム ロールのチュートリアルをご覧ください。If you need steps for how to create a custom role, see the custom role tutorials using Azure PowerShell or Azure CLI.
  • 既存のカスタム ロールを更新できない場合は、現在サインインしているユーザーに Microsoft.Authorization/roleDefinition/write アクセス許可を持つロール (所有者ユーザー アクセス管理者など) が割り当てられていることを確認します。If you are unable to update an existing custom role, check that you are currently signed in with a user that is assigned a role that has the Microsoft.Authorization/roleDefinition/write permission such as Owner or User Access Administrator.
  • カスタム ロールを削除することができず、エラー メッセージ "ロールを参照している既存のロールの割り当てがあります (コード: RoleDefinitionHasAssignments)" が表示される場合は、カスタム ロールを使用しているロールの割り当てがまだ存在します。If you are unable to delete a custom role and get the error message "There are existing role assignments referencing role (code: RoleDefinitionHasAssignments)", then there are role assignments still using the custom role. それらのロール割り当てを削除してから、もう一度カスタム ロールを削除してみてください。Remove those role assignments and try to delete the custom role again.
  • エラー メッセージ "ロールの定義の制限を超えました。If you get the error message "Role definition limit exceeded. ロールの定義をこれ以上作成することはできません (コード: RoleDefinitionLimitExceeded)" が、新しいカスタム ロールを作成しようとすると表示される場合は、使用されていないすべてのカスタム ロールを削除します。No more role definitions can be created (code: RoleDefinitionLimitExceeded)" when you try to create a new custom role, delete any custom roles that aren't being used. Azure では、テナントあたり最大 5,000 個のカスタム ロールをサポートしますAzure supports up to 5000 custom roles in a tenant. (Azure Government、Azure Germany、Azure China 21Vianet などの特殊なクラウドの場合、カスタム ロールの上限は 2,000 個です)。(For specialized clouds, such as Azure Government, Azure Germany, and Azure China 21Vianet, the limit is 2000 custom roles.)
  • カスタム ロールを更新しようとすると、"このクライアントには、範囲 '/subscriptions/{subscriptionid}' に対してアクション 'Microsoft.Authorization/roleDefinitions/write' を実行する権限がありますが、リンクされているサブスクリプションが見つかりません" のようなエラーが発生する場合は、テナントで 1 つまたは複数の割り当て可能な範囲が削除さているかどうかを確認してください。If you get an error similar to "The client has permission to perform action 'Microsoft.Authorization/roleDefinitions/write' on scope '/subscriptions/{subscriptionid}', however the linked subscription was not found" when you try to update a custom role, check whether one or more assignable scopes have been deleted in the tenant. スコープが削除された場合は、現時点で使用可能なセルフ サービス ソリューションがないため、サポート チケットを作成します。If the scope was deleted, then create a support ticket as there is no self-service solution available at this time.

サブスクリプションがテナントをまたいで移動される際に RBAC を復旧しますRecover RBAC when subscriptions are moved across tenants

  • サブスクリプションを別の Azure AD テナントに譲渡する方法の手順が必要な場合は、「Azure サブスクリプションの所有権を別のアカウントに譲渡する」を参照してください。If you need steps for how to transfer a subscription to a different Azure AD tenant, see Transfer ownership of an Azure subscription to another account.
  • 別の Azure AD テナントにサブスクリプションを譲渡する場合、すべてのロールの割り当てがソース Azure AD テナントから完全に削除され、ターゲット Azure AD テナントに移行されることはありません。If you transfer a subscription to a different Azure AD tenant, all role assignments are permanently deleted from the source Azure AD tenant and are not migrated to the target Azure AD tenant. ターゲット テナントでロールの割り当てを再作成する必要があります。You must re-create your role assignments in the target tenant. また、Azure リソースのマネージド ID を手動で再作成する必要もあります。You also have to manually recreate managed identities for Azure resources. 詳細については、マネージド ID に関する FAQ と既知の問題に関するページを参照してください。For more information, see FAQs and known issues with managed identities.
  • Azure AD グローバル管理者であり、テナント間で移動された後のサブスクリプションにアクセスできない場合は、 [Azure リソースのアクセス管理] トグルを使用して、一時的にアクセス権を昇格させて、サブスクリプションにアクセスします。If you are an Azure AD Global Administrator and you don't have access to a subscription after it was moved between tenants, use the Access management for Azure resources toggle to temporarily elevate your access to get access to the subscription.

サービス管理者または共同管理者に関する問題Issues with service admins or co-admins

アクセス拒否またはアクセス許可エラーAccess denied or permission errors

  • アクセス許可エラー "オブジェクト ID のクライアントは、スコープに対するアクションの実行を承認されていません (コード: AuthorizationFailed)" が、リソースを作成しようとすると発生する場合は、選択したスコープでリソースへの書き込みアクセス許可を持つロールを割り当てられたユーザーで、現在サインインしていることを確認します。If you get the permissions error "The client with object id does not have authorization to perform action over scope (code: AuthorizationFailed)" when you try to create a resource, check that you are currently signed in with a user that is assigned a role that has write permission to the resource at the selected scope. たとえば、リソース グループ内の仮想マシンを管理するには、そのリソース グループ (または親スコープ) に対する仮想マシン共同作成者ロールを持っている必要があります。For example, to manage virtual machines in a resource group, you should have the Virtual Machine Contributor role on the resource group (or parent scope). 各組み込みロールに対するアクセス許可の一覧については、「Azure リソースの組み込みロール」を参照してください。For a list of the permissions for each built-in role, see Built-in roles for Azure resources.
  • サポート チケットを作成または更新しようとすると "サポート要求を作成するためのアクセス許可がありません" というアクセス許可エラーが発生する場合は、現在サインインしているユーザーに、Microsoft.Support/supportTickets/write アクセス許可を持つロール (サポート リクエスト共同作成者など) が割り当てられていることを確認します。If you get the permissions error "You don't have permission to create a support request" when you try to create or update a support ticket, check that you are currently signed in with a user that is assigned a role that has the Microsoft.Support/supportTickets/write permission, such as Support Request Contributor.

セキュリティ プリンシパルのないロールの割り当てRole assignments without a security principal

Azure PowerShell を使ってロールの割り当てを一覧表示すると、空の DisplayName と、[Unknown](不明) に設定された ObjectType を持つ割り当てが表示される場合があります。When you list your role assignments using Azure PowerShell, you might see assignments with an empty DisplayName and an ObjectType set to Unknown. たとえば、Get-AzRoleAssignment では、次のようなロールの割り当てが返されます。For example, Get-AzRoleAssignment returns a role assignment that is similar to the following:

RoleAssignmentId   : /subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/22222222-2222-2222-2222-222222222222
Scope              : /subscriptions/11111111-1111-1111-1111-111111111111
DisplayName        :
SignInName         :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId   : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId           : 33333333-3333-3333-3333-333333333333
ObjectType         : Unknown
CanDelegate        : False

同様に、Azure CLI を使ってロールの割り当てを一覧表示すると、空の principalName を持つ割り当てが表示される場合があります。Similarly, when you list your role assignments using Azure CLI, you might see assignments with an empty principalName. たとえば、az role assignment list では、次のようなロールの割り当てが返されます。For example, az role assignment list returns a role assignment that is similar to the following:

{
    "canDelegate": null,
    "id": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/22222222-2222-2222-2222-222222222222",
    "name": "22222222-2222-2222-2222-222222222222",
    "principalId": "33333333-3333-3333-3333-333333333333",
    "principalName": "",
    "roleDefinitionId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleDefinitions/ba92f5b4-2d11-453d-a403-e96b0029c9fe",
    "roleDefinitionName": "Storage Blob Data Contributor",
    "scope": "/subscriptions/11111111-1111-1111-1111-111111111111",
    "type": "Microsoft.Authorization/roleAssignments"
}

これらのロールの割り当ては、セキュリティ プリンシパル (ユーザー、グループ、サービス プリンシパル、または管理対象 ID) にロールを割り当てて、後でそのセキュリティ プリンシパルを削除したときに発生します。These role assignments occur when you assign a role to a security principal (user, group, service principal, or managed identity) and you later delete that security principal. これらのロールの割り当ては、Azure portal には表示されず、そのままにしておいても問題ありません。These role assignments aren't displayed in the Azure portal and it isn't a problem to leave them. ただし、必要であれば、これらのロールの割り当てを削除できます。However, if you like, you can remove these roles assignments.

これらのロールの割り当てを削除するには、Remove-AzRoleAssignment コマンドまたは az role assignment delete コマンドを使用します。To remove these role assignments, use the Remove-AzRoleAssignment or az role assignment delete commands.

PowerShell では、オブジェクト ID とロール定義名を使ってロールの割り当てを削除しようとし、複数のロールの割り当てがパラメーターに一致する場合、次のエラー メッセージを受け取ります。"The provided information does not map to a role assignment" (指定された情報は、ロールの割り当てにマップされていません)。In PowerShell, if you try to remove the role assignments using the object ID and role definition name, and more than one role assignment matches your parameters, you will get the error message: "The provided information does not map to a role assignment". エラー メッセージの例を次に示します。The following shows an example of the error message:

PS C:\> Remove-AzRoleAssignment -ObjectId 33333333-3333-3333-3333-333333333333 -RoleDefinitionName "Storage Blob Data Contributor"

Remove-AzRoleAssignment : The provided information does not map to a role assignment.
At line:1 char:1
+ Remove-AzRoleAssignment -ObjectId 33333333-3333-3333-3333-333333333333 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : CloseError: (:) [Remove-AzRoleAssignment], KeyNotFoundException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Resources.RemoveAzureRoleAssignmentCommand

このエラー メッセージを受け取る場合は、-Scope パラメーターまたは -ResourceGroupName パラメーターも指定するようにしてください。If you get this error message, make sure you also specify the -Scope or -ResourceGroupName parameters.

PS C:\> Remove-AzRoleAssignment -ObjectId 33333333-3333-3333-3333-333333333333 -RoleDefinitionName "Storage Blob Data Contributor" - Scope /subscriptions/11111111-1111-1111-1111-111111111111

RBAC の変更が検出されないRBAC changes are not being detected

Azure Resource Manager は、パフォーマンスを高めるために構成やデータをキャッシュすることがあります。Azure Resource Manager sometimes caches configurations and data to improve performance. ロールの割り当てを作成または削除した場合、その変更が有効となるまでに最大 30 分かかる場合があります。When creating or deleting role assignments, it can take up to 30 minutes for changes to take effect. Azure portal、Azure PowerShell、Azure CLI のいずれかを使用している場合は、一度サインアウトしてからサインインすることで、ロールの割り当てを強制的に最新の情報に更新し、その変更を有効にすることができます。If you are using the Azure portal, Azure PowerShell, or Azure CLI, you can force a refresh of your role assignment changes by signing out and signing in. REST API 呼び出しでロールの割り当てを変更する場合は、アクセス トークンを更新することによって、最新の情報への更新を強制することができます。If you are making role assignment changes with REST API calls, you can force a refresh by refreshing your access token.

書き込みアクセス権限を必要とする Web アプリ機能Web app features that require write access

1 つの Web アプリに対する読み取り専用アクセスをユーザーに付与する場合、予期しない機能が無効になることがあります。If you grant a user read-only access to a single web app, some features are disabled that you might not expect. 以下の管理機能には、Web アプリに対する書き込みアクセス権 (共同作成者または所有者) が必要なので、読み取り専用のシナリオでは利用できません。The following management capabilities require write access to a web app (either Contributor or Owner), and aren't available in any read-only scenario.

  • コマンド (開始や停止など)Commands (like start, stop, etc.)
  • 一般的な構成、スケール設定、バックアップ設定、監視設定などの設定の変更。Changing settings like general configuration, scale settings, backup settings, and monitoring settings
  • 発行資格情報およびその他の機密情報 (アプリケーション設定や接続文字列など) へのアクセス。Accessing publishing credentials and other secrets like app settings and connection strings
  • ストリーミング ログStreaming logs
  • 診断ログの構成Diagnostic logs configuration
  • コンソール (コマンド プロンプト)Console (command prompt)
  • アクティブな最新のデプロイ (ローカル Git の継続的デプロイの場合)Active and recent deployments (for local git continuous deployment)
  • 所要時間の見積もりEstimated spend
  • Web テストWeb tests
  • 仮想ネットワーク (書き込みアクセス権を持つユーザーが仮想ネットワークを事前に構成している場合のみ閲覧者が参照できる)。Virtual network (only visible to a reader if a virtual network has previously been configured by a user with write access).

これらのタイルのいずれにもアクセスできない場合、管理者に問い合わせて Web アプリに対する共同作成者アクセス権を得る必要があります。If you can't access any of these tiles, you need to ask your administrator for Contributor access to the web app.

書き込みアクセス権限を必要とする Web アプリ リソースWeb app resources that require write access

相互作用する数種類のリソースがあると、Web アプリは複雑になります。Web apps are complicated by the presence of a few different resources that interplay. 複数の Web サイトから成る代表的なリソース グループを以下に示します。Here is a typical resource group with a couple of websites:

Web アプリ リソース グループ

結果として、Web アプリのみに対するアクセス権を付与すると、Azure Portal の Web サイト ブレード上の多数の機能が使用できなくなります。As a result, if you grant someone access to just the web app, much of the functionality on the website blade in the Azure portal is disabled.

以下の項目には、Web サイトに対応する App Service プランへ書き込みアクセス権が必要です。These items require write access to the App Service plan that corresponds to your website:

  • Web アプリの価格レベル (Free または Standard) の表示Viewing the web app's pricing tier (Free or Standard)
  • スケールの構成 (インスタンスの数、仮想マシンのサイズ、自動スケールの設定)Scale configuration (number of instances, virtual machine size, autoscale settings)
  • クォータ (ストレージ、帯域幅、CPU)Quotas (storage, bandwidth, CPU)

以下の項目には、Web サイトが含まれるリソース グループ全体に対する書き込みアクセス権が必要です。These items require write access to the whole Resource group that contains your website:

  • SSL 証明書とバインド (SSL 証明書は同じリソース グループや地理的な場所にあるサイト間で共有できるため)SSL Certificates and bindings (SSL certificates can be shared between sites in the same resource group and geo-location)
  • アラート ルールAlert rules
  • 自動スケールの設定Autoscale settings
  • Application Insights コンポーネントApplication insights components
  • Web テストWeb tests

書き込みアクセス権限を必要とする仮想マシン機能Virtual machine features that require write access

Web アプリと同様、仮想マシン ブレード上の機能にも、仮想マシンかリソース グループ内の他のリソースに対する書き込みアクセス権が必要なものがあります。Similar to web apps, some features on the virtual machine blade require write access to the virtual machine, or to other resources in the resource group.

仮想マシンは、ドメイン名、仮想ネットワーク、ストレージ アカウント、アラート ルールなどのリソースと関連しています。Virtual machines are related to Domain names, virtual networks, storage accounts, and alert rules.

以下の項目には、仮想マシンに対する書き込みアクセス権が必要です。These items require write access to the Virtual machine:

  • エンドポイントEndpoints
  • IP アドレスIP addresses
  • ディスクDisks
  • ExtensionsExtensions

以下には、仮想マシンと、その仮想マシンが含まれるリソース グループ (とドメイン名) の両方に対する書き込みアクセス権が必要です。These require write access to both the Virtual machine, and the Resource group (along with the Domain name) that it is in:

  • 可用性セットAvailability set
  • 負荷分散セットLoad balanced set
  • アラート ルールAlert rules

これらのタイルのいずれにもアクセスできない場合、管理者に問い合わせてリソース グループに対する共同作成者アクセス権を入手してください。If you can't access any of these tiles, ask your administrator for Contributor access to the Resource group.

Azure Functions と書き込みアクセス権限Azure Functions and write access

Azure Functions の一部の機能では、書き込みアクセスが必要です。Some features of Azure Functions require write access. たとえば、ユーザーに閲覧者ロールが割り当てられている場合、そのユーザーは関数アプリ内の関数を表示することができません。For example, if a user is assigned the Reader role, they will not be able to view the functions within a function app. ポータルには (アクセスなし) が表示されます。The portal will display (No access).

Function App のアクセスなし

閲覧者は、 [プラットフォーム機能] タブをクリックし、 [すべての設定] をクリックすることで、関数アプリ (Web アプリに類似) に関連する一部の設定を表示できます。ただし、これらの設定を変更することはできません。A reader can click the Platform features tab and then click All settings to view some settings related to a function app (similar to a web app), but they can't modify any of these settings.

次の手順Next steps