使用 Amazon 进行监控 CloudWatch - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon 进行监控 CloudWatch

您可以Amazon KMS keys使用 Amazon 进行监控 CloudWatch,该Amazon服务可从中收集原始数据并将其处理Amazon KMS为可读的、近乎实时的指标。这些数据会保存两周,从而使您能够访问历史信息,并更好地了解您 KMS 密钥的使用情况及其随时间推移而发生的变化。

您可以使用 Amazon CloudWatch 提醒您注意重要事件,例如以下事件。

  • KMS 密钥中导入的密钥材料临近到期日期。

  • 仍在使用待删除的 KMS 密钥。

  • KMS 密钥中的密钥材料已自动轮换。

  • KMS 密钥已删除。

您还可以创建一个 Amazon CloudWatch 警报,当您的请求率达到配额值的特定百分比时,提醒您。有关详情,请参阅Amazon安全博客 CloudWatch中的使用 Service Quotas 和 Amazon 管理您的 Amazon KMS API 请求速率

Amazon KMS 指标和维度

Amazon KMS预定义了 Amazon CloudWatch 指标,使您可以更轻松地监控关键数据和创建警报。您可以使用Amazon Web Services Management Console和 Amazon CloudWatch API 查看Amazon KMS指标。

本部分列出了每个Amazon KMS指标和每个指标的维度,并提供了一些基于这些指标和维度创建 CloudWatch 警报的基本指导。

注意

维度组名称

要在 Amazon CloudWatch 控制台中查看指标,请在 “指标” 部分,选择维度组名称。然后,您可以按 Metric name(指标名称)进行筛选。本主题包括各个 Amazon KMS 指标的指标名称和维度组名称。

SecondsUntilKeyMaterialExpiration

此指标跟踪 KMS 密钥中导入的密钥材料过期之前剩余的秒数。此指标仅对具有导入的密钥材料(密钥材料来源EXTERNAL)以及到期日期的 KMS 密钥有效。

使用此指标可以跟踪所导入密钥材料的到期之前剩余时间量。当该时间低于您定义的阈值时,您可能需要重新导入密钥材料并设置新的到期日期。SecondsUntilKeyMaterialExpiration 指标特定于单个 KMS 密钥。您不能使用此指标来监控多个 KMS 密钥或将来可能创建的多个 KMS 密钥。有关创建 CloudWatch 警报以监控此指标的帮助,请参阅为导入的密钥材料过期创建 CloudWatch 警报

该指标最有用的统计数据是 Minimum,它会告诉您指定统计周期内所有数据点的最小剩余时间。此指标的唯一有效单位是 Seconds

维度组名称Per-Key Metrics(各密钥指标)

SecondsUntilKeyMaterialExpiration 的维度
维度 描述;与 Amazon 有关
KeyId 每个 KMS 密钥的值。

ExternalKeyStoreThrottle

Amazon KMS 限制的每个外部密钥存储中对 KMS 密钥进行加密操作的请求数(以 ThrottlingException 响应)。此指标仅适用于外部密钥存储

ExternalKeyStoreThrottle指标仅适用于外部密钥存储中的 KMS 密钥,并且仅适用于加密操作和DescribeKey操作的请求。 Amazon KMS当请求速率超过外部密钥存储的自定义密钥库请求配额时,会限制这些请求。此指标不包括外部密钥存储代理或外部密钥管理器的节流。

使用此指标来查看和调整您的自定义密钥存储请求限额的值。如果此指标表明 Amazon KMS 频繁对您对这些 KMS 密钥的请求节流,则可以考虑申请上调自定义密钥存储请求限额值。如需帮助,请参阅《服务限额用户指南》中的 申请上调限额

如果您经常收到 KMSInvalidStateException 错误,其中包含一条说明请求“due to a very high request rate(由于请求率很高)”而被拒绝的消息,或者请求“because the external key store proxy did not respond in time(由于外部密钥存储代理未及时响应)”而被拒绝,则可能表明您的外部密钥管理器或外部密钥存储代理无法跟上当前的请求速率。如可能,请降低您的请求速率。您也可以考虑请求降低自定义密钥存储请求限额值。降低此限额值可能会增加节流的风险(和 ExternalKeyStoreThrottle 指标值),但这表明多余的请求在发送到外部密钥存储代理或外部密钥管理器之前会很快被 Amazon KMS 拒绝。要申请下调限额,请访问 Amazon Web Services Support 中心 并创建工单。

维度组名称Keystore Throttle Metrics(密钥存储限制指标)

维度 描述
CustomKeyStoreId 每个外部密钥存储的值。
KmsOperation 每个 Amazon KMS API 操作的值。此指标仅适用于加密操作和对外部密钥存储中的 KMS 密钥的 DescribeKey 操作。
KeySpec 每个 KMS 密钥类型的值。对于外部密钥存储中 KMS 密钥的唯一支持的密钥规范是 SYMMETRIC_DEFAULT。

XksProxyCertificateDaysToExpire

距离您的外部密钥存储代理端点XksProxyUriEndpoint)的 TLS 证书过期的天数。此指标仅适用于外部密钥存储

使用此指标创建 CloudWatch 警报,告知您的 TLS 证书即将到期。证书过期后,Amazon KMS 将无法与外部密钥存储代理通信。在您续订证书之前,外部密钥存储中所有受 KMS 密钥保护的数据都将不可访问。

证书警报可防止证书过期,证书过期可能会影响您访问加密资源。设置警报,让您的组织有时间在证书过期之前续订证书。

维度组名称XKS Proxy Certificate Metrics(XKS 代理证书指标)

维度 描述
CustomKeyStoreId 每个外部密钥存储的值。
CertificateName TLS 证书中的主题名称(CN)。

XksProxyCredentialAge

自当前外部密钥存储代理身份验证凭证XksProxyAuthenticationCredential)与外部密钥存储关联以来的天数。此计数从您在创建或更新外部密钥存储的过程中输入身份验证凭证时开始计算。此指标仅适用于外部密钥存储

此值旨在提醒您身份验证凭证的使用时间。但是,由于我们从您将凭证与外部密钥存储关联时开始计算,而不是从您在外部密钥存储代理上创建身份验证凭证时开始计算,这可能无法准确地表明代理中的凭证使用时间。

使用此指标创建 CloudWatch 警报,提醒您轮换外部密钥存储代理身份验证凭据。

维度组名称Per-Keystore Metrics(各密钥存储指标)

维度 描述
CustomKeyStoreId 每个外部密钥存储的值。

XksProxyErrors

与对外部密钥存储代理的 Amazon KMS 请求相关的异常数量。此计数包括外部密钥存储代理返回至 Amazon KMS 的异常,以及外部密钥存储代理在 250 毫秒超时间隔内未响应 Amazon KMS 时发生的超时错误。此指标仅适用于外部密钥存储

使用此指标跟踪外部密钥存储中 KMS 密钥的错误率。这可显示最常见的错误,因此您可以确定工程工作的优先顺序。例如,产生较高不可重试错误率的 KMS 密钥,可能表明您的外部密钥存储配置存在问题。若要查看您的外部密钥存储配置,请参阅 查看外部密钥存储。若要编辑您的外部密钥存储设置,请参阅 编辑外部密钥存储属性

维度组名称XKS Proxy Error Metrics(XKS 代理错误指标)

维度 描述
CustomKeyStoreId 每个外部密钥存储的值。
KmsOperation 生成对 XKS 代理的请求的每个 Amazon KMS API 操作的值。
XksOperation 每个外部密钥存储代理 API 操作的值。
KeySpec 每个 KMS 密钥类型的值。对于外部密钥存储中 KMS 密钥的唯一支持的密钥规范是 SYMMETRIC_DEFAULT。
ErrorType 值:
  • 可重试错误:可能是暂时性错误,例如网络错误。

  • 不可重试错误:可能表示自定义密钥存储配置或外部组件存在问题。

  • 不适用:请求成功;没有错误

ExceptionName

值:

  • 异常名称

  • 无:请求成功;没有错误

XksExternalKeyManagerStates

处于以下各个运行状况状态的外部密钥管理器实例的数量:ActiveDegradedUnavailable。此指标的信息来自与每个外部密钥存储关联的外部密钥存储代理。此指标仅适用于外部密钥存储

以下是与外部密钥存储相关联的外部密钥管理器实例的运行状况。每个外部密钥存储代理都可能会使用不同的指标来衡量外部密钥管理器的运行状况。有关详细信息,请参阅外部密钥存储代理的相关文档。

  • Active:外部密钥管理器运行正常。

  • Degraded:外部密钥管理器运行状况不佳,但仍可以传输流量

  • Unavailable:外部密钥管理器无法传输流量。

使用此指标创建 CloudWatch 警报,提醒您注意外部密钥管理器实例已降级和不可用。要确定哪些外部密钥管理器实例处于各个状态,请查阅您的外部密钥存储代理日志。

维度组名称XKS External Key Manager Metrics(XKS 外部密钥管理器指标)

维度 描述
CustomKeyStoreId 每个外部密钥存储的值。
XksExternalKeyManagerState 每个运行状态的值。

XksProxyLatency

外部密钥存储代理响应 Amazon KMS 请求所用的毫秒数。如果请求超时,则记录的值为 250 毫秒的超时限制。此指标仅适用于外部密钥存储

使用此指标来评估您的外部密钥存储代理和外部密钥管理器的性能。例如,如果代理在加密和解密操作时经常超时,请咨询您的外部代理管理员。

响应缓慢还可能表明您的外部密钥管理器无法处理当前的请求流量。Amazon KMS 建议您的外部密钥管理器每秒能够处理高达 1800 个加密操作请求。如果您的外部密钥管理器无法处理每秒 1800 个请求的速率,请考虑请求降低‭自定义密钥存储中 KMS 密钥的请求限额。使用外部密钥存储中的 KMS 密钥进行加密操作的请求将采用快速失效机制,并出现节流异常,而不是由外部密钥存储代理或外部密钥管理器处理后拒绝。

维度组名称XKS Proxy Latency Metrics(XKS 代理延迟指标)

维度 描述
CustomKeyStoreId 每个外部密钥存储的值。
KmsOperation 生成对 XKS 代理的请求的每个 Amazon KMS API 操作的值。
XksOperation 每个外部密钥存储代理 API 操作的值。
KeySpec 每个 KMS 密钥类型的值。对于外部密钥存储中 KMS 密钥的唯一支持的密钥规范是 SYMMETRIC_DEFAULT。

查看 Amazon KMS 指标

您可以使用Amazon Web Services Management Console和 Amazon CloudWatch API 查看Amazon KMS指标。

使用 CloudWatch 控制台查看指标
  1. 打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/

  2. 如果需要,可以更改区域。从导航栏中,选择 Amazon 资源所在的区域。

  3. 在导航窗格中,依次选择指标所有指标

  4. Browse(浏览)选项卡上,搜索 KMS,然后选择 KMS

  5. 选择要查看的指标维度组名称。

    例如,对于 SecondsUntilKeyMaterialExpiration 指标,请选择 Per-Key Metrics(各密钥指标)。

  6. 要获取指标值的图表,请选择指标名称,然后选择 Add to graph。要将折线图转换为值,请选择 Line(折线),然后选择 Number(数字)。

使用亚马逊 CloudWatch API 查看指标

要使用 CloudWatch API 查看Amazon KMS指标,请发送Namespace设置为的ListMetrics请求AWS/KMS。以下示例说明如何使用 Amazon Command Line Interface (Amazon CLI) 执行该操作。

$ aws cloudwatch list-metrics --namespace AWS/KMS { "Metrics": [ { "Namespace": "AWS/KMS", "MetricName": "SecondsUntilKeyMaterialExpiration", "Dimensions": [ { "Name": "KeyId", "Value": "1234abcd-12ab-34cd-56ef-1234567890ab" } ] }, { "Namespace": "AWS/KMS", "MetricName": "ExtenalKeyStoreThrottle", "Dimensions": [ { "Name": "CustomKeyStoreId", "Value": "cks-1234567890abcdef0" }, { "Name": "KmsOperation", "Value": "Encrypt" }, { "Name": "KeySpec", "Value": "SYMMETRIC_DEFAULT" } ] }, { "Namespace": "AWS/KMS", "MetricName": "XksProxyCertificateDaysToExpire", "Dimensions": [ { "Name": "CustomKeyStoreId", "Value": "cks-1234567890abcdef0" }, { "Name": "CertificateName", "Value": "myproxy.xks.example.com" } ] }, { "Namespace": "AWS/KMS", "MetricName": "XksProxyCredentialAge", "Dimensions": [ { "Name": "CustomKeyStoreId", "Value": "cks-1234567890abcdef0" } ] }, { "Namespace": "AWS/KMS", "MetricName": "XksProxyErrors", "Dimensions": [ { "Name": "CustomKeyStoreId", "Value": "cks-1234567890abcdef0" }, { "Name": "KmsOperation", "Value": "Decrypt" }, { "Name": "XksOperation", "Value": "Decrypt" }, { "Name": "KeySpec", "Value": "SYMMETRIC_DEFAULT" }, { "Name": "ErrorType", "Value": "Retryable errors" }, { "Name": "ExceptionName", "Value": "KMSInvalidStateException" } ] }, { "Namespace": "AWS/KMS", "MetricName": "XksProxyHsmStates", "Dimensions": [ { "Name": "CustomKeyStoreId", "Value": "cks-1234567890abcdef0" }, { "Name": "XksProxyHsmState", "Value": "Active" } ] }, { "Namespace": "AWS/KMS", "MetricName": "XksProxyLatency", "Dimensions": [ { "Name": "CustomKeyStoreId", "Value": "cks-1234567890abcdef0" }, { "Name": "KmsOperation", "Value": "Decrypt" }, { "Name": "XksOperation", "Value": "Decrypt" }, { "Name": "KeySpec", "Value": "SYMMETRIC_DEFAULT" } ] } ] }

创建 CloudWatch 警报以监控 KMS 密钥

您可以根据Amazon KMS指标创建 Amazon CloudWatch 警报。当指标值超过警报配置中指定的阈值时,警报会发送一封电子邮件。警报可以将电子邮件消息发送到 Amazon Simple Notification Service (Amazon SNS) 主题Amazon EC2 Auto Scaling 策略。有关 CloudWatch 警报的详细信息,请参阅《亚马逊 CloudWatch 用户指南》中的 “使用亚马逊 CloudWatch 警报

针对到期的导入密钥材料创建警报

您可以使用该SecondsUntilKeyMaterialExpiration指标创建 CloudWatch 警报,在 KMS 密钥中导入的密钥材料即将过期时通知您。

当您将密钥材料导入 KMS 密钥中时,可以选择性地指定密钥材料的到期时间。当密钥材料过期后,Amazon KMS 将删除密钥材料,并且 KMS 密钥将变为不可用。要再次使用该 KMS 密钥,您必须重新导入密钥材料

有关说明,请参阅为导入的密钥材料过期创建 CloudWatch 警报

创建待删除 KMS 密钥的使用情况的警报

当您为 KMS 密钥计划删除时,Amazon KMS 会强制执行一段等待期,然后再删除 KMS 密钥。您可以利用这段等待期来确保现在或将来都不需要 KMS 密钥。您还可以配置 CloudWatch警报,以便在等待期间有人或应用程序尝试在加密操作中使用 KMS 密钥时向您发出警报。如果您收到来自此类告警的通知,您可能需要取消删除 KMS 密钥。

有关说明,请参阅创建检测待删除 KMS 密钥的使用的警报

创建警报以监控外部密钥存储

您可以根据外部密钥存储和外部密钥存储中的 KMS 密钥的指标创建 CloudWatch 警报。

例如,我们建议您设置 CloudWatch 警报,在外部密钥存储的 TLS 证书即将过期(XksProxyCertificateDaysToExpire)、您的外部密钥存储代理报告您的外部密钥管理器实例处于降级或不可用状态时(XksProxyHsmStates)通知您。

有关说明,请参阅 监控外部密钥存储