Courseiva
Design Secure ArchitecturesmediumMultiple ChoiceObjective-mapped

SAA-C03 Design Secure Architectures Practice Question

Account B has an IAM role that includes kms:Decrypt for a specific KMS key ARN in account A. However, when the role tries to read an S3 object encrypted with that CMK, the application fails with AccessDenied: not authorized to perform kms:Decrypt. CloudTrail shows the KMS API call is denied by key policy. What is the most secure and correct fix?

⚠ Common exam trap

Candidates often assume IAM permissions alone are sufficient for cross-account KMS operations, forgetting that KMS key policies are resource-based and must explicitly grant access to external principals.

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

Update the KMS key policy in account A to allow the account B role principal to use kms:Decrypt on the key.

Cross-account access to a customer managed KMS key (CMK) requires the key policy to explicitly grant the external IAM role principal the necessary permissions (e.g., kms:Decrypt). Even if the IAM role in Account B has an IAM policy allowing kms:Decrypt, the KMS key policy in Account A acts as a resource-based policy that must also allow the action; without this, the request is denied by the key policy, as shown in CloudTrail.

Answer analysis

Option-by-option breakdown

For each option: why learners choose it and why it is or isn't the right answer here.

  • Update the IAM role in account B to include kms:Encrypt and kms:GenerateDataKey; then kms:Decrypt will start working automatically.

    Why it's wrong here

    kms:Encrypt and kms:GenerateDataKey do not grant kms:Decrypt authorization. The error indicates that the KMS key policy is denying the decrypt call, so the fix must adjust KMS key policy (and/or grants), not add unrelated IAM KMS actions.

  • Update the KMS key policy in account A to allow the account B role principal to use kms:Decrypt on the key.

    Why this is correct

    Cross-account use of a CMK requires the KMS key policy (in the CMK’s account) to allow the external principal to perform kms:Decrypt. Since CloudTrail shows the denial is by key policy, updating the key policy to grant the account B role kms:Decrypt on the specific key is the correct and least-privilege solution.

  • Disable key policy for the CMK by switching to S3-managed encryption, because KMS key policies are always enforced regardless of grants.

    Why it's wrong here

    Switching encryption types changes the encryption configuration and does not address the underlying requirement for authorization to use the specific CMK. Additionally, KMS key policy is not a concept that can be “disabled” for a CMK; the correct fix is to modify the CMK key policy (and/or create appropriate grants).

  • Create an SCP in account A that allows kms:Decrypt for all accounts, avoiding changes to the key policy.

    Why it's wrong here

    Service Control Policies (SCPs) are organization-level guardrails. Even if an SCP allows kms:Decrypt, KMS can still deny the call if the CMK’s key policy does not allow it. SCPs also do not replace the CMK key policy requirement for cross-account authorization.

Quick reference

AWS S3 Storage Class Comparison

Storage ClassMin DurationRetrievalUse Case
S3 StandardNoneImmediateFrequently accessed data
S3 Standard-IA30 daysImmediateInfrequent access, rapid retrieval
S3 One Zone-IA30 daysImmediateNon-critical infrequent data
S3 Intelligent-TieringNoneImmediate–hoursUnknown or changing access patterns
S3 Glacier Instant90 daysMillisecondsArchive with instant retrieval
S3 Glacier Flexible90 daysMinutes–hoursArchive, flexible retrieval
S3 Glacier Deep Archive180 daysHoursLong-term compliance archive

About these practice questions

One of 302 original SAA-C03 practice questions on Courseiva, each with a full explanation and wrong-answer analysis — not exam dumps or protected exam content. Learn why practice questions differ from exam dumps →

How Courseiva writes practice questions · Editorial policy

JA

Written by Johnson Ajibi, MSc IT Security

Senior Network & Security Engineer · founder of Courseiva

This SAA-C03 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 SAA-C03 exam.