S3 Object Lambda 访问点的安全注意事项 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

S3 Object Lambda 访问点的安全注意事项

使用 Amazon S3 Object Lambda,您可以借助使用 Amazon Lambda 作为计算平台的规模和灵活性,在数据离开 Amazon 3 时对其执行自定义转换。S3 和 Lambda 在原定设置情况下保持安全,但是为了维持这种安全性,Lambda 函数的作者需要特别考虑一些注意事项。S3 Object Lambda 要求所有访问都由经过身份验证的委托人(无匿名访问)和 HTTPS 进行。

为降低安全风险,我们提出以下建议:

  • 将 Lambda 执行角色的范围限定为尽可能小的权限集。

  • 只要有可能,就确保您的 Lambda 函数通过提供的预签名 URL 访问 Amazon S3。

配置 IAM policy

S3 访问点支持 Amazon Identity and Access Management (IAM) 资源策略,这些策略允许您按资源、用户或其他条件控制访问点的使用。有关更多信息,请参阅为 Object Lambda 访问点配置 IAM policy

加密行为

由于 Object Lambda 访问点同时使用 Amazon S3 和 Amazon Lambda,因此,加密行为会存在差异。有关默认 S3 加密行为的更多信息,请参阅 为 Amazon S3 Bucket 设置默认服务器端加密行为

  • 将 S3 服务器端加密与 Object Lambda 访问点结合使用时,需要先将对象解密,然后再将其发送到 Lambda。将对象发送到 Lambda 后,将以未加密方式对其进行处理(如果是 GETHEAD 请求)。

  • 为防止密钥被记录,S3 将拒绝针对以下对象的 GETHEAD 请求:使用具有客户提供的密钥的服务器端加密(SSE-C)来加密的对象。但是,如果 Lambda 函数可以访问客户端提供的密钥,它仍可检索这些对象。

  • 将 S3 客户端加密与 Object Lambda 访问点结合使用时,请确保 Lambda 有权访问加密密钥,以便它可以解密和重新加密对象。

接入点安全性

S3 Object Lambda 使用两个访问点,一个 Object Lambda 访问点和一个标准 S3 访问点(称为支持访问点)。当您向 Object Lambda 访问点发出请求时,S3 会代表您调用 Lambda,或将请求委派给支持访问点,具体取决于 S3 Object Lambda 配置。当针对请求调用 Lambda 时,S3 将通过支持访问点,代表您向对象生成一个预签名 URL。您的 Lambda 函数将在调用此函数时接收此 URL 以作为输入。

您可以将 Lambda 函数设置为使用此预签名 URL 来检索原始对象,而不是直接调用 S3。通过使用此模型,您可以为对象应用更好的安全边界。您可以将通过 S3 存储桶或 S3 接入点进行的直接对象访问,限制为一组有限的 IAM 角色或用户。这种方法也可以防止您的 Lambda 函数受到混淆代理问题的影响,发生混淆代理问题时,配置错误的函数具有与调用方不同的权限,可以允许或拒绝对于对象的访问(但原本不应如此)。

Object Lambda 访问点公有访问

S3 Object Lambda 不允许匿名访问和公有访问,因为 Amazon S3 必须向您的身份授权,才能完成任何 S3 Object Lambda 请求。当通过 Lambda Object 访问点调用请求时,您必须对于已配置的 Lambda 函数拥有 lambda:InvokeFunction 权限。同样,当通过 Object Lambda 访问点调用其他 API 操作时,您必须拥有所需的 s3:* 权限。

如果不具有这些权限,则调用 Lambda 或委托给 S3 的请求将失败,并出现 HTTP 403 (Forbidden) [HTTP 403(禁止访问)] 错误。必须由经过身份验证的委托人进行所有访问。如果您需要公有访问权限,可使用 Lambda@Edge 作为可能的替代方案。有关更多信息,请参阅 Amazon CloudFront 开发人员指南中的使用 Lambda@Edge 在边缘进行自定义

Object Lambda 访问点 IP 地址

describe-managed-prefix-lists 子网支持网关虚拟私有云(VPC)端点,并与 VPC 端点的路由表相关。由于 Object Lambda 访问点不支持网关 VPC,因此其 IP 范围缺失。缺失的范围属于 Amazon S3,但网关 VPC 端点不支持。有关 describe-managed-prefix-lists 的更多信息,请参阅《Amazon EC2 API 参考》中的 DescribeManagedPrefixLists 和《Amazon 一般参考》中的 Amazon IP 地址范围