亚马逊AWS官方博客
新增 Amazon S3 加密和安全功能
早在 2006 年,当我宣布 S3 时,我写道:“此外,每个块都受 ACL (访问控制列表) 的保护,从而允许开发人员根据需要保持数据私有、共享以供读取或共享以供读写。”
起点是那个具有私有存储桶和用于授予访问权限的 ACL 的初始模型,此后我们添加了对存储桶策略、服务器访问日志记录、版本控制、API 日志记录、跨区域复制以及多个客户端和服务器端加密选项的支持,所有这些都是为了给您提供所需的工具,保护您的数据,同时允许您根据需要与客户和合作伙伴共享数据。我们还加入了人工智能和机器学习作为演绎元素,并推出了 Amazon Macie,这一工具可帮助您发现、分类和保护海量的内容。
今天,我们将要向 S3 中添加五个新的加密和安全功能:
默认加密 – 现在,您可以强制存储桶中的所有对象都必须以加密形式保存,而不必构造一个拒绝未加密对象的存储桶策略。
权限检查 – S3 控制台现在在每个可公开访问的 S3 存储桶旁边显示一个显眼的指示器。
跨区域复制 ACL 覆盖 – 当您跨 AWS 账户复制对象时,您现在可以指定对象获取一个新的 ACL,以便对目标账户进行完全访问。
涉及 KMS 的跨区域复制 – 您现在可以复制使用由 AWS Key Management Service (KMS) 管理的密钥进行加密的对象。
详细清单报告 – S3 清单报告现在包括每个对象的加密状态。该报告本身也可以加密。
让我们了解一下每个功能…
默认加密
您的 S3 对象有三个服务器端加密选项:SSE-S3 (使用由 S3 管理的密钥)、SSE-KMS (使用由 AWS KMS 管理的密钥) 以及 SSE-C (使用您管理的密钥)。我们的一些客户,特别是那些需要满足规定在静态时使用加密的合规性要求的用户,已使用存储桶策略来确保每个新存储的对象都被加密。虽然这有助于他们满足要求,但仅仅拒绝存储未加密对象是一个不完善的解决方案。
现在,您可以通过安装存储桶加密配置,强制存储桶中的所有对象都必须以加密形式保存。如果将未加密对象提交给 S3,并且配置指明必须使用加密,则该对象将使用为该存储桶指定的加密选项进行加密 (PUT 请求还可以指定不同的选项)。
下面是在您创建新存储桶时,如何使用 S3 控制台来启用此功能。像往常一样输入存储桶的名称,然后单击下一步。然后向下滚动并单击默认加密:
选择所需的选项,然后单击保存 (如果您选择 AWS-KMS,则还需要指定 KMS 密钥):
您还可以通过调用 PUT 存储桶加密函数来进行此更改。它必须指定 SSE 算法 (SSE-S3 或 SSE-KMS),并且可以选择引用 KMS 密钥。
实施此功能时,请牢记以下几点:
SigV4 – 通过 S3 REST API 对存储桶策略进行的访问必须使用 SigV4 签名,并且通过 SSL 连接完成。
更新存储桶策略 – 您应该检查并仔细修改当前拒绝未加密对象的现有存储桶策略。
高容量使用 – 如果您使用的是 SSE-KMS,并且每秒上传成百上千个对象,则可能会在执行加密和解密操作时碰到 KMS 限制。只需提交一个支持案例并申请更高的限制:
跨区域复制 – 未加密的对象将根据目标存储桶的配置进行加密。加密的对象将保持不变。
权限检查
存储桶策略、存储桶 ACL 和对象 ACL 的组合使您能够非常精细地控制对您的存储桶及其内部对象的访问。为了确保您的策略和 ACL 结合起来以创造所需的效果,我们最近推出了一组托管配置规则来保护您的 S3 存储桶。正如我在文章中提到的,这些规则利用了我们的一些工作来应用自动形式推理。
我们现在使用相同的基础技术来帮助您在对存储桶策略和 ACL 进行更改时便可看到更改的影响。如果您打开一个存储桶供公开访问,您立刻就会知道,这能让您充满信心地进行更改。
下面是它在 S3 控制台主页上的显示情况 (为方便查看,我按访问权限列进行了排序):
当您在单个存储桶中查看时,还会显示公共指示器:
您还可以查看哪些权限元素 (ACL 和/或存储桶策略) 在启用公开访问:
跨区域复制 ACL 覆盖
我们的客户经常使用 S3 的跨区域复制,在一个单独的 AWS 账户中将其任务关键型对象和数据复制到目标存储桶中。除了复制对象外,复制过程还会复制对象 ACL 以及任何与该对象关联的标签。
我们使此功能更加有用,具体来说就是能让您在传输过程中启用 ACL 替换,以便它向目标存储桶的所有者授予完全访问权限。通过此更改,源和目标数据的所有权将跨 AWS 账户进行拆分,从而使您能够为原始对象及其副本维护单独且不同的所有权堆栈。
要在设置复制时启用此功能,请通过指定账户 ID 和存储桶名称并单击保存,在不同的账户和区域中选择目标存储桶:
然后单击更改对象所有权…:
我们还使您更容易为目标账户中的目标存储桶设置密钥策略。只需登录到该账户并找到该存储桶,然后单击管理和复制,然后从更多菜单中选择接收对象…:
输入源账户 ID,启用版本控制,检查策略,应用策略,然后单击完成:
涉及 KMS 的跨区域复制
跨区域复制使用 SSE-KMS 加密的对象是我们今天要解决的一个有趣的挑战。由于 KMS 密钥特定于特定区域,因此仅复制加密的对象将不起作用。
现在,您可以在设置跨区域复制时选择目标键。在复制过程中,加密的对象通过 SSL 连接复制到目标。在目标位置,数据键使用在复制配置中指定的 KMS 主密钥进行加密。对象始终保持原来的加密形式;只有包含密钥的信封才会实际发生更改。
下面是在设置复制规则时如何启用此功能:
正如我前面提到的,在开始大量使用此功能之前,您可能需要请求增大 KMS 限制。
详细清单报告
最后但同样重要的是,您现在可以请求每日或每周 S3 清单报告包含有关每个对象的加密状态的信息:
正如您所看到的,您还可以为该报告请求 SSE-S3 或 SSE-KMS 加密。
现在提供
这些功能现已全部提供,您可以立即开始使用!这些功能没有收费,但会对 KMS 调用、S3 存储、S3 请求以及区域间数据传输按通常费率收费。
— Jeff;