AWS Key Management Service (AWS KMS) の AWS KMS キーポリシーを更新したいと考えています。自分の AWS ID とアクセス管理 (IAM) ID (ユーザー、グループ、ロール) の管理者権限があることは確認しました。しかし、KMS キーポリシーの読み取りや更新ができません。
簡単な説明
IAM プリンシパルには、API アクション権限として、キーポリシーを読み取るための [GetKeyPolicy と、ポリシーを更新するための PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) があることが必要です。こうした権限は、キーポリシーがあればそのままで、なくてもキーと IAM ポリシーを組み合われば得られます。詳細については、「AWS Key Management Service」を参照してください。
デフォルトの AWS 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 アクションのアクセス許可があっても実行できない場合があります。このエラーを解決するには、「IAM ユーザー権限を有効にする」というステートメントが変更されていないか確認します。
解決方法
IAM ポリシーのアクセス許可を確認する
次の IAM ポリシーと同様の AWS 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 イベント履歴を使用する
- AWS CloudTrail コンソールを開き、[イベント履歴] を選択します。
- [ルックアップ属性] ドロップダウンリストを選択し、[イベント名] を選択します。
- 検索ウィンドウに「PutKeyPolicy」と入力します。
- 最新の PutKeyPolicy イベントを開きます。
- [イベントレコード] で、ポリシーをコピーして、お気に入りのテキストエディタに貼り付けます。
- ポリシーを解析して読み取り可能な形式にします。
- IAM ポリシー Sid の「キー管理者のアクセスを許可する」で、IAM ID 管理者が次のようになっているようにします。
{ "Sid": "Allow access for Key Administrators",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:role/Administrator"
]
},
そうすると、キー管理者がキーへのアクセスを回復することができます。
Athena クエリを使用する
CloudTrail イベントの履歴イベントが90日を過ぎている場合は、Amazon Athena で CloudTrail ログを検索できます。手順については、「CloudTrail コンソールで CloudTrail ログの Athena テーブルを作成する」を参照してください。
詳細については、「CloudTrail ログ検索をするために Athena テーブルを自動的に作成する方法を教えてください。」を参照してください。
関連情報
安全なアクセスキー
AWS KMS の概念