web*_*elo 3 amazon-s3 amazon-web-services amazon-cloudfront
(这是根据我在解决这个问题时学到的知识对这个问题的概括/变体。)
我使用具有 S3 源的 AWS Cloudfront(即为 S3 对象提供服务)。
我想向我的存储桶添加服务器端加密,但仍然能够通过 cloudfront 访问对象。
我对所使用的精确 SSE 策略不可知(只要它是安全的)。
如果您对 SSE 加密类型有自由度,则可以在不使用 lambda 的情况下添加 SSE。
密钥是将存储桶上的加密类型设置为SSE-S3(Amazon S3 密钥)。
主要步骤是:
SSE-S3在“属性”(选项卡)~>“默认加密”(面板)~>“编辑”(按钮)中将存储桶加密设置为在文章“使用 CloudFront 从 S3 提供 SSE-KMS 加密内容”之后,这里是与此发行版相对应的替代 CloudFormation 堆栈:
Resources:
S3Bucket:
Type: "AWS::S3::Bucket"
Properties:
BucketName: !Join
- "-"
- - !Ref "AWS::StackName"
- s3bucket
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
S3BucketPolicy:
Type: "AWS::S3::BucketPolicy"
Properties:
Bucket: !Ref S3Bucket
PolicyDocument:
Statement:
- Action:
- "s3:GetObject"
Effect: Allow
Resource: !Join
- ""
- - "arn:aws:s3:::"
- !Ref S3Bucket
- /*
Principal:
CanonicalUser:
Fn::GetAtt: [OAI, S3CanonicalUserId]
OAI:
Type: "AWS::CloudFront::CloudFrontOriginAccessIdentity"
Properties:
CloudFrontOriginAccessIdentityConfig:
Comment: Origin Access Identity for S3
Cloudfront:
Type: "AWS::CloudFront::Distribution"
Properties:
DistributionConfig:
Comment: How to serve content encrypted with SSE-S3 from S3 using CloudFront
Origins:
- DomainName: !Join
- .
- - !Ref S3Bucket
- s3
- !Ref "AWS::Region"
- amazonaws.com
Id: S3-regional-endpoint
S3OriginConfig:
OriginAccessIdentity: !Join
- /
- - origin-access-identity
- cloudfront
- !Ref OAI
DefaultCacheBehavior:
TargetOriginId: S3-regional-endpoint
ForwardedValues:
QueryString: "false"
ViewerProtocolPolicy: redirect-to-https
Enabled: "true"
Run Code Online (Sandbox Code Playgroud)
OAI) 以及存储桶策略 ( S3BucketPolicy),但不需要指定 KMS 资源。SSE-S3在 CloudFormation 和 terraform 中,您可以通过指定来指定加密类型AES256(请参见行SSEAlgorithm: AES256)。如果您使用 terraform,有一些模块(例如,这里和这里)基本上可以完成上述操作,并提供一些额外的好处。
| 归档时间: |
|
| 查看次数: |
4972 次 |
| 最近记录: |