-
Notifications
You must be signed in to change notification settings - Fork 249
CLDSRV-636: SSE with both internal/external KMS (Cherry-pick) #5800
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CLDSRV-636: SSE with both internal/external KMS (Cherry-pick) #5800
Conversation
(cherry picked from commit db43aab)
(cherry picked from commit 6bbe2a8)
To avoid breaking changes for clients (cherry picked from commit f762831)
(cherry picked from commit e4adb8f)
(cherry picked from commit 0429cd7)
(cherry picked from commit 1be8cd8)
Issue: S3C-9996 MPU was not accepting configuredMasterKeyId (from object or bucket) for Create and Complete MPU. But used the configuredMasterKeyId (from object or bucket) for UploadPart making it possible to have parts encrypted with a different key than the key in object metadata after completion. Resulting in potential error on GetObject later: - If bucket had configuredMasterKeyId but no masterKeyId (no AES before or aws:kms without configuredKey) it would crash on decryption. - If bucket had configuredMasterKeyId and a masterKeyId it would be used to decrypt parts potentially encrypted with a configuredMasterKeyId, decrypting gibberish - On UploadPart object level encryption could be provided (outside sdk/cli) which is bad. ___ The expected behavior fixed here is to use the provided SSE on CreateMPU and then for UploadPart and CompleteMPU use the SSE provided at CreateMPU. The MPU calls also return the SSE headers now. The CopyObject returned SSE headers are fixed as well, the configuredMasterKeyId was ignored This fix allow seamless continuation of ongoing MPU during SSE migration. ___ There is no migration to fix already existing completed MPU. (cherry picked from commit 8129376)
(cherry picked from commit 415781a)
(cherry picked from commit eb282f4)
(cherry picked from commit ea6fa9f)
(cherry picked from commit 1324204)
Hello bourgoismickael,My role is to assist you with the merge of this Available options
Available commands
Status report is not available. |
Request integration branchesWaiting for integration branch creation to be requested by the user. To request integration branches, please comment on this pull request with the following command:
Alternatively, the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR cherry-picks changes from the hotfix branch to update server‐side encryption (SSE) with support for both internal and external KMS. Key changes include updating the encryption header handling (using the new getKeyIdFromArn logic and kmsHideScalityArn flag), refactoring the KMS wrapper to use a factory for backend instantiation, and updating the bucket/object encryption APIs accordingly.
Reviewed Changes
Copilot reviewed 27 out of 27 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
tests/functional/aws-node-sdk/test/object/encryptionHeaders.js | Update encryption header expectations using getKeyIdFromArn and config flag |
package.json | Changed Arsenal dependency to track KMS-related improvements |
lib/utilities/collectResponseHeaders.js | Updates to conditionally transform KMS key IDs in response headers |
lib/kms/wrapper.js | Major refactoring using a factory pattern and returning masterKeyArn alongside |
lib/kms/in_memory/backend.js & lib/kms/file/backend.js | Updated backend functions to consistently use key ARN formatting |
lib/api/*.js | Updates in objectPut, objectGet, objectCopy, MPU and related APIs to support new SSE handling |
lib/api/apiUtils/object/sseHeaders.js | New module to centralize setting of SSE headers |
lib/api/apiUtils/bucket/updateEncryption.js | Updated encryption migration logic |
lib/api/apiUtils/bucket/bucketEncryption.js | Adjusted to always include ARN prefix when necessary |
lib/Config.js | Changes to support new KMS configuration and SSE migration options |
config.json | Updated configuration flags and kmsAWS details |
Comments suppressed due to low confidence (1)
lib/kms/wrapper.js:216
- The callback in createBucketKey now returns both masterKeyId and masterKeyArn. Please ensure that all downstream consumers are updated to use masterKeyArn where applicable for consistency.
return cb(null, { masterKeyId, masterKeyArn });
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
approving without much review as cherry picked so code must be already approved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
approving without much review as cherry picked so code must be already approved
a9dce59
to
6f8b630
Compare
/create_integration_branches |
ConflictA conflict has been raised during the creation of I have not created the integration branch. Here are the steps to resolve this conflict: $ git fetch
$ git checkout -B w/8.8/improvement/CLDSRV-636-kms-cherry-pick origin/development/8.8
$ git merge origin/improvement/CLDSRV-636-kms-cherry-pick
$ # <intense conflict resolution>
$ git commit
$ git push -u origin w/8.8/improvement/CLDSRV-636-kms-cherry-pick The following options are set: create_integration_branches |
ConflictA conflict has been raised during the creation of I have not created the integration branch. Here are the steps to resolve this conflict: $ git fetch
$ git checkout -B w/9.0/improvement/CLDSRV-636-kms-cherry-pick origin/development/9.0
$ git merge origin/w/8.8/improvement/CLDSRV-636-kms-cherry-pick
$ # <intense conflict resolution>
$ git commit
$ git push -u origin w/9.0/improvement/CLDSRV-636-kms-cherry-pick The following options are set: create_integration_branches |
Integration data createdI have created the integration data for the additional destination branches.
The following branches will NOT be impacted:
You can set option
The following options are set: create_integration_branches |
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
The following options are set: create_integration_branches |
/approve |
In the queueThe changeset has received all authorizations and has been added to the The changeset will be merged in:
The following branches will NOT be impacted:
There is no action required on your side. You will be notified here once IMPORTANT Please do not attempt to modify this pull request.
If you need this pull request to be removed from the queue, please contact a The following options are set: approve, create_integration_branches |
Queue build failedThe corresponding build for the queue failed:
Remove the pull request from the queue
|
I have successfully merged the changeset of this pull request
The following branches have NOT changed:
Please check the status of the associated issue CLDSRV-636. Goodbye bourgoismickael. |
Cherry-pick from implementation for hotfix/9.2.0 updated to match latest cloudserver
See above PR for description