AWS Key Management Service (AWS KMS) のキーポリシーエラーを解決したいと考えています。
簡単な説明
AWS KMS キーポリシーを正しく変更しなかった場合、PutKeyPolicy AWS KMS API オペレーションは失敗します。その際、次のいずれかのエラーメッセージが表示される場合があります。
"PutKeyPolicy request failed MalformedPolicyDocumentException - Policy contains a statement with one or more invalid principals."
"Policy contains a statement with one or more invalid principals"
この問題を解決するには、次の解決アクションを 1 つ以上実行してください。
解決策
有効な JSON 構文を使用する
有効な JSON ポリシードキュメントリソースタイプを使用していることを確認してください。JSON 構文エラーをトラブルシューティングするには、JSON ポリシードキュメントを JSON 整形ツールに貼り付けます。不要な文字を削除し、欠落している文字を追加します。重複する JSON ポリシー要素や Security Identifying (SID) 値はすべて削除します。
プリンシパル要素を指定する
JSON ポリシーのプリンシパル要素で、AWS Identity and Access Management (IAM) ID と有効な Amazon リソースネーム (ARN) が作成されていることを確認します。
キーポリシーは、AWS KMS キーを含む AWS リージョンでのみ有効です。AWS KMS キーポリシーに別の AWS アカウントまたはプリンシパルへのアクセス許可がある場合、そのキーポリシーは有効ではない可能性があります。キーポリシーに正しいリージョンの AWS KMS キーが含まれていることを確認してください。
プリンシパル要素を IAM ID として指定する必要があります。AWS サービスをプリンシパルとして指定した場合は、そのサービスが AWS KMS でサポートされていることを確認します。条件キーをサポートし、転送アクセスセッションでリクエストを行う AWS サービスの場合は、kms:ViaService AWS KMS 条件キーを使用してください。
AWS KMS を直接呼び出す AWS サービスでは、プリンシパル要素にサービスプリンシパルが含まれている必要があります。使用している AWS サービスが AWS KMS を直接呼び出していることを確認します。
リージョンへのオプトイン
AWS KMS キーを共有するアカウントは、受信者アカウントでリージョンにオプトインする必要があります。受信者アカウントでリージョンを有効にしてください。自身の AWS アカウントと受信者アカウントで有効になっているリージョンで別の AWS KMS キーを共有することもできます。