AWS Key Management Service (AWS KMS) アカウントの AWS KMS キーのグラントとプリンシパルを AWS リージョン別にリストしたいと考えています。
解決方法
AWS Command Line Interface (AWS CLI) または AWS SDK を使用して、KMS キーが持っているグラントの数と、各キーのプリンシパルを取得できます。list-keys および list-grants を実行するポリシー許可を使用して、AWS CLI をインストールおよび設定するようにしてください。
注意: AWS CLI コマンドの実行時にエラーが発生する場合は、AWS CLI の最新バージョンを使用していることを確認してください。
以下のコマンドを実行して、KMS キーとグラントをリストします。
注意: リージョンを AWS リージョンに、AWS KMS キー ID を AWS KMS キー ID に置き換えてください。
aws kms list-keys --region <your-region>
aws kms list-grants --region <your-region> --key-id <your-AWS KMS-key-ID>
特定の AWS リージョンのすべての KMS キー に対してクエリを実行するには、以下のコマンドを実行します。
for key in $(aws kms list-keys --region <your-region> --query 'Keys[].KeyId' --output text);do aws kms list-grants --region <your-region> --key-id $key; done
注意: この例は、組み込みの AWS CLI --query option を使用して、出力からの要素をフィルタリングします。
このコマンドを実行して、各プリンシパルにおける KMS キーの付与数を一覧表示します。
aws kms list-grants --region <your-region> --key-id <your-AWS KMS-key-ID> | jq '.Grants[].GranteePrincipal' -r | sort | uniq -c;
注意: このコマンドを実行するには、jq がインストールされている必要があります。jq のインストール手順については、JSON 出力形式をご参照ください。