次の方法で共有


Azure ロールの割り当て条件のトラブルシューティング

一般的な問題

現象 - 条件が適用されない

原因 1

セキュリティ プリンシパルには、同じスコープ以上で 1 つ以上のロールの割り当てが割り当てられています。

解決策 1

セキュリティ プリンシパルに、同じデータ アクションへのアクセスを許可する複数のロールの割り当て (条件ありまたは条件なし) が存在しないことを確認し、条件が適用されないようにします。 評価ロジックの詳細については、「ユーザーが リソースにアクセスできるかどうかを Azure RBAC が判断する方法」を参照してください

原因 2

ロールの割り当てには、アクセス許可を付与する複数のアクションがあり、条件がすべてのアクションを対象とするわけではありません。 たとえば、 /blobs/write または /blobs/add/action データ アクションがある場合は、BLOB を作成できます。 ロール割り当てに2つのデータアクションが含まれている場合、条件でそのうちの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

次のいずれかのテンプレート パターンに一致するように条件を編集します。

テンプレート 条件
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 で定義されているカスタム セキュリティ属性

ソリューション

  1. Microsoft Entra ID>カスタムセキュリティ属性を開きます。

    [ 作業の開始 ] ページが表示される場合は、少なくとも 1 つの属性セットを読み取るためのアクセス許可がないか、カスタム セキュリティ属性がまだ定義されていません。

    カスタム セキュリティ属性の [はじめに] ページを示すスクリーンショット。

  2. カスタム セキュリティ属性が定義されている場合は、テナント スコープまたは属性セット スコープで次のいずれかのロールを割り当てます。 詳細については、「Microsoft Entra ID でカスタム セキュリティ属性へのアクセスを管理する」をご覧ください。

    Von Bedeutung

    既定では、グローバル管理者とその他の管理者ロールには、カスタム セキュリティ属性の読み取り、定義、割り当てを行う権限がありません。

  3. カスタム セキュリティ属性がまだ定義されていない場合は、テナント スコープで 属性定義管理者 ロールを割り当て、カスタム セキュリティ属性を追加します。 詳細については、「 Microsoft Entra ID でカスタム セキュリティ属性を追加または非アクティブ化する」を参照してください。

    完了すると、少なくとも 1 つの属性セットを読み取れるはずです。

    ユーザーが読み取ることができる属性セットを示すスクリーンショット。

    条件を持つロールの割り当てを追加すると、プリンシパル[属性ソース] リストに表示されるようになります。

現象 - PIM を使用しているときにプリンシパルが属性ソースに表示されない

Microsoft Entra Privileged Identity Management (PIM) を使用して条件を持つロールの割り当てを追加しようとすると、プリンシパル属性ソースの一覧に表示されません。

Privileged Identity Management を使用して条件を追加するときの [属性ソース] リストのプリンシパルを示すスクリーンショット。

原因

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 月に、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 月より前に [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を使用します。

API のエラー メッセージ

現象 - ロールの割り当てを削除するときの HTTP 403 禁止応答

ロールの割り当てを変更するための承認アクセス許可を持つプリンシパルと、承認アクセス許可に ABAC 条件も含まれているとします。 プリンシパルが、既に削除されているか存在しないロールの割り当てを削除しようとすると、想定される HTTP 403 Forbidden 応答ではなく HTTP 204 No Content 応答が返されます。

原因

プリンシパルに ABAC 条件を含むアクセス許可がある場合、システムは条件の評価中に属性の読み取りを試みます。 属性が存在しない場合、予期される結果ではなく、予期しない応答が発生する可能性があります。

ソリューション

条件も含む承認アクセス許可の応答を処理する場合は、 403 Forbidden 応答も処理する必要があります。 403 Forbidden応答は、アクセス許可が不十分であるか、ロールの割り当てが既に削除されていること、またはロールの割り当てが存在しないことを示している可能性があります。

次のステップ