发布VPC加密控制:在区域内及跨VPC间强制执行传输中加密
更新于2025年11月25日:我们澄清了定价部分和使用的加密技术。
今天,我们宣布推出虚拟私有云(VPC)加密控制功能,这是亚马逊虚拟私有云(Amazon VPC)的一项新能力,可帮助您审核和强制执行区域内所有VPC内部及跨VPC流量的传输中加密。
金融、医疗、政府和零售等行业的组织在维护其云基础设施的加密合规性方面面临着巨大的运营复杂性。传统方法需要整合多种解决方案并管理复杂的公钥基础设施(PKI),同时使用电子表格手动跟踪不同网络路径的加密状态——这个过程容易出错,并且随着基础设施的扩展而变得越来越具有挑战性。
基于AWS Nitro的实例通过Nitro系统提供自动的硬件级加密,实现透明的流量加密且不影响性能。该系统使用AES-256-GCM加密(最先进的对称加密)对实例间的传输流量进行匿名化处理。虽然这种内置安全性很有价值,但组织需要简单的方法将这些加密能力扩展到整个VPC基础设施。他们需要集中式的加密状态可见性和控制,而无需管理复杂的密钥系统或牺牲性能。这对于展示符合健康保险流通与责任法案(HIPAA)、支付卡行业数据安全标准(PCI DSS)和联邦风险与授权管理计划(FedRAMP)等监管框架尤为重要,这些框架要求组织证明其环境中实施了全面的加密。
VPC加密控制通过提供两种操作模式来解决这些挑战:监控模式和强制执行模式。在监控模式下,您可以审核流量流的加密状态,并识别允许明文流量的资源。该功能在VPC流日志中新增了一个encryption-status字段,让您可以了解流量是否使用Nitro硬件加密、应用层加密(TLS)或两者同时使用。
在识别出需要修改的资源后,您可以采取措施实施加密。AWS服务,如网络负载均衡器、应用程序负载均衡器和AWS Fargate任务,将自动、透明地将您的基础设施迁移到Nitro硬件,无需您采取任何操作,也不会造成服务中断。对于其他资源,例如上一代亚马逊弹性计算云(Amazon EC2)实例,您需要切换到基于现代Nitro的实例类型或在应用层配置TLS加密。
在所有资源都已迁移到支持加密的基础设施后,您可以切换到强制执行模式。迁移到支持加密的硬件和通信协议是启用强制执行模式的先决条件。您可以配置特定的排除项,例如不支持加密的互联网网关或NAT网关(因为流量流在AWS网络之外)。
其他资源必须支持加密且无法排除。激活后,强制执行模式确保所有未来资源仅创建在兼容的Nitro实例上,并且在检测到不正确的协议或端口时丢弃未加密的流量。
让我向您展示如何开始使用
对于此演示,我启动了三个EC2实例。我将一个用作在端口80上安装Nginx的Web服务器,提供纯文本HTML页面。另外两个则持续向该服务器发出HTTP GET请求。这会在我的VPC中生成明文流量。我使用m7g.medium实例类型作为Web服务器和两个客户端之一。此实例类型使用底层Nitro系统硬件自动加密实例间的传输流量。我使用t4g.medium实例作为另一个Web客户端。该实例的网络流量未在硬件级别加密。
开始之前,我启用监控模式的加密控制。在AWS管理控制台中,我在左侧导航窗格中选择Your VPCs,然后切换到VPC encryption controls选项卡。我选择Create encryption control,并选择要为其创建控制的VPC。
每个VPC只能关联一个VPC加密控制,从而在VPC ID和VPC加密控制ID之间创建一对一的关系。创建VPC加密控制时,您可以添加标签以帮助进行资源组织和管理。您也可以在创建新VPC时激活VPC加密控制。
我为该控制输入一个名称。我选择要控制的VPC。对于现有VPC,我必须从监控模式开始,当我确定没有未加密流量时,可以打开强制执行模式。对于新的VPC,我可以在创建时强制执行加密。
或者,我可以在为现有VPC创建加密控制时定义标签。但是,在VPC创建期间启用加密控制时,无法为VPC加密控制创建单独的标签——因为它们会自动继承与VPC相同的标签。准备好后,我选择Create encryption control。
或者,我也可以使用AWS命令行界面(AWS CLI):
|
|
接下来,我使用控制台、命令行或流日志审核VPC的加密状态:
|
|
几分钟后,我在日志中看到以下流量:
|
|
10.0.128.55是硬件加密流量的Web服务器,在应用层提供纯文本流量。10.0.133.8是硬件加密流量的Web客户端。10.0.130.104是硬件层未加密的Web客户端。
encryption-status字段告诉我源地址和目标地址之间流量的加密状态:
0表示流量为明文1表示流量在(第3层)网络层由Nitro系统加密2表示流量在(第7层)应用层加密(TCP端口443和TLS/SSL)3表示流量在应用层(TLS)和网络层(Nitro)同时加密-表示VPC加密控制未启用,或者AWS流日志没有状态信息
源自非Nitro实例上的Web客户端(10.0.130.104)的流量被标记为0。源自基于Nitro实例上的Web客户端(10.0.133.8)的流量被标记为1。
我还使用控制台来识别需要修改的资源。它报告了两个未加密资源:互联网网关和基于非Nitro实例的弹性网络接口(ENI)。
我也可以使用CLI检查未加密的资源:
|
|
将资源更新为支持加密后,我就可以使用控制台或CLI切换到强制执行模式。
在控制台中,我选择VPC加密控制。然后,选择Actions和Switch mode。
或使用等效的CLI:
|
|
如何修改被识别为未加密的资源?
您的所有VPC资源都必须支持流量加密,无论是在硬件层还是在应用层。对于大多数资源,您无需采取任何操作。
通过AWS PrivateLink和网关端点访问的AWS服务会自动在应用层强制执行加密。这些服务只接受TLS加密流量。AWS会自动丢弃任何未在应用层加密的流量。
当您启用监控模式时,我们会自动并逐步将您的网络负载均衡器、应用程序负载均衡器、AWS Fargate集群和亚马逊弹性Kubernetes服务(Amazon EKS)集群迁移到固有支持加密的硬件上。此迁移透明进行,无需您采取任何操作。
某些VPC资源需要您选择支持现代Nitro硬件层加密的底层实例。这些包括EC2实例、Auto Scaling组、亚马逊关系数据库服务(Amazon RDS)数据库(包括Amazon DocumentDB)、Amazon ElastiCache基于节点的集群、Amazon Redshift预置集群、EKS集群、使用EC2容量的ECS、MSK Provisioned、Amazon OpenSearch服务和Amazon EMR。要迁移您的Redshift集群,您必须从快照创建新的集群或命名空间。
如果您使用较新代的实例,您可能已经拥有了支持加密的基础设施,因为所有最近的实例类型都支持加密。对于不支持传输中加密的旧代实例,您需要升级到支持的实例类型。
使用AWS Transit Gateway时需要注意的事项
当启用了加密控制的VPC通过Transit Gateway连接时,您需要手动在Transit Gateway上激活加密控制,以加密VPC之间的流量。这可以通过AWS控制台、modify-transit-gateway命令或API完成。在现有Transit Gateway上启用加密不会中断通过该Transit Gateway连接的VPC之间的流量流动。
当Transit Gateway及其连接的VPC都启用了强制执行模式的加密控制(且无排除项)时,所有链路上的流量都会被加密。
通过AWS CloudFormation创建启用了加密支持的Transit Gateway时,需要一个额外的AWS身份和访问管理(IAM)权限:ec2:ModifyTransitGateway。之所以需要此权限,是因为CloudFormation使用两步流程创建Transit Gateway。它首先创建具有基本配置的Transit Gateway,然后调用ModifyTransitGateway来启用加密支持。如果没有此权限,即使您只是执行看似创建的操作,CloudFormation堆栈也会在尝试应用加密配置时创建失败。
定价和可用性
您现在可以在以下AWS区域开始使用VPC加密控制:美国东部(俄亥俄、弗吉尼亚北部)、美国西部(北加州、俄勒冈)、非洲(开普敦)、亚太地区(香港、海得拉巴、雅加达、墨尔本、孟买、大阪、新加坡、悉尼、东京)、加拿大(中部)、加拿大西部(卡尔加里)、欧洲(法兰克福、爱尔兰、伦敦、米兰、巴黎、斯德哥尔摩、苏黎世)、中东(巴林、阿联酋)和南美洲(圣保罗)。
在2025年11月20日至2026年2月28日的推介期内,使用VPC加密控制不收费。
从2026年3月1日开始,我们将对启用了加密控制(无论是监控模式还是强制执行模式)并且拥有网络接口的VPC按固定小时费率收费。当您在Transit Gateway上启用加密控制时,AWS将对连接到该Transit Gateway的每个VPC收取相同的小时费率,无论其加密控制状态如何。
与往常一样,VPC定价页面提供了详细信息。
要了解更多信息,请访问VPC加密控制文档,或在您的AWS账户中试用。我期待听到您如何使用此功能来增强安全态势并帮助满足合规标准。 — seb