J'essaie d'utiliser un modèle CloudFormation pour faire tourner un compartiment S3 dans AWS. L'une des exigences de ce projet est que le compartiment soit chiffré en place. J'ai essayé de trouver un moyen de configurer cela via le modèle CloudFormation (j'ai lu toute la documentation sur laquelle je peux mettre la main pour SSE-S3, KMS, CFT et S3 ...). Mais tous les signes semblent indiquer qu'il n'est disponible que via la console.
Je crains de manquer quelque chose d'évident et je me demandais si quelqu'un savait comment utiliser CloudFormation Template (ou au moins quelque chose d'automatisé) pour définir le cryptage par défaut d'un compartiment S3 sur SSE-S3 ou SSE-KMS?
AWS a ajouté cette fonctionnalité le 24 janvier 2018 :
Utilisez la propriété BucketEncryption pour spécifier le chiffrement par défaut d'un compartiment à l'aide du chiffrement côté serveur avec les clés gérées par Amazon S3 SSE-S3 ou le compartiment de clés gérées par 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
Vous pouvez également utiliser l'option 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
Extrait d'ici: Création d'un compartiment S3 avec le chiffrement KMS via CloudFormation
Si vous avez une clé KMS spécifique, utilisez ce qui suit
ConfigBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: "mytestbucketwithkmsencryptionkey"
AccessControl: PublicRead
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: aws:kms
KMSMasterKeyID: "YOUR KMS KEY ARN"