AWS Key Management Service (AWS KMS) キーの過去の使用状況を特定したいです。
解決策
アクティブではない KMS キーを直接識別することはできません。ただし、AWS CloudTrail と Amazon Athena を使用してキーの使用状況を追跡することはできます。
CloudTrail イベント履歴を使用する
CloudTrail コンソールを使用すると、AWS リージョン内の過去 90 日間の管理イベントを確認できます。90 日が経過すると、イベントはイベント履歴に表示されなくなります。
次の手順を実行します。
- CloudTrail コンソールを開きます。
- リージョンを選択します。
- ナビゲーションペインで [イベント履歴] を選択します。
- [イベント履歴]ページの [ルックアップ属性] で、[イベントソース] を選択します。次に、検索フィールドに kms.amazonaws.com と入力すると、AWS KMS API コールが表示されます。
- [日付と時刻で絞り込む] フィールドで時間範囲を選択し、最近のアクティビティを確認します。
各イベントの [イベントレコード] を確認することで、キーの ARN、ユーザー ID、呼び出し元サービスを特定できます。
注: AWS KMS イベントが複数ある場合、この方法では時間がかかる場合があります。
Athena を使用して CloudTrail ログをクエリする
次の手順を実行します。
- CloudTrail ログから Athena テーブルを作成します。
- AWS KMS API コールを取得してキーの ARN で絞り込むには、次の Athena クエリを実行します。
SELECT
eventName,
COUNT(eventName) AS NumberOfChanges,
eventSource,
resources
FROM
"default"."your-table-name"
WHERE
eventSource = 'kms.amazonaws.com' AND
ARRAY_JOIN(TRANSFORM(resources, x -> x.arn), '') LIKE '%kms-key-id%'
OR CAST(requestParameters AS VARCHAR) LIKE '%kms-key-id%'
GROUP BY
eventName,
eventSource,
resources
ORDER BY
NumberOfChanges DESC
注: 上記のコード例では、値を実際の Athena テーブル名と KMS キー ID の値に置き換えてください。
特定の期間で絞り込むには、WHERE 句に条件を追加します。
AND eventtime >= 'YYYY-MM-DDT00:00:00Z' AND eventtime <= 'YYYY-MM-DDT00:00:00Z'
注: Athena では、実行したクエリに対して料金が発生します。
関連情報
AWS CloudTrail で AWS KMS API コールをログ記録する
LookupEvents
AWS KMS キーを監視する
KMS キーの過去の使用状況を判断する