自动加密现有和新的 Amazon EBS 卷 - AWS Prescriptive Guidance

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

自动加密现有和新的 Amazon EBS 卷

由 Tony DeMarco (AWS) 和 Josh Joy (AWS) 创作

代码存储库:https://github.com/aws-samples/aws-system-manager-automation-unencrypted-to-encrypted-resources /tree/main/ebs

环境:生产

技术:存储和备份;安全、身份、合规;管理和治理

AWS服务:AWSConfig;Amazon;EBS;Organiation AWS s AWSKMS;AWSSystems Manager

Summary

Amazon Elastic Block Store (AmazonEBS) 卷的加密对组织的数据保护策略非常重要。这是建立良好架构环境的重要一步。尽管没有直接的方法可以加密现有的未加密EBS卷或快照,但您可以通过创建新的卷或快照来对其进行加密。有关更多信息,请参阅 Amazon EC2 文档中的加密EBS资源。此模式为加密新卷和现有EBS卷提供了预防和侦查控制。在此模式中,您可以配置账户设置、创建自动修复流程以及实施访问控制。

先决条件和限制

先决条件

  • 有效的亚马逊 Web Services (AWS) 账户

  • AWS命令行界面 (AWSCLI),已在 macOS、Linux 或 Windows 上安装和配置

  • jq,已在 macOS、Linux 或 Windows 上安装并配置

  • AWSIdentity and Access Management (IAM) 权限已配置为具有对亚马逊弹性计算云 (亚马逊EC2) AWS CloudFormation、Syst AWS ems Manager、C AWS onfig 和AWS密钥管理服务 () 的读写权限 (AWSKMS)

  • AWSOrganizations 配置为启用所有功能,这是服务控制策略的要求

  • AWS已在目标账户中启用 Config

限制

  • 在您的目标AWS账户中,不得存在名为 “加密卷” 的 AWS Config 规则。此解决方案部署具有此名称的规则。使用具有此名称的预先存在的规则可能会导致部署失败,并产生与多次处理同一规则相关的不必要费用。

  • 此解决方案使用相同的密AWSKMS钥加密所有EBS卷。

  • 如果您为账户启用EBS卷加密,则此设置是特定于区域的。如果您为某个AWS区域启用该功能,则无法为该区域的单个卷或快照禁用该功能。有关更多信息,请参阅 Amazon EC2 文档中的默认加密

  • 修复现有的未加密EBS卷时,请确保该EC2实例未在使用中。此自动化将关闭实例,以便分离未加密卷并附加加密卷。修复过程中会出现停机。如果这是您组织的关键基础架构,请确保手动自动的高可用性配置已到位,以免影响该实例上运行的任何应用程序的可用性。建议仅在标准维护时段修复关键资源。

架构

自动化工作流程

显示自动化进程和服务的高级架构图
  1. AWSConfig 检测到未加密的EBS卷。

  2. 管理员使用 AWS Config 向 Systems Manager 发送修复命令。

  3. Systems Manager 会自动拍摄未加密EBS卷的快照。

  4. Systems Manager 自动化用于AWSKMS创建快照的加密副本。

  5. Systems Manager 自动化执行以下操作:

    1. 如果受影响的EC2实例正在运行,则将其停止

    2. 将卷的新加密副本附加到实EC2例

    3. 将EC2实例恢复到其原始状态

工具

AWS服务

  • AWSCLI— AWS 命令行界面 (AWSCLI) 提供对AWS服务的公共应用程序编程接口 (APIs) 的直接访问。您可以使用探索服务的功能AWSCLI并开发 shell 脚本来管理您的资源。除了低级别的API等效命令外,还有一些AWS服务为提供了自定义。AWS CLI自定义可以包括更高级别的命令,这些命令可以简化使用复杂服务的过程。API

  • AWS CloudFormation— AWS CloudFormation 是一项可帮助您建模和设置AWS资源的服务。您可以创建一个描述所需的所有AWS资源(例如 Amazon EC2 实例)的模板,并 CloudFormation 为您预置和配置这些资源。

  • AWSCon AWS fi@@ g — Config 提供您AWS账户中AWS资源配置的详细视图。这些信息包括资源之间的关联方式以及资源以前的配置方式,让您了解资源的配置和关系如何随着的时间的推移而更改。

  • 亚马逊 EC2 — Amazon Elastic Compute Cloud (AmazonEC2) 是一项网络服务,可提供可调整的计算容量,供您构建和托管软件系统。

  • AWSKMS— AWS 密钥管理服务 (AWSKMS) 是一项针对云扩展的加密和密钥管理服务。AWSKMS密钥和功能由其他AWS服务使用,您可以使用它们来保护AWS环境中的数据。

  • AWSO rgani AWS zations — Organizations 是一项AWS账户管理服务,可让您将多个账户整合到一个由您创建和集中管理的组织中。

  • AWSSystems M anager 自动化 — Systems Manager 自动化简化了亚马逊EC2实例和其他AWS资源的常见维护和部署任务。

其他服务

  • jq — jq 是一款轻量级且灵活的命令行JSON处理器。您可以使用此工具从AWSCLI输出中提取关键信息。

代码

操作说明

任务描述所需技能

下载脚本和 CloudFormation 模板。

从 “使用客户KMS密钥 GitHub 自动修复未加密的EBS卷” 存储库中下载 shell 脚本、JSON文件和 CloudFormation 模板。

AWS管理员,常规 AWS

确定AWSKMS密钥的管理员。

  1. 登录AWS管理控制台并打开控制IAM台,网址为https://console.aws.amazon.com/iam/

  2. 确定将成为AWSKMS密钥管理员的用户或角色。如果需要为此目的创建新用户或者角色,请立即创建。有关更多信息,请参阅IAM文档中的IAM身份。这种自动化会创建一个新AWSKMS密钥。

  3. 识别后,复制用户或角色的 Amazon 资源名称 (ARN)。有关更多信息,请参阅IAM文档IAMARNs中的。你将在下一步ARN中使用它。

AWS管理员,常规 AWS

部署 Stack1 模板 CloudFormation 。

  1. 打开AWS CloudFormation 控制台,网址为https://console.aws.amazon.com/cloudformation/

  2. 在 CloudFormation中,部署Stack1.yaml模板。请注意以下部署详细信息:

    • 为堆栈赋予清晰的描述性名称。请注意堆栈名称,因为您需要在下一步骤中使用此值。

    • 将密钥管理员ARN的密钥粘贴到 Stack1 中唯一的参数字段中。此用户或角色将成为堆栈创建的AWSKMS密钥的管理员。

有关部署 CloudFormation 模板的更多信息,请参阅 CloudFormation 文档中的使用AWS CloudFormation 模板

AWS管理员,常规 AWS

部署 Stack2 模板 CloudFormation 。

在 CloudFormation中,部署Stack2.yaml模板。请注意以下部署详细信息:

  • 为堆栈赋予清晰的描述性名称。

  • 对于 Stack2 的唯一参数,请输入您在上一步骤中创建的堆栈名称。这允许 Stack2 引用堆栈在上一步中部署的新AWSKMS密钥和角色。

AWS管理员,常规 AWS

创建测试用未加密卷。

使用未加密EBS卷创建EC2实例。有关说明,请参阅亚马逊EC2文档中的创建亚马逊EBS卷。实例类型并不重要,无需访问该实例。您可以创建 t2.micro 实例,以保留在免费套餐中,且无需创建密钥对。

AWS管理员,常规 AWS

测试 AWS Config 规则。

  1. 打开 AWS Config 控制台,网址为https://console.aws.amazon.com/config/。在规则页面上,选择加密卷规则。

  2. 确认您的新未加密测试实例出现在不合规资源列表中。如果卷未立即显示,请等待几分钟后刷新结果。C AWS onfig 规则会在创建实例和卷后不久检测资源变化。

  3. 选择资源,然后选择修复

您可以在 Systems Manager 中查看如下修复进度与状态:

  1. 打开 S AWS ystems Manager 控制台,网址为https://console.aws.amazon.com/systems-manager/

  2. 在导航窗格中,选择 自动化

  3. 选择执行 ID 链接以查看步骤和状态。 

AWS管理员,常规 AWS

配置其他账户或AWS区域。

根据您的用例需要,对任何其他账户或AWS地区重复此长篇故事。

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

运行启用脚本。

  1. 在 bash Shell 中,使用 cd 命令以导航至已克隆存储库。

  2. 输入以下命令运行 enable-ebs-encryption-for-account脚本。

    ./Bash/enable-ebs-encryption-for-account.sh
AWS管理员、常规AWS、bash

确认设置已更新。

  1. 打开亚马逊EC2控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在屏幕右侧的 “设置” 下,选择 “数据保护和安全”。

  3. 在 “EBS加密” 部分下,确认 “始终加密新EBS卷” 已开启,并且默认加密密钥ARN已设置为您之前指定的密钥。

    注意:如果 “始终加密新EBS卷” 设置已关闭,或者密钥仍设置为 alias/aws/ebs,请确认您登录的是运行 shell 脚本的相同账户和AWS区域,并检查 shell 中是否有错误消息。

AWS管理员,常规 AWS

配置其他账户或AWS区域。

根据您的用例需要,对任何其他账户或AWS地区重复此长篇故事。

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

创建服务控制策略。

  1. https://console.aws.amazon.com/organizations/v2/ 上打开 AWS Organ izations 控制台。

  2. 创建新服务控制策略。有关更多信息,请参阅 Org anizations 文档中的AWS创建服务控制策略

  3. DenyUnencryptedEC2.json 的内容添加至策略并保存。你在第一部长篇故事中从 GitHub 存储库中下载了这个JSON文件。

  4. 将此政策附加到组织根目录或任何必要的组织单位 (OUs)。有关更多信息,请参阅 Organi zations 文档中的附加和分离服务控制策略AWS。

AWS管理员,常规 AWS

相关资源

AWS服务文档

其他资源