【小ネタ】AWS CLI を使用した KMS キーのアクセス許可状況の確認方法
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
テクニカルサポートの 片方 です。
KMS(AWS Key Management Service)では様々なアクセス許可のパターンや認可条件がございます。
そのため、KMS(AWS Key Management Service)が関係するお問い合わせがある際に、対象 KMS キーのアクセス許可がされているかの判断有無は大変です。
その様な場合には、AWS CLI コマンドを利用することで、対象 KMS キーの呼び出しが成功するかどうかを確認可能です。
やってみた
以下ドキュメントを参考にやってみました。
簡単に説明すると、該当 KMS キーのアクセス許可をテストするため、API リクエストの際、"--dry-run" を指定することで、KMS キーのアクセス許可状況を確認可能です。
メッセージには次の例外が含まれます。
・DryRunOperationException ‐ DryRun が指定されていなければリクエストは成功します。
・ValidationException ‐ 間違った API パラメータが指定されたためリクエストが失敗しました。
・AccessDeniedException ‐ KMS リソースで指定された API アクションを実行するアクセス許可がありません。
AWS CLI サンプルコマンド
aws kms create-grant \
--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
--grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
--operations Decrypt \
--dry-run
失敗時
※ 一部マスクします
An error occurred (AccessDeniedException) when calling the CreateGrant operation: User: arn:aws:sts::123456789012:assumed-role/AmazonSSMManagedInstanceCore/i-0448983f5ef5edb4d is not authorized to perform: kms:CreateGrant on resource: arn:aws:kms:ap-northeast-1:123456789012:key/aaaabbbb-xxxx-xxxx-1234-5678xxxxxxxx because no identity-based policy allows the kms:CreateGrant action
成功時
対象ロールへ、kms:CreateGrant アクションを許可します。
An error occurred (DryRunOperationException) when calling the CreateGrant operation: The request would have succeeded, but the DryRun option is set.
DryRunOperationException であるため、DryRun オプションを使用しなければ成功することを確認できました。
参考資料
- AWS Key Management Service(マネージド型の暗号化キー作成と管理)| AWS
- AWS KMS API コールのテスト - AWS Key Management Service
- Actions - AWS Key Management Service
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。