Add Amazon S3 client-side encryption with AWS KMS managed keys

Description

Today, we only support S3 client-side encryption using a local key store (See https://doc.nuxeo.com/nxdoc/amazon-s3-online-storage/#client-side-crypto-options)

We'd like to support the client-side encryption as described in https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-crypto-kms.html

Note that there is already a nuxeo.s3storage.crypt.kms.key nuxeo.conf property to define the KMS key ID to be used by AWS to encrypt data server-side. We'll introduce a new nuxeo.conf property nuxeo.s3storage.crypt.kms.clientside.key that should be defined to enable this client-side encryption type.

Considerations

  • We assume nuxeo.s3storage.crypt.kms.key and nuxeo.s3storage.crypt.kms.clientside.key are different keys.

  • The KMS key id (for client-side encryption) region could differ from the deployment environment or bucket one.

  • The nuxeo.s3storage.crypt.keystore.file property enables client-side encryption using a private keystore. It takes precedences on nuxeo.s3storage.crypt.kms.clientside.key.

Environment

None

Release Notes Description

AWS KMS client-side encryption can be enabled by defining a KMS key ID with the following property:

Optionally, specify the region of the KMS key if it is differs from the environment or bucket one:

Activity

Show:
Fixed
Pinned fields
Click on the next to a field label to start pinning.

Details

Source Issue Key

Reporter

Component Text

Text Fix Version

Fix Versions Link

Release Notes Summary

Priority

More fields

Created February 3, 2025 at 8:30 PM
Updated March 28, 2025 at 2:19 PM
Resolved February 3, 2025 at 8:30 PM