Amazon S3 Encrypts New Objects By Default

Voiced by Polly

At AWS, safety is job zero. Beginning at this time, Amazon Easy Storage Service (Amazon S3) encrypts all new objects by default. Now, S3 robotically applies server-side encryption (SSE-S3) for every new object, except you specify a distinct encryption choice. SSE-S3 was first launched in 2011. As Jeff wrote on the time: “Amazon S3 server-side encryption handles all encryption, decryption, and key administration in a very clear vogue. Whenever you PUT an object, we generate a novel key, encrypt your information with the important thing, after which encrypt the important thing with a [root] key.”

This modification places one other safety finest follow into impact robotically—with no impression on efficiency and no motion required in your aspect. S3 buckets that don’t use default encryption will now robotically apply SSE-S3 because the default setting. Current buckets at the moment utilizing S3 default encryption is not going to change.

As all the time, you’ll be able to select to encrypt your objects utilizing one of many three encryption choices we offer: S3 default encryption (SSE-S3, the brand new default), customer-provided encryption keys (SSE-C), or AWS Key Administration Service keys (SSE-KMS). To have an extra layer of encryption, you may additionally encrypt objects on the shopper aspect, utilizing shopper libraries such because the Amazon S3 encryption shopper.

Whereas it was easy to allow, the opt-in nature of SSE-S3 meant that you simply had to make certain that it was all the time configured on new buckets and confirm that it remained configured correctly over time. For organizations that require all their objects to stay encrypted at relaxation with SSE-S3, this replace helps meet their encryption compliance necessities with none extra instruments or shopper configuration modifications.

With at this time’s announcement, we’ve now made it “zero click on” so that you can apply this base degree of encryption on each S3 bucket.

Confirm Your Objects Are Encrypted
The change is seen at this time in AWS CloudTrail information occasion logs. You will notice the modifications within the S3 part of the AWS Administration Console, Amazon S3 Stock, Amazon S3 Storage Lens, and as an extra header within the AWS CLI and within the AWS SDKs over the subsequent few weeks. We are going to replace this weblog submit and documentation when the encryption standing is offered in these instruments in all AWS Areas.

To confirm the change is efficient in your buckets at this time, you’ll be able to configure CloudTrail to log information occasions. By default, trails don’t log information occasions, and there’s an additional value to allow it. Knowledge occasions present the useful resource operations carried out on or inside a useful resource, akin to when a consumer uploads a file to an S3 bucket. You’ll be able to log information occasions for Amazon S3 buckets, AWS Lambda features, Amazon DynamoDB tables, or a mix of these.

As soon as enabled, seek for PutObject API for file uploads or InitiateMultipartUpload for multipart uploads. When Amazon S3 robotically encrypts an object utilizing the default encryption settings, the log contains the next subject because the name-value pair: "SSEApplied":"Default_SSE_S3". Right here is an instance of a CloudTrail log (with information occasion logging enabled) after I uploaded a file to one among my buckets utilizing the AWS CLI command aws s3 cp s3://private-sst.

Cloudtrail log for S3 with default encryption enabled

Amazon S3 Encryption Choices
As I wrote earlier, SSE-S3 is now the brand new base degree of encryption when no different encryption-type is specified. SSE-S3 makes use of Superior Encryption Customary (AES) encryption with 256-bit keys managed by AWS.

You’ll be able to select to encrypt your objects utilizing SSE-C or SSE-KMS slightly than with SSE-S3, both as “one click on” default encryption settings on the bucket, or for particular person objects in PUT requests.

SSE-C lets Amazon S3 carry out the encryption and decryption of your objects when you retain management of the keys used to encrypt objects. With SSE-C, you don’t must implement or use a client-side library to carry out the encryption and decryption of objects you retailer in Amazon S3, however you do must handle the keys that you simply ship to Amazon S3 to encrypt and decrypt objects.

With SSE-KMS, AWS Key Administration Service (AWS KMS) manages your encryption keys. Utilizing AWS KMS to handle your keys gives a number of extra advantages. With AWS KMS, there are separate permissions for the usage of the KMS key, offering an extra layer of management in addition to safety in opposition to unauthorized entry to your objects saved in Amazon S3. AWS KMS gives an audit path so you’ll be able to see who used your key to entry which object and when, in addition to view failed makes an attempt to entry information from customers with out permission to decrypt the information.

When utilizing an encryption shopper library, such because the Amazon S3 encryption shopper, you keep management of the keys and full the encryption and decryption of objects client-side utilizing an encryption library of your alternative. You encrypt the objects earlier than they’re despatched to Amazon S3 for storage. The Java, .Internet, Ruby, PHP, Go, and C++ AWS SDKs assist client-side encryption.

You’ll be able to observe the directions on this weblog submit if you wish to retroactively encrypt current objects in your buckets.

Obtainable Now
This modification is efficient now, in all AWS Areas, together with on AWS GovCloud (US) and AWS China Areas. There isn’t a extra value for default object-level encryption.

— seb