使用 Amazon KMS 记录 Amazon CloudTrail API 调用 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon KMS 记录 Amazon CloudTrail API 调用

Amazon KMS 与 Amazon CloudTrail 进行了集成,后者是一项纪录用户、角色和其他 Amazon 服务对 Amazon KMS 进行的所有调用的服务。CloudTrail 将对 Amazon KMS 的所有 API 调用均作为事件捕获,包括来自 Amazon KMS 控制台、Amazon KMS API、Amazon CloudFormation 模板、Amazon Command Line Interface(Amazon CLI)和 Amazon Tools for PowerShell 的调用。

CloudTrail 记录所有 Amazon KMS 操作(包括只读操作),如 ListAliasesGetKeyRotationStatus,管理 KMS 密钥的操作,例如 CreateKeyPutKeyPolicy,以及加密操作,例如 GenerateDataKeyDecrypt。它还记录 Amazon KMS 为您调用的内部操作,例如 DeleteExpiredKeyMaterialDeleteKeySynchronizeMultiRegionKeyRotateKey

CloudTrail 记录成功的操作和失败的尝试调用,例如当调用方被拒绝访问资源时。在 KMS 密钥上的跨账户操作将记录在调用方的账户和 KMS 密钥所有者账户中。但是,因访问被拒绝而受到拒绝的跨账户 Amazon KMS 请求仅记录在发起人的账户中。

出于安全原因,有些字段将从 Amazon KMS 日志条目中省略,例如 Encrypt 请求的 Plaintext 参数,以及对 GetKeyPolicy 或任何加密操作的响应。为了更轻松地搜索特定 KMS 密钥的 CloudTrail 日志条目,即使 API 操作没有返回密钥 ARN,Amazon KMS 也会将受影响的 KMS 密钥的密钥 ARN 添加到某些 Amazon KMS 密钥管理操作的日志条目中的 responseElements 字段中。

尽管默认情况下,所有 Amazon KMS 操作都记录为 CloudTrail 事件,但您可以从 CloudTrail 跟踪中排除 Amazon KMS 操作。有关详细信息,请参阅 从跟踪中排除 Amazon KMS 事件

在 CloudTrail 中记录事件

在您创建 Amazon Web Services 账户 时,将在该账户上启用 CloudTrail。当 Amazon KMS 中发生活动时,该活动将记录在 CloudTrail 事件中,并与其它 Amazon 服务事件一同保存在 Event history(事件历史记录)中。您可以在 Amazon Web Services 账户中查看、搜索和下载最新事件。有关更多信息,请参阅使用 CloudTrail 事件历史记录查看事件

对于Amazon Web Services 账户中的事件的持续记录(包括 Amazon KMS 的事件),请创建跟踪记录。通过跟踪,CloudTrail 可将日志文件传送至 Amazon S3 桶。预设情况下,在控制台中创建跟踪记录时,此跟踪记录应用于所有Amazon Web Services 区域。此跟踪记录在 Amazon 分区中记录所有区域中的事件,并将日志文件传送至您指定的 Simple Storage Service(Amazon S3)桶。此外,您可以配置其他 Amazon Web Services,进一步分析在 CloudTrail 日志中收集的事件数据并采取行动。有关更多信息,请参阅:

要了解有关 CloudTrail 的更多信息,请参阅《Amazon CloudTrail 用户指南》。要了解监控 KMS 密钥使用情况的其他方式,请参阅 监控 Amazon KMS keys

每个事件或日志条目都包含有关生成请求的人员信息。身份信息可帮助您确定以下内容:

  • 如果请求是使用根凭证或 IAM 用户凭证发出的。

  • 请求是使用角色还是联合身份用户的临时安全凭证发出的。

  • 如果请求是由其他 Amazon Web Service发出的。

有关更多信息,请参阅 CloudTrail userIdentity 元素

在 CloudTrail 中搜索事件

要搜索 CloudTrail 日志条目,请使用 CloudTrail 控制台CloudTrail LookupEvents 操作。CloudTrail 支持多种属性值来筛选您的搜索,包括事件名称、用户名和事件源。

为了帮助您在 CloudTrail 中搜索 Amazon KMS 日志条目,Amazon KMS 会填充以下 CloudTrail 日志条目字段。

注意

从 2022 年 12 月开始,在更改特定 KMS 密钥的所有管理操作中,Amazon KMS 会填充资源类型资源名称属性。在以下操作的较早的 CloudTrail 条目中,这些属性值可能为空:CreateAliasCreateGrantDeleteAliasDeleteImportedKeyMaterialImportKeyMaterialReplicateKeyRetireGrantRevokeGrantUpdateAliasUpdatePrimaryRegion

属性 日志条目
事件源(EventSource kms.amazonaws.com 全部操作。
资源类型(ResourceType AWS::KMS::Key 更改特定 KMS 密钥的管理操作,例如 CreateKeyEnableKey,而非 ListKeys
资源名称(ResourceName 密钥 ARN(或密钥 ID 和密钥 ARN) 更改特定 KMS 密钥的管理操作,例如 CreateKeyEnableKey,而非 ListKeys

为了帮助您查找对特定 KMS 密钥进行管理操作的日志条目,即使 Amazon KMS API 操作没有返回密钥 ARN,Amazon KMS 也会将受影响的 KMS 密钥的密钥 ARN 记录在日志条目的 responseElements.keyId 元素中。

例如,成功调用 DisableKey 操作不会在响应中返回任何值,但是在 DisableKey 日志条目中,responseElements.keyId 值,而非空值,包含禁用的 KMS 密钥的密钥 ARN。

此功能添加于 2022 年 12 月,会影响以下 CloudTrail 日志条目:CreateAliasCreateGrantDeleteAliasDeleteKeyDisableKeyEnableKeyEnableKeyRotationImportKeyMaterialRotateKeySynchronizeMultiRegionKeyTagResourceUntagResourceUpdateAliasUpdatePrimaryRegion

从跟踪中排除 Amazon KMS 事件

大多数 Amazon KMS 用户依靠 CloudTrail 跟踪中的事件来提供其 Amazon KMS 资源的使用和管理记录。跟踪可以成为审核关键事件的宝贵数据来源,例如,创建、禁用和删除 Amazon KMS keys,更改密钥策略以及 Amazon 服务代表您使用 KMS 密钥。在某些情况下,CloudTrail 日志条目中的元数据(如加密操作中的加密上下文)可以帮助您避免或解决错误。

但是,由于 Amazon KMS 可以生成大量事件,因此 Amazon CloudTrail 允许您从跟踪中排除 Amazon KMS 事件。此按跟踪设置会排除所有 Amazon KMS 事件。您不能排除特定 Amazon KMS 事件。

警告

从 CloudTrail 日志中排除 Amazon KMS 事件可能会掩盖使用 KMS 密钥的操作。请谨慎赋予委托人执行此操作所需的 cloudtrail:PutEventSelectors 权限。

要从跟踪中排除 Amazon KMS 事件,请执行以下操作:

您可以随时更改控制台设置或跟踪的事件选择器,以禁用此排除。随后,跟踪将开始记录 Amazon KMS 事件。但是,它无法恢复在排除生效期间发生的 Amazon KMS 事件。

使用控制台或 API 排除 Amazon KMS 事件时,生成的 CloudTrail PutEventSelectors API 操作也会记录在 CloudTrail 日志中。如果 Amazon KMS 事件未显示在 CloudTrail 日志中,请查找 ExcludeManagementEventSources 属性设置为 kms.amazonaws.comPutEventSelectors 事件。