Azure ロール割り当ての条件のトラブルシューティング
一般的な問題
現象 - 条件が適用されない
原因 1
セキュリティ プリンシパルに、同じかそれ以上のスコープの 1 つ以上のロールが割り当てられています。
解決策 1
セキュリティ プリンシパルに、条件適用の阻害につながる、同じデータ アクションへのアクセスを許可する複数のロール割り当て (条件の有無は問わず) がないことを確認します。 評価ロジックの詳細については、「ユーザーがリソースへのアクセス権を持っているどうかを Azure RBAC が特定する方法」を参照してください。
原因 2
ロールの割り当てに、アクセス許可を付与するアクションが複数存在し、指定した条件がすべてのアクションを対象としていません。 たとえば、/blobs/write
または /blobs/add/action
データ アクションがある場合は、BLOB を作成できます。 ロールの割り当てに両方のデータ アクションが含まれており、その内 1 つだけが条件に含まれる場合、ロールの割り当てによって、BLOB を作成して条件をバイパスする権限が付与されます。
解決策 2
ロールの割り当てにアクセス許可を付与するアクションが複数ある場合は、関連するすべてのアクションを対象にするようにしてください。
原因 3
ロールの割り当てに条件を追加すると、条件が適用されるまで最大 5 分かかる場合があります。 条件を追加すると、リソース プロバイダー (Microsoft Storage など) に更新が通知されます。 リソース プロバイダーでは、ロール割り当てが最新になるよう、ローカル キャッシュがすぐに更新されます。 このプロセスは 1 ~ 2 分で完了しますが、最大で 5 分かかることがあります。
解決策 3
5 分間待ってから、条件をもう一度テストします。
現象 - 条件を追加すると、条件が有効ではないことを示すエラーが発生する
条件を指定したロールの割り当てを追加しようとすると、次のようなエラーが表示されます。
The given role assignment condition is invalid.
原因 1
conditionVersion
プロパティは "1.0" に設定されます。
解決策 1
conditionVersion
プロパティを "2.0" に設定します。
原因 2
条件が正しく書式設定されていません。
解決策 2
条件形式または構文の問題を修正します。 あるいは、Azure portal のビジュアル エディターを使用して条件を追加します。
ビジュアル エディターの問題
現象 - 条件を編集するときに条件エディターが表示される
「Azure ロールの割り当て管理を条件を持つ他のユーザーに委任する」で説明されているテンプレートを使用して条件を作成しました。 条件を編集しようとすると、詳細条件エディターが表示されます。
以前に条件を編集したときは、条件テンプレートを使用して編集しました。
原因
条件がテンプレートのパターンと一致しません。
解決策 1
次のいずれかのテンプレート パターンに一致するように条件を編集します。
Template | 条件 |
---|---|
Constrain roles (ロールを制約する) | 例: ロールを制限する |
Constrain roles and principal types (ロールとプリンシパルの種類を制約する) | 例: ロールとプリンシパルの種類を制限する |
Constrain roles and principals (ロールとプリンシパルを制約する) | 例: ロールと特定のグループを制限する |
特定のロールを除くすべてのロールを許可する | 例: ほとんどのロールを許可するが、他のユーザーにロールの割り当てを許可しない |
解決策 2
条件を削除し、「Azure ロールの割り当て管理を条件を持つ他のユーザーに委任する」の手順を使用して再作成します。
現象 - [属性ソース] にプリンシパルが表示されない
条件を指定してロールの割り当てを追加しようとすると、[プリンシパル] が [属性ソース] 一覧に表示されません。
代わりに、メッセージが表示されます。
To use principal (user) attributes, you must have Microsoft Entra permissions (such as the [Attribute Assignment Administrator](../active-directory/roles/permissions-reference.md#attribute-assignment-administrator) role) and custom security attributes defined in Microsoft Entra ID.
原因
前提条件を満たしていません。 プリンシパル属性を使用するには、次のものが必要です。
- サインインしているユーザーが少なくとも 1 つの属性セットを読み取るための Microsoft Entra アクセス許可
- Microsoft Entra ID で定義されているカスタム セキュリティ属性
解決方法
[Microsoft Entra ID]>[カスタム セキュリティ属性] を開きます。
[概要] ページが表示される場合は、少なくとも 1 つの属性セットを読み取るアクセス許可や、カスタム セキュリティ属性がまだ定義されていません。
カスタム セキュリティ属性が定義されている場合は、テナント スコープまたは属性セット スコープで次のいずれかのロールを割り当てます。 詳細については、「Microsoft Entra ID でカスタム セキュリティ属性へのアクセスを管理する」をご覧ください。
重要
既定では、グローバル管理者とその他の管理者ロールには、カスタム セキュリティ属性の読み取り、定義、割り当てを行う権限がありません。
カスタム セキュリティ属性がまだ定義されていない場合は、テナント スコープで属性定義管理者ロールを割り当て、カスタム セキュリティ属性を追加します。 詳細については、Microsoft Entra ID でのカスタム セキュリティ属性の追加または非アクティブ化に関する記事を参照してください。
完了すると、少なくとも 1 つの属性セットを読み取ることができるはずです。
条件を指定してロールの割り当てを追加すると、[プリンシパル] が [属性ソース] 一覧に表示されます。
現象 - PIM を使用したときに [属性ソース] にプリンシパルが表示されない
Microsoft Entra Privileged Identity Management (PIM) を使用して条件付きのロールの割り当てを追加しようとすると、[プリンシパル] が [属性ソース] 一覧に表示されません。
原因
現在、PIM はロールの割り当て条件でプリンシパル属性の使用をサポートしていません。
ビジュアル エディターのエラー メッセージ
現象 - 条件が認識されない
コード エディターを使用した後にビジュアル エディターに切り替えると、次のようなメッセージが表示されます。
The current expression cannot be recognized. Switch to the code editor to edit the expression or delete the expression and add a new one.
原因
ビジュアル エディターでは解析できない条件の更新が行われました。
解決方法
条件形式または構文の問題を修正します。 あるいは、条件を削除して再試行することもできます。
現象 - 以前に保存した条件について、属性が適用されないというエラーが出る
以前に保存した条件をビジュアル エディターで開くと、次のメッセージが表示されます。
Attribute does not apply for the selected actions. Select a different set of actions.
原因
2022 年 5 月に、Read a blob (BLOB を読み取る) アクションが次の形式から変更されました。
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
Blob.List
サブ操作を除外するには:
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
2022 年 5 月より前に Read a blob (BLOB を読み取る) アクションで条件を作成した場合、ビジュアル エディターにこのエラー メッセージが表示されることがあります。
解決方法
[Select an action](アクションの選択) ウィンドウを開き、[Read a blob](BLOB を読み取る) アクションを再選択します。
現象 - 属性が適用されないというエラー
ビジュアル エディターで既存の式の 1 つ以上のアクションを選択すると、次のメッセージが表示され、以前に選択した属性が削除されます。
Attribute does not apply for the selected actions. Select a different set of actions.
原因
以前に選択した属性は、現在選択されているアクションには適用されなくなりました。
解決策 1
[アクションの追加] セクションで、選択した属性に適用されるアクションを選択します。 各ストレージ属性がサポートするストレージ アクションの一覧については、「Azure Blob Storage 内での Azure のロールの割り当て条件のアクションと属性」および「Azure キュー内での Azure のロールの割り当て条件のアクションと属性」を参照してください。
解決策 2
[式の作成] セクションで、現在選択されているアクションに適用される属性を選択します。 各ストレージ アクションがサポートするストレージ属性の一覧については、「Azure Blob Storage 内での Azure のロールの割り当て条件のアクションと属性」および「Azure キュー内での Azure のロールの割り当て条件のアクションと属性」を参照してください。
現象 - このコンテキストでは属性は適用されないという警告
コード エディターで編集を行い、ビジュアル エディターに切り替えると、次のメッセージが表示され、以前に選択した属性が削除されます。
Attribute does not apply in this context. Use a different role assignment scope or remove the expression.
原因
指定した属性は、現在のスコープでは使用できません (階層型名前空間が有効になっているストレージ アカウントでの Version ID
の使用など)。
ソリューション
現在指定されている属性を使用する場合は、リソース グループ スコープなど、別のスコープでロールの割り当て条件を作成します。 または、式を削除して、現在選択されているアクションを使用して再作成します。
現象 - 属性が認識されないというエラー
コード エディターで編集を行い、ビジュアル エディターに切り替えると、次のメッセージが表示され、以前に選択した属性が削除されます。
Attribute is not recognized. Select a valid attribute or remove the expression.
原因
指定した属性は認識されません。入力ミスが原因である可能性があります。
ソリューション
コード エディターで、入力ミスを修正します。 または、既存の式を削除し、ビジュアル エディターを使用して属性を選択します。
現象 - 属性値が無効であるというエラー
コード エディターで編集を行い、ビジュアル エディターに切り替えると、次のメッセージが表示され、以前に選択した属性が削除されます。
Attribute value is invalid. Select another attribute or value.
原因
式の右側に、無効な属性または値が含まれています。
ソリューション
ビジュアル エディターを使用して属性を選択するか、値を指定します。
現象 - アクションが選択されていないというエラー
ビジュアル エディターですべてのアクションを削除すると、次のメッセージが表示されます。
No actions selected. Select one or more actions to edit expressions.
原因
既存の式がありますが、ターゲットとして選択されたアクションはありません。
ソリューション
[アクションの追加] セクションで、式が対象とする 1 つ以上のアクションを追加します。
現象 - 使用可能なオプションなしのエラー
式を追加しようとすると、次のメッセージが表示されます。
No options available
原因
複数のアクションを対象として選択しましたが、現在選択されているすべてのアクションに適用する属性がありません。
解決方法
[アクションの追加] セクションで、対象にするアクションを少なく選択します。 削除したアクションを対象にするには、複数の条件を追加します。
現象 - ロールの定義 ID が見つかりません
式を追加しようとすると、次のメッセージが表示されます。
Cannot find built-in or custom role definitions with IDs: <role IDs>. These IDs were removed. Check that the IDs are valid and try to add again. You can also refresh the page or sign out and sign in again.
原因
[ロールの定義 ID] 属性に対して追加しようとした 1 つ以上のロールの定義 ID が見つからないか、正しい GUID 形式 00000000-0000-0000-0000-000000000000
ではありません。
ソリューション
条件エディターを使用してロールを選択してください。 カスタム ロールを最近追加した場合は、ページを更新するか、サインアウトしてもう一度サインインします。
現象 - プリンシパル ID が見つかりません
式を追加しようとすると、次のメッセージが表示されます。
Cannot find users, groups, or service principals in Azure Active Directory with principal IDs: <principal IDs>. These IDs were removed. Check that the IDs are valid and try to add again. You can also refresh the page or sign out and sign in again.
原因
[プリンシパル ID] 属性に対して追加しようとした 1 つ以上のプリンシパル ID が見つからなかったか、正しい GUID 形式 00000000-0000-0000-0000-000000000000
ではありません。
ソリューション
条件エディターを使用してプリンシパルを選択してください。 プリンシパルを最近追加した場合は、ページを更新するか、サインアウトしてもう一度サインインします。
Azure PowerShell のエラー メッセージ
現象 - リソース属性が有効ではないというエラー
Azure PowerShell を使用して条件を指定したロールの割り当てを追加しようとすると、次のようなエラーが表示されます。
New-AzRoleAssignment : Resource attribute
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.
原因
条件にドル記号 ($) が含まれている場合は、その前にバッククォート (`) を付ける必要があります。
解決方法
ドル記号の前にバッククォート (`) を追加します。 次に例を示します。 PowerShell の引用符の規則の詳細については、引用符の規則に関するページを参照してください。
$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>] StringEquals 'Cascade'))"
現象 - 条件をコピーして貼り付けるときにエラーが発生する
原因
PowerShell を使用してドキュメントから条件をコピーすると、次のエラーを引き起こす特殊文字が含まれる場合があります。 一部のエディター (Microsoft Word など) では、表示されないテキストの書式設定を行う際にコントロール文字が追加されます。
The given role assignment condition is invalid.
ソリューション
リッチ テキスト エディターから条件をコピーし、その条件が正しいことが確実な場合は、すべてのスペースと改行を削除してから、関連するスペースを追加し直します。 または、プレーン テキスト エディターや Visual Studio Code などのコード エディターを使います。
Azure CLI のエラー メッセージ
現象 - リソース属性が有効ではないというエラー
Azure CLI を使用して条件を指定したロールの割り当てを追加しようとすると、次のようなエラーが表示されます。
Resource attribute Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.
原因
条件にドル記号 ($) が含まれている場合は、その前に円記号 (\) を付ける必要があります。
解決方法
ドル記号の前に円記号 (\) を追加します。 次に例を示します。 Bash の引用符に関する規則の詳細については、「二重引用符」を参照してください。
condition="((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<\$key_case_sensitive\$>] StringEquals 'Cascade'))"
現象 - 引数が認識されないというエラー
Azure CLI を使用して条件を指定したロールの割り当てを追加しようとすると、次のようなエラーが表示されます。
az: error: unrecognized arguments: --description {description} --condition {condition} --condition-version 2.0
原因
ロールの割り当て条件パラメーターがサポートされていない、以前のバージョンの Azure CLI を使用している可能性があります。
ソリューション
Azure CLI の最新バージョン (2.18 以降) に更新します。 詳細については、「 Azure CLI のインストール」を参照してください。
現象 - Bash の変数に条件文字列を割り当てるときにエラーが発生する
Bash の変数に条件文字列を割り当てようとすると、bash: !: event not found
というメッセージが表示されます。
原因
Bash では、履歴展開が有効になっている場合、感嘆符 (!) が原因で "bash: !: event not found
" というメッセージが表示されることがあります。
解決方法
コマンド set +H
を使用して、履歴展開を無効にします。 履歴展開を再び有効にするには、set -H
を使用します。