当 AWS KMS 密钥的密钥状态发生变化时获取 Amazon SNS 通知 - AWS Prescriptive Guidance

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

当 AWS KMS 密钥的密钥状态发生变化时获取 Amazon SNS 通知

创建者:Shubham Harsora (AWS)、Aromal Raj Jayarajan (AWS) 和 Navdeep Pareek (AWS)

代码存储库:aws-kms-deletion-notification

环境:PoC 或试点

技术:基础架构; CloudNative; DevOps;安全、身份、合规

工作负载:所有其他工作负载

AWS 服务:亚马逊 EventBridge;AWS KMS;亚马逊 SNS

Summary

删除与 AWS Key Management Service(AWS KMS)密钥关联的数据和元数据后,该密钥将丢失。删除是不可逆的,您无法恢复丢失的数据(包括加密数据)。您可以设置通知系统,提醒您 AWS KMS 密钥的密钥状态发生更改,从而防止数据丢失。

此模式向您展示如何监控 AWS KMS 密钥的状态变化,方法是使用亚马逊 EventBridge 和亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 在 AWS KMS 密钥的密钥状态更改为或时自动发出通知。Disabled PendingDeletion例如,如果用户尝试禁用或删除 AWS KMS 密钥,您将收到一封电子邮件通知,其中包含有关尝试更改状态的详细信息。您也可以使用此模式安排删除 AWS KMS 密钥。

先决条件和限制

先决条件

  • 一个拥有 AWS Identity and Access Management (IAM) 用户的有效 Amazon Web Services account

  • 一个 AWS KMS 密钥

架构

技术堆栈

  • Amazon EventBridge

  • AWS Key Management Service(AWS KMS)

  • Amazon Simple Notification Service (Amazon SNS)

目标架构

下图显示了一种架构,用于构建自动监控和通知流程,以检测 AWS KMS 密钥状态的任何更改。

用于构建自动监控和通知流程的架构

图表显示了以下工作流:

  1. 用户禁用或计划删除 AWS KMS 密钥。

  2. EventBridge 规则评估计划DisabledPendingDeletion事件。

  3. 该 EventBridge 规则调用了 Amazon SNS 主题。

  4. Amazon SNS 会向用户发送一封电子邮件通知消息。

注意:您可以自定义电子邮件以满足组织的需求。我们建议包括有关使用 AWS KMS 密钥的实体的信息。这可以帮助用户了解删除 AWS KMS 密钥的影响。您还可以安排在 AWS KMS 密钥删除前一两天发送提醒电子邮件通知。

自动化和扩缩

AWS CloudFormation 堆栈部署了所有必要的资源和服务,以使这种模式发挥作用。您可以在单个账户中独立实施该模式,也可以将 AWS 用 CloudFormation StackSets于 AWS Org anizations 中的多个独立账户或组织单位

工具

  • AWS CloudFormation 可帮助您设置 AWS 资源,快速一致地配置这些资源,并在 AWS 账户和 AWS 区域的整个生命周期中对其进行管理。此模式的 CloudFormation 模板描述了您需要的所有 AWS 资源,并 CloudFormation 为您预置和配置这些资源。

  • Amazon EventBridge 是一项无服务器事件总线服务,可帮助您将应用程序与来自各种来源的实时数据连接起来。 EventBridge 提供来自您自己的应用程序和 AWS 服务的实时数据流,并将这些数据路由到目标,例如 AWS Lambda。 EventBridge 简化了构建事件驱动架构的过程。

  • AWS Key Management Service (AWS KMS) 可帮助您创建和控制加密密钥,以帮助保护您的数据。

  • Amazon Simple Notification Service (Amazon SNS) 可帮助您协调和管理发布者与客户端(包括 Web 服务器和电子邮件地址)之间的消息交换。

代码

此模式的代码可在 GitHub 监控 AWS KMS 密钥禁用和计划删除存储库中找到。

操作说明

任务描述所需技能

克隆存储库。

运行以下命令,将 Mon GitHub itor AWS KMS 密钥禁用和计划删除存储库克隆到本地计算机:

git clone https://github.com/aws-samples/aws-kms-deletion-notification

AWS 管理员、云架构师

更新模板的参数。

在代码编辑器中,打开您从存储库中克隆的Alerting-KMS-Events.yaml CloudFormation 模板,然后更新以下参数:

  • 对于 DestinationEmailAddress,请输入您计划用于接收 SNS 通知的有效电子邮件地址。

  • 对于 SNSTopicName,请输入 SNS 主题的名称。

AWS 管理员、云架构师

部署 CloudFormation 模板。

  1. 登录 AWS 管理控制台并打开CloudFormation 控制台

  2. 在导航窗格中,选择创建堆栈,然后选择使用新资源(标准)

  3. 标识资源页面上,选择下一步

  4. 指定模板页面,对于模板来源选择上传模板文件

  5. 选择 “选择文件”,从克隆的 GitHub 存储库中选择Alerting-KMS-Events.yaml文件,然后选择 “下一步”。

  6. 堆栈名称中,输入堆栈名称。

  7. 选择提交

AWS 管理员、云架构师
任务描述所需技能

确认订阅电子邮件。

CloudFormation 模板成功部署后,Amazon SNS 会向您在模板中 CloudFormation 提供的电子邮件地址发送订阅确认消息。

要接收通知,您必须确认此电子邮件订阅。有关更多信息,请参阅 Amazon SNS 开发人员指南中的确认订阅

AWS 管理员、云架构师
任务描述所需技能

禁用 AWS KMS 密钥。

  1. 登录 AWS 管理控制台,然后打开 AWS KMS 控制台

  2. 要更改区域,请选择当前显示的区域的名称,然后选择要切换到的区域。

  3. 在导航窗格中,选择客户托管密钥

  4. 勾选要启用或禁用的 AWS KMS 密钥对应的复选框。

  5. 要禁用 AWS KMS 密钥,请依次选择密钥操作禁用

AWS 管理员

验证订阅。

确认您收到 Amazon SNS 通知电子邮件。

AWS 管理员
任务描述所需技能

删除 CloudFormation 堆栈。

  1. 登录 AWS 管理控制台并打开CloudFormation 控制台

  2. 在导航窗格中,选择 Stacks(堆栈)

  3. 选择您之前创建的堆栈,然后选择删除

AWS 管理员

相关资源

其他信息

默认情况下,Amazon SNS 会在传输过程中提供加密。为了与安全最佳实践保持一致,您还可以使用 AWS KMS 客户托管密钥为 Amazon SNS 启用服务器端加密。