Question

Difficulty: Very hardEnhancing Data Protection and Compliance

An enterprise manages its multi-account environment using AWS Organizations. Application servers running in several member accounts write transaction audit files to local Amazon S3 buckets. To comply with new data retention regulations, the company must aggregate these audit files into a centralized Amazon S3 bucket in a dedicated Security account. The files must be encrypted at rest using a customer managed key (CMK) that is rotated annually. The Security account must have sole ownership of all aggregated objects, and the solution must enforce minimum privilege and minimize operational overhead. Which combination of actions will meet these compliance requirements?

  1. A
    In the Security account, create an S3 bucket with S3 Object Ownership set to Bucket Owner Enforced. Enable default bucket encryption using the AWS managed key for Amazon S3 (aws/s3). Configure the S3 bucket policy to grant s3:PutObject access to the organization's member accounts using the aws:PrincipalOrgID condition. In the member accounts, update the application IAM roles to allow writing to the Security account's S3 bucket and utilizing the AWS managed key (aws/s3) for encryption.
  2. In the Security account, create an S3 bucket with S3 Object Ownership set to Bucket Owner Enforced. Create a customer managed KMS key in the Security account with rotation enabled, and configure its key policy to grant the organization's member accounts access to kms:GenerateDataKey and kms:Decrypt actions. In the Security account, configure the S3 bucket policy to allow s3:PutObject access to the organization's principal org ID (aws:PrincipalOrgID). In the member accounts, ensure the application IAM roles have permissions to use the Security account's KMS key and write to the Security account's S3 bucket.Answer
  3. C
    In the Security account, create an S3 bucket and a customer managed KMS key with rotation enabled. Create a Service Control Policy (SCP) at the Organization root that allows member accounts to perform kms:GenerateDataKey, kms:Decrypt, and s3:PutObject actions against the Security account's KMS key and S3 bucket. In the Security account, configure the S3 bucket policy to allow writing from the member accounts, and configure the application roles in the member accounts to use the KMS key.
  4. D
    In the Security account, create an S3 bucket with S3 Object Ownership set to Bucket Owner Preferred, and create a customer managed KMS key with rotation enabled. Configure the KMS key policy to grant the organization's member accounts access. Configure the S3 bucket policy to allow s3:PutObject access from the member accounts' roles, but omit the aws:PrincipalOrgID condition or any principal restrictions. Have the applications in the member accounts write objects without specifying an access control list (ACL).

Answer

The correct answer specifies creating a centralized S3 bucket in the Security account with S3 Object Ownership set to Bucket Owner Enforced, using a customer managed key (CMK) with rotation enabled whose key policy grants access to the member accounts, and configuring the S3 bucket policy with the aws:PrincipalOrgID condition to restrict access to the organization.
The correct option addresses all compliance requirements securely. Setting S3 Object Ownership to 'Bucket Owner Enforced' disables ACLs and automatically transfers ownership of all cross-account writes to the Security account. Using a customer managed KMS key is required since AWS managed keys (such as aws/s3) cannot be shared across accounts. The KMS key policy and S3 bucket policy in the Security account must explicitly delegate access to the member accounts (via the aws:PrincipalOrgID condition), and the local application roles must have permissions to utilize both the bucket and the key.

Step-by-Step Solution

1
Enforce Object Ownership in the Centralized S3 Bucket
Configured the S3 bucket's Object Ownership setting to 'Bucket Owner Enforced'.
This setting disables S3 ACLs and automatically transfers ownership of all newly uploaded objects to the bucket owner (the Security account), fulfilling the requirement that the Security account must have sole ownership without forcing clients to specify a bucket-owner-full-control ACL.
2
Configure the Customer Managed KMS Key for Cross-Account Access
Created a customer managed KMS key with automatic annual rotation, and added a statement in the key policy allowing member account IAM roles to perform kms:GenerateDataKey and kms:Decrypt.
AWS-managed KMS keys (like aws/s3) cannot be shared across accounts because their key policies are read-only. A customer managed KMS key is required to explicitly delegate cryptographic permissions to external AWS accounts.
3
Establish Bucket and IAM Policies with Minimum Privilege
Created an S3 bucket policy restricting s3:PutObject access to principals matching the organization's ID (aws:PrincipalOrgID). Updated the local IAM policies of the applications in the member accounts to allow s3:PutObject to the Security account's bucket and KMS actions on the Security account's CMK.
This ensures secure transmission, enforces encryption on upload, prevents unauthorized accounts from writing to the bucket, and provides local application roles with the necessary permissions to complete the write operations.

Key Concept

Cross-Account S3 Object Ownership and KMS Customer Managed Key Policy Management
Estimated Time:3m 0s
Rate this question