An application needs to encrypt large objects (greater than 10 GB) on the client side before uploading them to Amazon S3. The solution must use AWS KMS to manage the root keys. What is the most secure and efficient method to accomplish this?
-
A
Send the entire 10 GB object to the KMS Encrypt API to be encrypted directly by the KMS key.
-
B
Use the KMS GenerateDataKey API to create a data key, use it to encrypt the object locally, and store the encrypted data key alongside the encrypted object in S3.
-
C
Create a new unique customer managed KMS key for each 10 GB object to ensure strong encryption boundaries.
-
D
Configure S3 server-side encryption with KMS-managed keys (SSE-KMS) and let S3 handle all encryption automatically upon upload.