「Policy contains a statement with one or more invalid principals (1 つ以上の無効なプリンシパルを持つステートメントがポリシーに含まれています)」という AWS KMS キーポリシーエラーを解決する方法を教えてください。

最終更新日: 2022 年 3 月 22 日

AWS Key Management Service (AWS KMS) のキーポリシーを変更しようとしましたが、AWS マネジメントコンソールに次のようなエラーが表示されました。

"PutKeyPolicy request failed (PutKeyPolicy リクエストが失敗しました)

MalformedPolicyDocumentException - Policy contains a statement with one or more invalid principals (MalformedPolicyDocumentException - 1 つ以上の無効なプリンシパルを持つステートメントがポリシーに含まれています)"

AWS KMS キーポリシーに Amazon リソースネーム (ARN) は含まれておらず、AIDACKCEVSQ6C2EXAMPLE のような一意の ID を持つプリンシパルが含まれています。

簡単な説明

AWS KMS API 呼び出し PutKeyPolicy リクエストは、指定されたキーポリシーが構文上または意味的に正しくないため、リクエストが拒否されると失敗します。

解決方法

JSON 構文

JSON ポリシードキュメントのリソースタイプが有効であることを確認します。JSON 構文エラーのトラブルシューティングを行うには、JSON ポリシードキュメントを JSON Beautifier に貼り付けて、フォーマットを確認します。不要な文字を削除し、欠落している文字があれば追加します。重複している JSON ポリシー要素と重複している SID 値を確認して、削除します。

無効なプリンシパル

JSON ポリシーのプリンシパル要素を確認して、AWS Identity and Access Management (IAM) エンティティが存在することを確認します。IAM アイデンティティが有効な ARN で正しく指定されていることを確認します。

注: ARN のリソースタイプを指定する部分には、ワイルドカードを使用できません。

IAM のアイデンティティを作成するときは、Bob や Developers などのフレンドリ名を付けます。セキュリティ上の目的で、これらの IAM エンティティには AIDACKCEVSQ6C2EXAMPLE のような一意の ID も割り当てられます。

例えば、AWS KMS キーポリシーで Alice という名前の IAM ユーザーを指定します。その後、この Alice が会社を辞めたとします。次に、Alice という名前の新しいユーザーが入社し、同じ名前で IAM ユーザーを作成したとします。一意の ID があることで、新しい Alice は、古い Alice に付与されたアクセス許可を継承することができません。

孤立した一意の ID をキーポリシーから削除します。詳細については、「AWS KMS でのキーポリシーの使用」を参照してください。

注意: AWS KMS キーポリシーに別のアカウントまたはプリンシパルに対する許可がある場合、このキーポリシーは KMS キーを含む AWS リージョン内のみで有効です。詳細については、「キーポリシーの概要」を参照してください。

無効な AWS サービス

AWS サービスがプリンシパルとしてリストされている場合は、そのサービスが AWS KMS でサポートされていることを確認します。プリンシパルは IAM エンティティである必要があり、IAM エンティティに代わってリクエストを行う AWS サービスには kms:ViaService を使用する必要があります。

AWS サービスが AWS KMS を直接呼び出しているかどうかを確認します。Amazon Elastic Compute Cloud (Amazon EC2) など、すべての AWS サービスが AWS KMS を直接呼び出すわけではありません。代わりに、Amazon EC2 などの AWS サービスは AWS アカウントのプリンシパルに代わって呼び出しを行います。Amazon Simple Notification Service (Amazon SNS) などの AWS KMS を直接呼び出す AWS サービスでは、プリンシパル要素サービスプリンシパルが含まれている必要があります。

詳細については、「Services that support the kms:ViaService condition key (kms:ViaService 条件キーをサポートするサービス)」を参照してください。

AWS リージョンでのオプトイン

受信者アカウント内でキーが配置されている AWS リージョンにオプトインしていない AWS アカウントと共有されている AWS KMS キーは、そのリージョンでは無効です。

受信者アカウントで AWS リージョンが有効になっていることを確認するか、AWS アカウントと受信者アカウントで有効になっているリージョンで別の AWS KMS キーを共有してください。詳細については、「AWS リージョンの管理」を参照してください。


この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?