我正在尝试使用CloudFormation模板在AWS中启动一个S3存储桶。这个项目的要求之一是必须对该存储桶进行原地加密。我一直在尝试找到一种通过CloudFormation模板设置它的方法(我已经阅读了所有与SSE-S3、KMS、CFT和S3有关的文档...)。但所有迹象似乎都指向只能通过控制台进行设置。
我担心自己可能只是忽略了一些明显的东西,我想知道是否有人知道如何使用CloudFormation模板(或至少是某种自动化方式)将S3存储桶的默认加密设置为SSE-S3或SSE-KMS?
我正在尝试使用CloudFormation模板在AWS中启动一个S3存储桶。这个项目的要求之一是必须对该存储桶进行原地加密。我一直在尝试找到一种通过CloudFormation模板设置它的方法(我已经阅读了所有与SSE-S3、KMS、CFT和S3有关的文档...)。但所有迹象似乎都指向只能通过控制台进行设置。
我担心自己可能只是忽略了一些明显的东西,我想知道是否有人知道如何使用CloudFormation模板(或至少是某种自动化方式)将S3存储桶的默认加密设置为SSE-S3或SSE-KMS?
2018年1月24日,AWS添加了以下功能:BucketEncryption属性:
使用BucketEncryption属性,可以使用Amazon S3管理的密钥SSE-S3或AWS KMS管理的密钥(SSE-KMS)为存储桶指定默认加密方式。
JSON
{
"Resources": {
"MyBucket": {
"Type" : "AWS::S3::Bucket",
"Properties" : {
"BucketEncryption": {
"ServerSideEncryptionConfiguration": [
{
"ServerSideEncryptionByDefault": {
"SSEAlgorithm": "AES256"
}
}
]
}
}
}
}
}
YAML
Resources:
MyBucket:
Type: "AWS::S3::Bucket"
Properties:
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-bucketencryption.html
如果您有特定的KMS密钥,请使用以下方法
ConfigBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: "mytestbucketwithkmsencryptionkey"
AccessControl: PublicRead
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: aws:kms
KMSMasterKeyID: "YOUR KMS KEY ARN"
您还可以使用 ForceEncryption
选项:
AWSTemplateFormatVersion: '2010-09-09'
Description: Amazon S3 Bucket with
Resources:
CodeFlexS3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Join ["-", ["codeflex-example", Ref: "AWS::Region"]]
ForceEncryption:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref CodeFlexS3Bucket
PolicyDocument:
Version: "2008-10-17"
Statement:
- Sid: DenyUnEncryptedObjectUploads
Effect: Deny
Principal: "*"
Action:
- s3:PutObject
Resource:
- !Join ["", ["arn:aws:s3:::", !Ref CodeFlexS3Bucket, "/*"]]
Condition:
StringNotEquals:
"s3:x-amz-server-side-encryption":
- "aws:kms"
DependsOn: CodeFlexS3Bucket