AWS Key Management Service (AWS KMS) で AWS KMS キーポリシーを更新したいと考えています。AWS Identity and Access Management (IAM) アイデンティティ (ユーザー、グループ、およびロール) の管理者許可があることは確認しましたが、KMS キーポリシーの読み取りや更新を実行できません。
簡単な説明
IAM プリンシパルには、キーポリシーを読み取るための GetKeyPolicy と、ポリシーを更新するための PutKeyPolicy の API アクション許可が必要です。これらの許可は、キーポリシーで直接付与されるか、キーポリシーと IAM ポリシーの組み合わせで付与されます。詳細については、「Managing access to AWS KMS keys」を参照してください。
デフォルトの KMS キー IAM ポリシーには、以下のようなステートメントが含まれています。
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}
AWS アカウント 111122223333 の IAM エンティティは、アタッチされたポリシーで許可されている任意の AWS KMS アクションを実行できます。アタッチされているポリシーに許可が設定されているのに、エンティティが GetKeyPolicy または PutKeyPolicy などの API アクションを実行できない場合は、「Enable IAM User Permissions」ステートメントが変更されている可能性があります。
解決方法
IAM ポリシー許可を検証する
以下の IAM ポリシーのように、KMS キーの読み取りと更新を行う許可が IAM エンティティにあることを確認します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Create*",
"kms:Describe*",
"kms:Enable*",
"kms:List*",
"kms:Put*",
"kms:Update*",
"kms:Revoke*",
"kms:Disable*",
"kms:Get*",
"kms:Delete*",
"kms:TagResource",
"kms:UntagResource",
"kms:ScheduleKeyDeletion",
"kms:CancelKeyDeletion"
],
"Resource": "arn:aws:kms:*:111122223333:key/*"
}
]
}
CloudTrail イベント履歴を使用する
1. AWS CloudTrail コンソールを開き、[Event history] (イベント履歴) をクリックします。
2. [Lookup attributes] (ルックアップ属性) ドロップダウンリストをクリックしてから、[Event name] (イベント名) を選択します。
3. 検索ウィンドウに PutKeyPolicy と入力します。
4. 最新の PutKeyPolicy イベントを開きます。
5. [Event record] (イベントレコード) でポリシーをコピーして、任意のテキストエディタに貼り付けます。
6. ポリシーを読み取り可能な形式に解析します。
7. IAM ポリシーの Sid「Allow access for Key Administrators」で、以下のような IAM アイデンティティ管理者を書き留めておきます。
{
"Sid": "Allow access for Key Administrators",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:role/Administrator"
]
},
その後、キー管理者を使用してキーへのアクセス権を取り戻すことができます。
Athena クエリを使用する
CloudTrail イベント履歴のイベントが 90 日以上経過している場合は、Amazon Athena を使用して CloudTrail ログを検索できます。
この手順については、「CloudTrail ログ用の Athena テーブルを作成するための CloudTrail コンソールの使用」を参照してください。
詳細については、「AWS CloudTrail ログ検索をするために Amazon Athena のテーブルを自動的に作成する方法を教えてください」を参照してください。
関連情報
AWS アクセスキーを管理するためのベストプラクティス
AWS KMS keys