versitygw icon indicating copy to clipboard operation
versitygw copied to clipboard

[Feature] - Support for SSE-C in S3 Proxy Backend

Open BEBU88 opened this issue 5 months ago • 7 comments

Describe the solution you'd like

Please add support for SSE-C In The S3 Backend: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html

BEBU88 avatar Nov 03 '25 20:11 BEBU88

@BEBU88 would you want the customer provided keys to be an option provided for the gateway, or would you like these to come from the client directly?

benmcclelland avatar Nov 04 '25 20:11 benmcclelland

@benmcclelland I would like this to be an option provided from the gateway. My usecase is to send S3 requests to the gateway and forward them to an public S3 provider with SSE-C encryption.

BEBU88 avatar Nov 05 '25 09:11 BEBU88

@BEBU88 Is your usecase about sending the SSE-C headers to gateway, which will proxy them to your public S3 provider, which will then handle the encryption. So the gateway will only serve as a proxy layer ?

niksis02 avatar Nov 05 '25 16:11 niksis02

@niksis02 My usecase is about sending requests without SSE-C headers to the gateway which will then add those headers and send them to my public provider.

BEBU88 avatar Nov 05 '25 17:11 BEBU88

@BEBU88 as long as we are going to proceed with stateful approach(from the gateway perspective), we should think of a secure mechanism to store/get the encryption keys. Do you have any ideas to share ?

niksis02 avatar Nov 05 '25 21:11 niksis02

@niksis02 Maybe we could store them in a docker secret?

BEBU88 avatar Nov 06 '25 16:11 BEBU88

@niksis02 Maybe we could store them in a docker secret?

I think options would be either have them specifically configured through option/env var, or we could have some configuration specified to retrieve these from a key server. The key server is more secure and flexible (can have different keys per bucket, per object, etc), but also a bit more complicated to deploy. The option/env var approach would be easier to add and deploy, but would be potentially insecure and less flexible with the keys provided to all backend requests.

benmcclelland avatar Nov 06 '25 23:11 benmcclelland