CloudFormationテンプレートを使用して、AWSでS3バケットを起動しようとしています。このプロジェクトの要件の1つは、バケットを適切に暗号化することです。 CloudFormationテンプレートを使用して設定する方法を見つけようとしています(SSE-S3、KMS、CFT、S3sについて手に入れることができるすべてのドキュメントを読みました...)。しかし、すべての兆候は、コンソールを介してのみ利用可能であることを示しているようです。
私は明らかな何かを見逃しているだけで、CloudFormation Template(または少なくとも自動化されたもの)を使用してS3バケットのデフォルト暗号化をSSE-S3またはSSE-KMSに設定する方法を誰かが知っているのではないかと心配していますか?
AWSはこの機能を追加しました 2018年1月24日 :
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.htmlhttps://docs.aws.Amazon.com/ AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-bucketencryption.html
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
特定のKMSキーがある場合は、次を使用します
ConfigBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: "mytestbucketwithkmsencryptionkey"
AccessControl: PublicRead
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: aws:kms
KMSMasterKeyID: "YOUR KMS KEY ARN"