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

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

使用 Amazon CloudWatch 进行监控

您可以使用 Amazon CloudWatch 监控客户主密钥 (CMK),该服务可从 AWS KMS 收集原始数据并将其处理为易读、接近实时的指标。这些数据会保存两周,从而使您能够访问历史信息,并更好地了解您 CMK 的使用情况及其随时间推移而发生的变化。有关 Amazon CloudWatch 的更多信息,请参阅 Amazon CloudWatch 用户指南

AWS KMS 指标和维度

当您 时将密钥材料导入 CMK并将其设置为过期,AWS KMS 将向 CloudWatch 发送指标和维度。您可以使用 AWS 管理控制台和 Amazon CloudWatch API 查看 AWS KMS 指标。

AWS KMS 指标

AWS/KMS 命名空间包括以下指标。

第二次关键材料过期

此度量跟踪导入的密钥材料过期之前剩余的秒数。此指标 AWS KMS 源为EXTERNAL并且其密钥材料已经过期或已设置为过期。该指标最有用的统计数据是Minimum,它会告诉您指定统计周期内所有数据点剩余的最小时间量。此指标的唯一有效单位是Seconds

使用该指标可以跟踪导入的密钥材料过期之前的剩余时间。当该时间量低于您定义的阈值时,您可能需要采取措施,例如重新导入密钥材料,并设置新的到期日期。您可以创建 CloudWatch 警报以在发生这种情况时通知您。有关更多信息,请参阅 创建 CloudWatch 警报以监控 AWS KMS 指标

AWS KMS 指标的维度

AWS KMS 指标使用AWS/KMS命名空间,并且只有一个有效的维度:KeyId。您可以使用此维度查看特定 KMS 密钥或 KMS 密钥集的度量数据。

如何查看 AWS KMS 指标?

您可以使用 AWS 管理控制台和 Amazon CloudWatch API 查看 AWS KMS 指标。

使用 CloudWatch 控制台查看指标

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

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

  3. 在导航窗格中,选择 Metrics

  4. 在内容窗格中,选择 All metrics 选项卡。然后,下面AWS 命名空间中,选择KMS

  5. 选择 Per-Key Metrics 以查看单独的指标和维度。

使用 Amazon CloudWatch API CloudWatch API 查看指标

要使用云监视 API 查看 AWS KMS 指标,请发送ListMetrics请求与Namespace设置为AWS/KMS。下例说明如何使用AWS 命令行界面 (AWS CLI)

$ aws cloudwatch list-metrics --namespace AWS/KMS

创建 CloudWatch 警报以监控 AWS KMS 指标

您可以创建 CloudWatch 警报,使其在指标的值发生改变并导致报警改变状态时发送 Amazon SNS 消息。警报会每隔一段时间 (由您指定) 监控一个指标,并根据相对于给定阈值的指标值每隔若干个时间段执行一项或多项操作。操作是一个发送到 Amazon SNS 主题或 Auto Scaling 策略的通知。警报只会调用操作进行持续的状态变更。CloudWatch 警报将不会调用操作,因为这些操作处于特定状态,该状态必须改变并在指定数量的时间段内一直保持。

创建 CloudWatch 警报以监控已导入密钥材料的到期时间

当您将密钥材料导入 CMK 中时,您可以选择性地指定密钥材料的过期时间。当密钥材料过期后,AWS KMS 将删除密钥材料,并且 CMK 将变为不可用。要再次使用该 CMK,您必须重新导入密钥材料。您可以创建 CloudWatch 警报,以在导入的密钥材料过期之前的剩余时间量低于您定义的阈值(例如,10 天)时通知您。如果您收到此类警报的通知,您可能需要采取措施,例如重新导入密钥材料并设置新的到期日期。

创建警报以监控已导入密钥材料的到期时间(AWS 管理控制台)

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

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

  3. 在导航窗格中,选择 Alarms。然后选择 Create Alarm (创建警报)

  4. 选择 Browse Metrics,然后选择 KMS

  5. 选中要监控的 CMK 的密钥 ID 旁的复选框。

  6. 在下方窗格中,使用菜单将统计数据更改为 Minimum 并将时间段设置为 1 Minute。然后选择 Next

  7. Create Alarm 窗口中,执行以下操作:

    1. 对于 Name (名称),键入一个名称,如 KeyMaterialExpiresSoon

    2. 对于随后的 Whenever: (每当:),为 is: (是:) 选择 <=,然后键入阈值的秒数。例如,如果要在所导入密钥材料的到期之前剩余时间不超过 10 天时获得通知,则键入 864000

    3. 对于 for consecutive period(s) (对于连续周期),键入 1(如果需要)。

    4. 对于Send notification to:,执行以下操作之一:

      • 要使用新的 Amazon SNS 主题,请选择新列表,然后键入新的主题名称。对于 Email list:,键入至少一个电子邮件地址。您可以键入多个电子邮件地址,并使用逗号将它们隔开。

      • 要使用现有 Amazon SNS 主题,请选择要使用的主题的名称。

    5. 选择 Create Alarm

  8. 如果您选择将通知发送到某个电子邮件地址,请打开从 no-reply@sns.amazonaws.com 收到的主题为“AWS Notification - Subscription Confirmation”的电子邮件。选择电子邮件中的 Confirm subscription 链接以确认您的电子邮件地址。

    重要

    确认电子邮件地址后,您才会收到电子邮件通知。

创建 CloudWatch 警报以监控待删除的 CMK 的使用情况

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

有关更多信息,请参阅 创建 Amazon CloudWatch 警报,以检测待删除客户主密钥的使用情况

AWS KMS 事件

AWS KMS 与 Amazon CloudWatch Events 集成,以通知您影响 CMK 的特定事件。每个事件以 JSON (JavaScript 对象表示法) 格式表示,包含事件名称、事件发生的日期和时间、受影响的 CMK 等等。您可以使用 CloudWatch Events 收集这些事件,并设置将事件路由到一个或多个targets例如 AWS Lambda 函数、Amazon SNS 主题、Amazon SQS 队列、Amazon Kinesis 数据流中的流或内置目标。

有关将 CloudWatch Events 与其他类型的事件 (包括 AWS CloudTrail 在记录读/写 API 请求时发出的事件) 结合使用的更多信息,请参阅Amazon CloudWatch Events

以下主题介绍 AWS KMS 创建的 CloudWatch Events。

KMS CMK 轮换

当您启用自动密钥轮换对于客户托管 CMK,AWS KMS 每年为 CMK 创建新的密钥材料。密钥材料AWS 托管 CMK每三年自动轮换一次。

每当 AWS KMS 轮换密钥材料时,它向 CloudWatch Events 发送 KMS CMK 轮换事件。AWS KMS 将以最大努力生成此事件。

以下是该事件的示例。

{ "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "KMS CMK Rotation", "source": "aws.kms", "account": "111122223333", "time": "2016-08-25T21:05:33Z", "region": "us-west-2", "resources": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" ], "detail": { "key-id": "1234abcd-12ab-34cd-56ef-1234567890ab" } }

KMS 导入的密钥材料到期时间

当您将密钥材料导入 CMK 中时,您可以选择性地指定密钥材料的过期时间。当密钥材料过期后,AWS KMS 将删除密钥材料并将相应的事件发送到 CloudWatch Events。AWS KMS 将以最大努力生成此事件。

以下是该事件的示例。

{ "version": "0", "id": "9da9af57-9253-4406-87cb-7cc400e43465", "detail-type": "KMS Imported Key Material Expiration", "source": "aws.kms", "account": "111122223333", "time": "2016-08-22T20:12:19Z", "region": "us-west-2", "resources": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" ], "detail": { "key-id": "1234abcd-12ab-34cd-56ef-1234567890ab" } }

KMS CMK 删除

当您 时计划密钥删除,AWS KMS 会强制执行一段等待期,然后再删除 CMK。等待期结束后,AWS KMS 将删除 CMK 并将相应的事件发送到 CloudWatch Events。AWS KMS 保证了这个 CloudWatch 事件。由于重试,它可能会在几秒钟内生成多个删除同一 CMK 的事件。

以下是该事件的示例。

{ "version": "0", "id": "e9ce3425-7d22-412a-a699-e7a5fc3fbc9a", "detail-type": "KMS CMK Deletion", "source": "aws.kms", "account": "111122223333", "time": "2016-08-19T03:23:45Z", "region": "us-west-2", "resources": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" ], "detail": { "key-id": "1234abcd-12ab-34cd-56ef-1234567890ab" } }