Chr*_* W. 5 encryption amazon-s3 amazon-web-services amazon-cloudfront aws-kms
我想使用AWS 的服务器端加密 (SSE)和AWS 密钥管理服务 (KMS)来加密 S3 中的静态数据。(请参阅这篇详细介绍 SSE-KMS 的AWS 博客文章。)
但是,我还要求使用 Cloudfront Presigned URL。
如何设置 Cloudfront 分配以使用 AWS KMS 中的密钥来解密和使用静态加密的 S3 对象?
(这个 Boto3 问题似乎来自与我寻找相同答案的人,但没有结果)。
这在以前是不可能的,因为 CloudFront 不支持它,并且因为(正如我在对约翰的回答的评论中提到的那样 - 这是在正确的轨道上)无法使用 Lambda@Edge 推出您自己的解决方案,因为X-Amz-Cf-Id请求标头——在 CloudFront 的背面生成,仅对 S3 可见,对触发器调用不可见——将使您尝试添加到 Lambda@Edge 触发器内的请求的任何签名无效,因为所有X-Amz-*标头的签名都是强制性的。
但是X-Amz-Cf-Id标头值现在暴露给事件结构中的 Lambda@Edge 触发器函数——不是与其他请求标头,而是作为一个简单的字符串属性—— at event.Records[0].cf.config.requestId。
掌握该值后,您可以使用 Lambda@Edge 环境中的执行角色凭证和内置 SDK 生成签名并添加必要的标头(包括Authorization带有派生凭证标识符和新生成的签名的标头)到请求。
此设置不使用源访问标识符 (OAI),因为使用 Lambda@Edge 触发器的 IAM 执行角色而不是 OAI 来说服 S3 请求已获得授权。
Achraf Souk 发布了一篇官方 AWS 博客文章,从头到尾解释了该解决方案。
| 归档时间: |
|
| 查看次数: |
5564 次 |
| 最近记录: |