SCS-C02 Management and Security Governance Practice Question
A company uses AWS KMS to encrypt data in S3 buckets. The security team needs to ensure that KMS keys can only be used by specific IAM roles within the same account. Which key policy should be applied?
⚠ Common exam trap
SCS-C02 often tests the misconception that specifying the account root ARN restricts access to the account — candidates must remember that root ARN delegates to IAM and does not limit usage to specific roles.
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
✓
"Principal": {"AWS": "arn:aws:iam::123456789012:role/AllowedRole"}
A KMS key policy that names a specific IAM role ARN as the principal grants key usage only to that role, which directly satisfies the requirement to restrict key usage to specific IAM roles within the account. The key policy is the primary access control for a KMS key, and explicit role ARNs enforce least privilege at the key level.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✗
"Principal": {"AWS": "arn:aws:iam::123456789012:*"}
Why it's wrong here
Using the wildcard suffix ':*' in the principal ARN delegates permission to every IAM entity (users, groups-attached policies, and roles) in the account. If any IAM principal in the account is compromised or misconfigured, it can directly call kms:Decrypt, kms:GenerateDataKey, or other key operations. This broad blast radius violates least privilege and would fail an AWS audit because it grants key access to principals that were never explicitly intended to use the key.
- ✗
"Principal": {"AWS": "*"}
Why it's wrong here
Using 'Principal': {'AWS': '*'} allows anonymous access to the KMS key, meaning anyone with network access to AWS can attempt to use the key, including principals from other AWS accounts and unauthenticated users. KMS key policies are evaluated before IAM policies, and a 'Principal': '*' in the key policy grants permissions without requiring any IAM authorization. This is an extreme security risk because any attacker who obtains an encrypted S3 object URL could call KMS decrypt operations if the S3 bucket policy also permits access, effectively bypassing the intended encryption access controls.
- ✗
"Principal": {"AWS": "arn:aws:iam::123456789012:root"}
Why it's wrong here
Specifying the root user ARN as the principal grants access only to the account root user, which is an IAM entity that has unconditional administrative permissions. While the root user can delegate access via IAM policies, the key policy itself is still restrictive to that single principal. However, this is incorrect for a workload scenario because applications running under an IAM role (e.g., an EC2 instance or Lambda function) cannot use the KMS key — their role does not match the root principal ARN. Moreover, using the root user for day-to-day operations is a security anti-pattern that violates the principle of least privilege and AWS recommends against storing root access keys.
- ✓
"Principal": {"AWS": "arn:aws:iam::123456789012:role/AllowedRole"}
Why this is correct
This principal ARN explicitly identifies the IAM role 'AllowedRole' in the account. When the role is assumed (by an EC2 instance, Lambda, or an STS AssumeRole call), the role's temporary credentials include the role's ARN as the principal, so the KMS key policy exactly matches it. This is the correct least-privilege configuration because no other IAM user or role can use the key unless the role allows it, and the key policy does not expose the key to the entire account. You could further restrict it by adding a condition like kms:ViaService to limit it to S3, but this is the best answer among the options.
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 SCS-C02 question is part of Courseiva's 1,205-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 and reviewed by Johnson Ajibi, MSc IT Security
Senior Network & Security Engineer · founder of Courseiva
Last reviewed September 2026 · checked against the official Amazon Web Services exam blueprint
This SCS-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 SCS-C02 exam.