Repository navigation
feat: support SSE-C encryption for S3 storage - #3829
Draft
jhoppenstedt wants to merge 1 commit into
Draft
jhoppenstedt wants to merge 1 commit into
jhoppenstedt wants to merge 1 commit into
Conversation
Not up to standards ⛔🔴 Issues
|
| Category | Results |
|---|---|
| Security | 3 critical |
🟢 Metrics 61 complexity
Metric Results Complexity 61
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adding support for one master encryption key for S3 SSE-C (sending the key to a public S3 provider). This change doesn't include migration tooling for existing S3 storage backends.
Copied from the AWS documentation
S3 API headers required for SSE-C object encryption and decryption requests
You must provide the following three API headers to encrypt or decrypt objects with SSE-C:
x-amz-server-side-encryption-customer-algorithmUse this header to specify the encryption algorithm. The header value must beAES256.x-amz-server-side-encryption-customer-keyUse this header to provide the 256-bit, base64-encoded encryption key for Amazon S3 to use to encrypt or decrypt your data.x-amz-server-side-encryption-customer-key-MD5Use this header to provide the base64-encoded 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.References
Related Issue
Motivation and Context
I want to use public S3 providers as storage backend. Bigger ones like AWS or OVH support their own managed key solution but I want to have the key under my control. So S3 SSE-C it is: Sending the encryption key with every S3 request.
How Has This Been Tested?
Tested the changes against a locally running MinIO S3 backend.
Uploaded a file via the UI and tried downloading via AWS CLI
Succesful download with SSE-C Key
Failure without SSE-C Key
Screenshots (if appropriate):
Types of changes
Checklist: