Как вы устанавливаете шифрование SSE-S3 или SSE-KMS на ведрах S3 с использованием шаблона облачной разработки?
Я пытаюсь использовать шаблон CloudFormation, чтобы развернуть ведро S3 в AWS. Одним из требований к этому проекту является то, что ковш будет зашифрован на месте. Я пытаюсь найти способ установить это с помощью шаблона CloudFormation (я прочитал всю документацию, которую я могу получить для SSE-S3, KMS, CFT и S3s...). Но все признаки указывают на то, что они доступны только через консоль.
Я беспокоюсь, я просто пропустил что-то очевидное, и я подумал, знает ли кто-нибудь, как я могу использовать шаблон CloudFormation (или, по крайней мере, что-то автоматическое), чтобы установить шифрование по умолчанию S3 Bucket на SSE-S3 или SSE-KMS
Ответы
Ответ 1
AWS добавил эту функцию 24 января 2018 года:
Используйте свойство 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
Ответ 2
Вы также можете использовать опцию 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
Взяты отсюда: Создание S3 Bucket с шифрованием KMS через CloudFormation
Ответ 3
Если у вас есть определенный ключ KMS, используйте следующее
ConfigBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: "mytestbucketwithkmsencryptionkey"
AccessControl: PublicRead
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: aws:kms
KMSMasterKeyID: "YOUR KMS KEY ARN"