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 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
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 →
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.