easymultiple choiceObjective-mapped

A company has an Amazon S3 bucket for sensitive reports. They must ensure that any object uploaded with s3:PutObject is encrypted using AWS KMS (SSE-KMS). Which S3 bucket policy approach best enforces this by denying uploads that do not use SSE-KMS?

Question 1easymultiple choice
Full question →

A company has an Amazon S3 bucket for sensitive reports. They must ensure that any object uploaded with s3:PutObject is encrypted using AWS KMS (SSE-KMS). Which S3 bucket policy approach best enforces this by denying uploads that do not use SSE-KMS?

Answer choices

Why each option matters

Good practice is not just finding the correct option. The wrong answers often show the exact trap the exam wants you to fall into.

A

Best answer

Use a Deny statement for s3:PutObject with a condition that denies requests where s3:x-amz-server-side-encryption is not "aws:kms" (SSE-KMS), for example: Condition { StringNotEquals: { "s3:x-amz-server-side-encryption": "aws:kms" } }

This directly checks the SSE encryption header used in the PutObject request. If a client uploads without SSE-KMS (for example, no encryption header or SSE-S3/AES256), the condition evaluates to true and the Deny prevents the upload.

B

Distractor review

Use a Deny statement that denies requests when aws:SecureTransport is false.

aws:SecureTransport only enforces encryption in transit (HTTPS). It does not ensure objects are encrypted at rest in S3 using SSE-KMS.

C

Distractor review

Use a Deny statement that checks the specific KMS key ID (s3:x-amz-server-side-encryption-aws-kms-key-id) and denies requests that don’t match a single alias value.

This enforces use of one particular KMS key/alias, which is more restrictive than the requirement (the requirement is only to use SSE-KMS, not a specific key). The best answer should enforce SSE-KMS generally, not a specific key identity.

D

Distractor review

Use a Deny or Allow statement that limits object keys using s3:prefix (for example, only allow keys under "reports/").

Key prefix restrictions control object naming/path, not whether the uploaded object is encrypted at rest with SSE-KMS.

Common exam trap

Common exam trap: ACLs stop at the first match

ACLs are processed top to bottom. The first matching entry wins, and an implicit deny usually exists at the end.

Technical deep dive

How to think about this question

ACL questions test precision: source, destination, protocol, port and direction. A generally correct ACL can still fail if it is applied on the wrong interface or in the wrong direction.

KKey Concepts to Remember

  • Standard ACLs match source addresses.
  • Extended ACLs can match source, destination, protocol and ports.
  • The first matching ACL entry is used.
  • There is usually an implicit deny at the end.

TExam Day Tips

  • Check inbound versus outbound direction.
  • Read the ACL from top to bottom.
  • Look for a broader permit or deny above the intended line.

Related practice questions

Related SAA-C03 practice-question pages

Use these pages to review the topic behind this question. This is how one missed question becomes focused revision.

More questions from this exam

Keep practising from the same exam bank, or move into a focused topic page if this question exposed a weak area.

FAQ

Questions learners often ask

What does this SAA-C03 question test?

Standard ACLs match source addresses.

What is the correct answer to this question?

The correct answer is: Use a Deny statement for s3:PutObject with a condition that denies requests where s3:x-amz-server-side-encryption is not "aws:kms" (SSE-KMS), for example: Condition { StringNotEquals: { "s3:x-amz-server-side-encryption": "aws:kms" } } — To require SSE-KMS for all uploads, use a bucket policy Deny that triggers when the PutObject request does not include the SSE-KMS header. In practice, checking the request header condition key s3:x-amz-server-side-encryption and denying when it is not "aws:kms" ensures that any upload using SSE-S3, no encryption header, or a different encryption mode is rejected. This enforces the requirement at the storage layer (S3) regardless of application behavior, and Deny statements override any matching Allow statements. B confuses encryption in transit with encryption at rest. C enforces a specific KMS key/alias rather than the general requirement to use SSE-KMS. D restricts object key naming but provides no guarantee about SSE-KMS usage for the object content.

What should I do if I get this SAA-C03 question wrong?

Then try more questions from the same exam bank and focus on understanding why the wrong options are tempting.

Discussion

Loading comments…

Sign in to join the discussion.