Azure RBAC のトラブルシューティングTroubleshoot Azure RBAC

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

Azure でのロールの割り当て制限Azure role assignments limit

Azure では、サブスクリプションあたり最大 2,000 個のロールの割り当てをサポートしています。Azure supports up to 2000 role assignments per subscription. この制限には、サブスクリプション、リソース グループ、およびリソースのスコープでのロールの割り当てが含まれます。This limit includes role assignments at the subscription, resource group, and resource scopes. エラー メッセージ "ロールの割り当てはこれ以上作成できません (コード: 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 in the subscription.

注意

2,000 のサブスクリプション当たりのロール割り当ての制限は固定されており、増やすことはできません。The 2000 role assignments limit per subscription is fixed and cannot be increased.

この制限に近づいている場合は、次の方法でロールの割り当ての数を減らすことができます。If you are getting close to this limit, here are some ways that you can reduce the number of role assignments:

  • ユーザーをグループに追加し、ロールをユーザーではなくグループに割り当てます。Add users to groups and assign roles to the groups instead.
  • 複数の組み込みロールをカスタム ロールと結合します。Combine multiple built-in roles with a custom role.
  • サブスクリプションまたは管理グループなど、上位のスコープで共通のロールの割り当てを行います。Make common role assignments at a higher scope, such as subscription or management group.
  • Azure AD Premium P2 を使用している場合は、ロールを永続的に割り当てるのではなく、Azure AD Privileged Identity Management で割り当てます。If you have Azure AD Premium P2, make role assignments eligible in Azure AD Privileged Identity Management instead of permanently assigned.
  • 追加のサブスクリプションを追加します。Add an additional subscription.

ロールの割り当ての数を取得するには、Azure portal の アクセス制御 (IAM) ページのグラフをを表示します。To get the number of role assignments, you can view the chart on the Access control (IAM) page in the Azure portal. また、次の Azure PowerShell コマンドを使用することもできます。You can also use the following Azure PowerShell commands:

$scope = "/subscriptions/<subscriptionId>"
$ras = Get-AzRoleAssignment -Scope $scope | Where-Object {$_.scope.StartsWith($scope)}
$ras.Count

Azure のロールの割り当てに関する問題Problems with Azure 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.

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

  • カスタム ロールを作成する手順が必要な場合は、Azure portal (現在はプレビュー段階)、Azure PowerShellAzure CLI を使用して、カスタム ロールのチュートリアルを参照してください。If you need steps for how to create a custom role, see the custom role tutorials using the Azure portal (currently in preview), 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 directory. (Azure Germany と Azure China 21Vianet の場合、制限は 2,000 カスタム ロールです)。(For 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 directory. スコープが削除された場合は、現時点で使用可能なセルフ サービス ソリューションがないため、サポート チケットを作成します。If the scope was deleted, then create a support ticket as there is no self-service solution available at this time.

カスタム ロールと管理グループCustom roles and management groups

  • カスタム ロールの AssignableScopes に定義できる管理グループは 1 つだけです。You can only define one management group in AssignableScopes of a custom role. AssignableScopes への管理グループの追加は、現在プレビューの段階です。Adding a management group to AssignableScopes is currently in preview.
  • DataActions が含まれるカスタム ロールを管理グループのスコープで割り当てることはできません。Custom roles with DataActions cannot be assigned at the management group scope.
  • ロールの定義の割り当て可能なスコープに管理グループが存在するかどうかは、Azure Resource Manager では確認されません。Azure Resource Manager doesn't validate the management group's existence in the role definition's assignable scope.
  • カスタム ロールと管理グループについて詳しくは、「Azure 管理グループでリソースを整理する」をご覧ください。For more information about custom roles and management groups, see Organize your resources with Azure management groups.

サブスクリプションを別のディレクトリに譲渡するTransferring a subscription to a different directory

  • サブスクリプションを別の Azure AD ディレクトリに譲渡する方法の手順が必要な場合は、「Azure サブスクリプションの所有権を別のアカウントに譲渡する」を参照してください。If you need steps for how to transfer a subscription to a different Azure AD directory, 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 directory, all role assignments are permanently deleted from the source Azure AD directory and are not migrated to the target Azure AD directory. ターゲット ディレクトリでロールの割り当てを再作成する必要があります。You must re-create your role assignments in the target directory. また、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 transferred between directories, 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 Azure built-in roles.
  • サポート チケットを作成または更新しようとすると "サポート要求を作成するためのアクセス許可がありません" というアクセス許可エラーが発生する場合は、現在サインインしているユーザーに、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.

ID が見つからないロールの割り当てRole assignments with identity not found

Azure portal のロールの割り当ての一覧で、セキュリティ プリンシパル (ユーザー、グループ、サービス プリンシパル、またはマネージド ID) が、不明な種類の見つからない ID として表示されている場合があります。In the list of role assignments for the Azure portal, you might notice that the security principal (user, group, service principal, or managed identity) is listed as Identity not found with an Unknown type.

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

ID は、次の 2 つの理由で見つからない可能性があります。The identity might not be found for two reasons:

  • ロールの割り当てを作成するときに、ユーザーを最近招待したYou recently invited a user when creating a role assignment
  • ロールの割り当てを持つセキュリティ プリンシパルを削除したYou deleted a security principal that had a role assignment

ロールの割り当てを作成するときに最近ユーザーを招待した場合、このセキュリティ プリンシパルはまだリージョン間のレプリケーション プロセス中である可能性があります。If you recently invited a user when creating a role assignment, this security principal might still be in the replication process across regions. その場合は、しばらく待ってから、ロールの割り当ての一覧を更新してください。If so, wait a few moments and refresh the role assignments list.

ただし、このセキュリティ プリンシパルが最近招待されたユーザーでない場合は、削除されたセキュリティ プリンシパルである可能性があります。However, if this security principal is not a recently invited user, it might be a deleted security principal. ロールをセキュリティ プリンシパに割り当てた後、最初にロールの割り当てを削除せずにそのセキュリティ プリンシパルを削除した場合、そのセキュリティ プリンシパルは ID が見つからない [不明] な種類として表示されます。If you assign a role to a security principal and then you later delete that security principal without first removing the role assignment, the security principal will be listed as Identity not found and an Unknown type.

Azure PowerShell を使用してこのロールの割り当てを一覧表示すると、空の DisplayNameUnknownに設定された ObjectType が表示される場合があります。If you list this role assignment using Azure PowerShell, you might see 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 output:

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, if you list this role assignment using Azure CLI, you might see an empty principalName. たとえば、az role assignment list では、次の出力のようなロールの割り当てが返されます。For example, az role assignment list returns a role assignment that is similar to the following output:

{
    "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"
}

セキュリティ プリンシパルが削除されているこれらのロールの割り当てを残しておくのは問題ではありません。It isn't a problem to leave these role assignments where the security principal has been deleted. 必要であれば、他のロールの割り当てと同様の手順を使用して、これらのロールの割り当てを削除できます。If you like, you can remove these role assignments using steps that are similar to other role assignments. ロールの割り当てを削除する方法については、Azure portalAzure PowerShell、または Azure CLI を参照してくださいFor information about how to remove role assignments, see Azure portal, Azure PowerShell, or Azure CLI

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 output 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

ロールの割り当ての変更が検出されないRole assignment changes are not being detected

Azure Resource Manager は、パフォーマンスを高めるために構成やデータをキャッシュすることがあります。Azure Resource Manager sometimes caches configurations and data to improve performance. ロールの割り当てを追加または削除する場合、変更が適用されるまでに最大で 30 分かかることがあります。When you add or remove 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.

管理グループのスコープでロールの割り当てを追加または削除し、ロールに DataActions がある場合、データ プレーンへのアクセスが数時間更新されない可能性があります。If you are add or remove a role assignment at management group scope and the role has DataActions, the access on the data plane might not be updated for several hours. これは、管理グループのスコープとデータ プレーンにのみ適用されます。This applies only to management group scope and the data plane.

書き込みアクセス権限を必要とする 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
  • リソース ログの構成Resource 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:

  • TLS/SSL 証明書とバインド (TLS/SSL 証明書は同じリソース グループや地理的な場所にあるサイト間で共有できるため)TLS/SSL Certificates and bindings (TLS/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
  • 拡張機能Extensions

以下には、仮想マシンと、その仮想マシンが含まれるリソース グループ (とドメイン名) の両方に対する書き込みアクセス権が必要です。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. これらの機能にアクセスするには、共同作成者ロールが必要です。To access these features, you will need the Contributor role.

次のステップNext steps