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

所要時間1分
0

AWS Key Management Service (AWS KMS) のキーポリシーを変更しようとしましたが、AWS マネジメントコンソールに次のようなエラーが表示されました。「PutKeyPolicy request failed MalformedPolicyDocumentException - Policy contains a statement with one or more invalid principals.」

簡単な説明

AWS KMS API 呼び出し PutKeyPolicy リクエストは、指定されたキーポリシーが構文上または意味的に正しくない場合、失敗します。AWS KMS キーポリシーには ARN は含まれていません。代わりに、キーポリシーには AIDACKCEVSQ6C2EXAMPLE のような一意の ID を持つプリンシパルが含まれています。

解決策

JSON 構文

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

プリンシパル要素

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

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

IAM のアイデンティティを作成するときは、Bob や Developers などのフレンドリ名を付けます。セキュリティ上の理由から、これらの IAM アイデンティティには AIDACKCEVSQ6C2EXAMPLE のような一意の識別子も割り当てられます。孤立した一意の ID をキーポリシーから削除します。詳細については、AWS KMS でのキーポリシーの使用を参照してください。

注: AWS KMS キーポリシーに別のアカウントまたはプリンシパルへのアクセス許可がある場合、そのキーポリシーは有効ではない可能性があります。キーポリシーは、AWS KMS キーを含む AWS リージョンでのみ有効です。

AWS サービス

AWS サービスがプリンシパルとしてリストされている場合は、そのサービスが AWS KMS でサポートされていることを確認します。プリンシパルは IAM ID でなければなりません。また、IAM アイデンティティのリクエストを行う AWS サービスには、kms:ViaService 条件キーを使用する必要があります。

すべての AWS サービスが AWS KMS を直接呼び出すわけではないため、使用している AWS サービスが AWS KMS を直接呼び出すかどうかを確認します。たとえば、Amazon Elastic Compute Cloud (Amazon EC2) などの AWS サービスは、アカウント内のプリンシパルを呼び出します。AWS KMS を直接呼び出す AWS サービスでは、プリンシパル要素サービスプリンシパルが含まれている必要があります。

詳細については、Services that support the kms:ViaService condition keyを参照してください。

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

AWS KMS キーを共有するアカウントは、受信者アカウント内の AWS リージョンにオプトインする必要があります。そうしないと、KMS キーはそのリージョンでは無効になります。

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

関連情報

Changing a key policy

コメントはありません

関連するコンテンツ