监控和修复 AWS KMS 密钥的计划删除 - AWS Prescriptive Guidance

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

监控和修复 AWS KMS 密钥的计划删除

由 Mikesh Khanal (AWS) 和 Ramya Pulipaka (AWS) 创建

环境:生产

技术:安全、身份、合规、运营

AWS 服务:亚马逊 SNS;AWS CloudTrail;亚马逊 CloudWatch

总结

在 Amazon Web Services (AWS) 云上,删除 AWS Key Management Service (AWS KMS) 密钥可能会导致数据丢失。这将删除密钥材料以及与 AWS KMS 密钥关联的所有元数据,并且不可撤销。删除 AWS KMS 密钥后,您不能再解密用 AWS KMS 密钥加密的数据,这意味着该数据将无法恢复。

此模式设置监控,并在应用程序或用户计划删除 AWS KMS 密钥时发出通知。如果您收到此通知,则可能要取消删除该 AWS KMS 密钥并重新考虑删除它的决定。该模式使用 AWS Systems Manager 自动化运行手册AWSConfigRemediationCancelKeyDeletion来简化取消删除 AWS KMS 密钥的操作。

注意:该模式的 CloudFormation 模板必须部署在您要监控 AWS KMS 密钥删除情况的所有 AWS 区域。

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account

  • 了解以下 Amazon Web Services: 

    • Amazon EventBridge

    • AWS KMS

    • Amazon Simple Notification Service (Amazon SNS)

    • AWS Systems Manager

限制

  • 要对解决方案进行任何定制,都需要了解 AWS CloudFormation 模板和该模式中使用的 AWS 服务。

  • 目前,该方案使用默认的事件总线,可以根据需求进行定制。有关自定义事件总线的更多信息,请参阅 AWS 文档

架构

目标技术堆栈

  • Amazon EventBridge

  • AWS KMS

  • Amazon SNS

  • AWS Systems Manager

  • 使用以下方法实现自动化:

    • AWS 命令行界面(AWS CLI)或 AWS SDK

    • AWS CloudFormation 堆栈

目标架构

监控、警报和修复过程的五个步骤的图表。
  1. 已计划删除 AWS KMS 密钥。

  2. 预定删除事件由规则进行评估。 EventBridge

  3. 该 EventBridge 规则涉及亚马逊 SNS 话题。

  4. 该 EventBridge 规则启动 Systems Manager 自动化和运行手册。

  5. 运行手册取消删除。

自动化和扩展

CloudFormation 堆栈部署了该解决方案运行所需的所有必要资源和服务。该模式可以在单个账户中独立运行,也可以使用 AWS CloudFormation StackSets 为多个独立账户或组织运行。

aws cloudformation create-stack --stack-name  <stack-name>\     --template-body file://<Full-Path-of-file> \     --parameters ParameterKey=,ParameterValue= \ --capabilities CAPABILITY_NAMED_IAM

工具

工具

  • AWS CloudFormation — AWS CloudFormation 是一项服务,可帮助您建模和设置 Amazon Web Services 资源,这样您就可以花更少的时间管理这些资源,而将更多的时间集中在在 AWS 上运行的应用程序上。您可以使用 CloudFormation 模板在 AWS 区域的 AWS 账户中创建堆栈。该模板描述了您需要的所有 AWS 资源,并 CloudFormation 为您预置和配置这些资源。

  • AWS CLI – AWS 命令行界面(AWS CLI)是一种开源工具,它使您能够使用命令行 shell 中的命令与 Amazon Web Services 交互。

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

  • AWS KMS – AWS Key Management Service (AWS KMS) 是一项托管服务,用于创建和控制 AWS KMS 密钥,即用于加密数据的加密密钥。

  • AWS 开发工具包 – AWS 工具包括开发工具包,以便您可以使用所选的编程语言在 AWS 上开发和管理应用程序。

  • Amazon SNS – Amazon Simple Notification Service (Amazon SNS) 是一项托管服务,提供从发布者到订阅用户(也称为创建者和使用者)的消息传输。发布者通过将消息发送至主题与订阅用户进行异步交流,主题是一个逻辑接入点和通信渠道。 

  • AWS Systems Manager – AWS Systems Manager 是一项 Amazon Web Services,可用于查看和控制 AWS 上的基础设施。使用 Systems Manager 控制台,您可以在 AWS 资源之间自动执行操作任务。Systems Manager 通过扫描托管实例并报告其检测到的任何策略违规行为(或采取纠正措施)来帮助您维护安全性和合规性。 

代码

  • 随函附上该项目的alerting_ct_logs.yaml CloudFormation 模板。

操作说明

任务描述所需技能

安装和配置 AWS CLI。

安装 AWS CLI 版本 2。然后,配置身份的安全凭证设置、默认输出格式以及 AWS CLI 用于与 AWS 交互的默认 Amazon Web Services Region。

该身份必须具有执行任务所需的权限。

开发人员、安全工程师
任务描述所需技能

下载 CloudFormation 模板。

将附件下载到计算机上的本地路径,然后解压缩 alerting_ct_logs.yaml模板文件。

开发人员、安全工程师

部署模板。

在已配置 Amazon Web Services account 配置文件的终端窗口中,运行以下命令。

aws cloudformation create-stack --stack-name <stack_name> \ --capabilities <Value> \ --template-body file://<Full_Path> \ --parameters ParameterKey=DestinationEmailAddress,ParameterValue=<Value> \ ParameterKey=SNSTopicName,ParameterValue=<Value> \ ParameterKey=EnableRemediation ,ParameterValue=<Value> \ ParameterKey=AutomationAssumeRole,ParameterValue=<Value>

在下一步中,输入模板参数的值。

开发人员、安全工程师

完成模板参数。

输入所需的参数值。

  • DestinationEmailAddress – 在计划删除 AWS KMS 密钥时接收提醒的电子邮件地址。

  • SNSTopicName – Amazon SNS 主题的名称。

  • EnableRemediation – 使用 Systems Manager 运行手册取消计划的密钥删除。允许的值包括 truefalse

  • AutomationAssumeRole – 该角色的 Amazon 资源名称(ARN)允许 Systems Manager Automation 代表您执行操作。有关更多信息,请参阅 AWSConfigRemediation-CancelKeyDeletion 文档中的 “必需 IAM 权限” 部分。 

  • Capabilities— CloudFormation 要让 AWS 创建堆栈,您必须明确确认您的堆栈模板包含某些功能。

开发人员、安全工程师
任务描述所需技能

确认订阅。

检查您的电子邮件收件箱,在收到的 Amazon SNS 电子邮件中选择确认订阅。Web 浏览器窗口将打开,并显示订阅确认信息和您的订阅 ID。 

开发人员、安全工程师

相关资源

参考

教程和视频

AWS 研讨会

其他信息

以下代码提供了一些示例,用于扩展解决方案以监控任何 Amazon Web Services 中的任何更改并通知您。这些示例包括预定义模式和自定义模式。有关更多信息,请参阅中的事件和事件模式 EventBridge

EventPattern:         source:         - aws.kms         detail-type:         - AWS API Call via CloudTrail         detail:           eventSource:           - kms.amazonaws.com           eventName:           - ScheduleKeyDeletion

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip