A multinational retail corporation is designing a secure vendor inventory ingestion platform. Vendors must upload inventory catalogs from their respective AWS accounts directly to an Amazon S3 bucket located in the retailer's central Ingestion account. The retailer's security policy mandates that all data must be encrypted at rest using AWS KMS. The solutions architect initially configures default S3 bucket encryption using the AWS-managed S3 key (aws/s3). However, vendor IAM roles receive 'Access Denied' errors when attempting to upload objects, despite having explicit s3:PutObject permissions in their IAM policies and the S3 bucket policy. Which configuration change will resolve this issue while maintaining compliance with the security policy?
- Replace the default S3 bucket encryption with a Customer Managed Key (CMK) created in the Ingestion account. Configure the CMK's key policy to allow the vendor's IAM roles to perform the kms:GenerateDataKey and kms:Encrypt actions, and add corresponding permissions to the vendor roles' local IAM policies.Cevap
- BRetain the default S3 bucket encryption using the AWS-managed KMS key (aws/s3). Update the Ingestion S3 bucket policy to allow the vendor IAM roles to perform the kms:GenerateDataKey and kms:Encrypt actions directly on the bucket, which delegates access to the underlying AWS-managed key.
- CApply a Service Control Policy (SCP) at the root of the retailer's AWS Organization that permits the kms:GenerateDataKey and kms:Encrypt actions on the default aws/s3 key for the vendor accounts. Attach this SCP to the OU containing the Ingestion account to enable cross-account access.
- DModify the trust relationship of a cross-account IAM role in the Ingestion account to trust the vendor's AWS accounts. Configure the S3 bucket policy with an aws:PrincipalOrgID condition referencing the vendor's Organization ID to allow direct S3 uploads without KMS key policy changes.