我想查找我的 AWS Key Management Service (AWS KMS) 密钥的过去使用情况。
解决方法
您无法直接识别非活动的 KMS 密钥。但是,您可以使用 AWS CloudTrail 和 Amazon Athena 来跟踪密钥使用情况。
使用 CloudTrail 事件历史记录
您可以使用 CloudTrail 控制台查看 AWS 区域中最近 90 天的管理事件。90 天后,事件历史记录中将不再显示这些事件。
完成以下步骤:
- 打开 CloudTrail 控制台。
- 选择您的区域。
- 在导航窗格中,选择 Event history(事件历史记录)。
- 在 Event history(事件历史记录)页面上,对于 Lookup attributes(查找属性),选择 Event source(事件源)。然后,在搜索字段中输入 kms.amazonaws.com 以查看 AWS KMS API 调用。
- 在 Filter by date and time(按日期和时间筛选)字段中,选择一个时间范围以查看最近的活动。
您可以查看每个事件的 Event record(事件记录),以确定密钥 ARN、用户身份和调用服务。
**注意:**如果您有多个 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 密钥的过去使用情况