DOP-C02 Security and Compliance Practice Question
A company has a multi-account AWS environment using AWS Organizations. The security team wants to enforce that all S3 buckets across accounts are encrypted with AWS KMS. Which combination of controls should be used to enforce this?
⚠ Common exam trap
A common mix-up: candidates confuse object-level encryption (s3:PutObject) with bucket-level default encryption (s3:PutBucketEncryption), and fail to realize that an SCP is needed for preventive enforcement, not just detective or reactive controls.
Answer choices
Why each option matters
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
Use an SCP to deny s3:PutBucketEncryption with encryption disabled, and AWS Config rules to detect non-compliant buckets.
It combines preventive and detective controls. An SCP can deny the s3:PutBucketEncryption action unless the bucket is configured with KMS encryption, which prevents non-compliant buckets from being created or modified. AWS Config rules then detect any existing non-compliant buckets or changes that bypass the SCP, providing continuous compliance monitoring.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✓
Use an SCP to deny s3:PutBucketEncryption with encryption disabled, and AWS Config rules to detect non-compliant buckets.
Why this is correct
An SCP at the root or OU level is the correct proactive control because it allows you to explicitly deny the s3:PutBucketEncryption API action when the encryption configuration is null or set to SSE-S3, effectively preventing any IAM principal from creating or modifying a bucket without server-side encryption. This works on all accounts in the organization, regardless of local IAM configurations, and blocks the disabling of encryption even after the bucket is created. AWS Config then acts as a detective layer: the managed rule s3-bucket-encryption-enabled continuously evaluates buckets and flags any that are non-compliant, including those that existed before the SCP was applied, ensuring full coverage through a defense-in-depth approach.
- ✗
Attach an IAM policy to all users denying s3:PutObject without KMS.
Why it's wrong here
This approach is insufficient because it narrowly targets object uploads (s3:PutObject) rather than the bucket-level encryption configuration itself. An IAM policy attached to users does not affect the s3:CreateBucket or s3:PutBucketEncryption actions, and S3's default encryption at the bucket level determines whether unencrypted objects are accepted—so the bucket could still be created with SSE-S3 disabled, allowing non-compliant uploads by roles, services, or root unless the same policy is applied everywhere. Moreover, user-attached IAM policies are bypassable if an adversary gains access to a role or performs actions via a service that does not carry the policy, making this a fragmented and incomplete safeguard rather than a centralized control.
- ✗
Use an SCP to deny s3:CreateBucket without encryption, and rely on CloudTrail to alert.
Why it's wrong here
The s3:CreateBucket API action does not include an 'encryption' parameter, so an SCP cannot conditionally deny bucket creation based on encryption status—there is no such condition key available for that action. Consequently, the SCP would either block all bucket creation or fail to stop unencrypted buckets, depending on how it is written, making it technically invalid. Additionally, CloudTrail only logs API activity; it cannot detect pre-existing non-compliant resources, and relying on alerting alone lacks automated remediation, leaving non-compliant buckets invisible until a human reviews the logs, which is neither proactive nor reliable for continuous compliance.
- ✗
Use AWS Config rules only, with automatic remediation via Lambda.
Why it's wrong here
AWS Config is a detective control that identifies non-compliant resources after they exist, so an unencrypted S3 bucket is still created and accessible until the rule detects it and Lambda remediation runs—creating a window of exposure and potential compliance violation. Automatic remediation via Lambda is also complex because you must differentiate between buckets that need SSE-S3 versus KMS, handle buckets with existing object-versions, and manage error-prone steps like setting default encryption after objects have been uploaded unencrypted (which does not retroactively encrypt them). While Config plus Lambda adds value, it lacks the preventive guarantee that a well-designed SCP provides, since the SCP blocks the non-compliant API call at the boundary before any resource exists.
Quick reference
AWS S3 Storage Class Comparison
| Storage Class | Min Duration | Retrieval | Use Case |
|---|---|---|---|
| S3 Standard | None | Immediate | Frequently accessed data |
| S3 Standard-IA | 30 days | Immediate | Infrequent access, rapid retrieval |
| S3 One Zone-IA | 30 days | Immediate | Non-critical infrequent data |
| S3 Intelligent-Tiering | None | Immediate–hours | Unknown or changing access patterns |
| S3 Glacier Instant | 90 days | Milliseconds | Archive with instant retrieval |
| S3 Glacier Flexible | 90 days | Minutes–hours | Archive, flexible retrieval |
| S3 Glacier Deep Archive | 180 days | Hours | Long-term compliance archive |
Go deeper
Related to this question
About these practice questions
This DOP-C02 question is part of Courseiva's 1,298-question bank — original exam-style content with full explanations and wrong-answer analysis, never real exam questions or exam dumps. Learn why practice questions differ from exam dumps →
JA
Written by Johnson Ajibi, MSc IT Security
Senior Network & Security Engineer · founder of Courseiva
This DOP-C02 practice question is part of Courseiva's free Amazon Web Services certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the DOP-C02 exam.