4 Answers
I think you can specify which CMK that you want to use to encrypt the objects when you upload to the S3 using KeyId header in the request. If you use a CMK to encrypt your data, you have to use the same CMK to decrypt cipher text. You can’t use separate CMK for each customer to access the same objects in S3. I think D is better option because with Client side encryption, the object is encrypted before the object is uploaded to the S3 bucket, and the encryption key is controlled by the customer. Since only you have the encryption key, you can ensure that nobody else except you can decrypt the data.
A, but it’s a tough call on what they consider ‘more’ secure. With ‘D’, the encryption key is out of the system and relies on each customer to keep the key secure. KMS could be restricted to use by the IAM role of the application.
I think answer is A. For each customer application, there is a role to access data on S3. I think same role could be an owner for KMS key which would be applied to S3. I think the last line is additional line.
The question is not clear, will each customer access his own content only, or everyone can access everything?
If a Customer is going to access his own content (likely scenario) then A would work best – SSE + separate KMS for each.
As regards D, client side encryption and distribution of Keys, clients managing the Keys and Encryption – is problematic. Too many moving parts to be managed by each customer. Client managing keys is especially problematic as many may not have a good system/process.
Can WorkDock be used for Object Storage,
A? Can we use SEPERATE AWS KMS key for each customer to access same object in S3