A logistics company has an existing application that stores customer delivery signatures and shipping manifests in an Amazon S3 bucket. The bucket is currently configured with Server-Side Encryption with Amazon S3 managed keys (SSE-S3). Due to new regulatory compliance mandates, the company must enhance its data protection posture by meeting the following requirements:
- All data must be encrypted using a key that supports automatic annual rotation.
- Detailed audit logs of all encryption and decryption operations must be centralized in a dedicated security monitoring AWS account.
- The system must minimize the volume of KMS API requests to avoid throttling errors during peak hours when a high volume of documents are uploaded.
- Any attempt to upload objects using incorrect encryption configurations or without encryption must be blocked.
Which combination of actions should the Solutions Architect implement to meet these requirements with the least operational overhead?
- Create a customer managed key (CMK) in AWS KMS within the application account, enable automatic key rotation, and configure the S3 bucket's default encryption to use this KMS key. Enable S3 Bucket Keys on the S3 bucket. Configure AWS CloudTrail to log S3 data events and KMS key management events, delivering them to a centralized S3 bucket in the security account. Add a bucket policy to the S3 bucket that denies s3:PutObject requests if the x-amz-server-side-encryption header is present and not set to aws:kms.Answer
- BConfigure the S3 bucket default encryption to use the AWS-managed KMS key (aws/s3). Enable S3 Bucket Keys on the S3 bucket. Modify the key policy of the AWS-managed KMS key to delegate cross-account audit permissions to the centralized security account, and configure CloudTrail logging. Attach an organization-level Service Control Policy (SCP) that explicitly grants s3:PutObject permissions to allow uploads using this KMS key.
- CCreate a customer managed key (CMK) in AWS KMS, enable automatic key rotation, and set the S3 bucket default encryption to use this key. Disable S3 Bucket Keys to ensure each object access generates a separate KMS decryption audit log in CloudTrail. Configure CloudTrail to deliver logs to the security account's S3 bucket using a bucket policy that allows the CloudTrail principal but lacks aws:SourceArn or aws:SourceAccount condition checks.
- DCreate a customer managed key (CMK) in AWS KMS and enable automatic key rotation. Disable default S3 bucket encryption. Attach a Service Control Policy (SCP) to the application account's OU that explicitly grants s3:PutObject permissions when the KMS key is specified, assuming this SCP replaces the need for bucket policies or local IAM permissions. Configure the application to encrypt files locally before uploading to S3.