AWS Solutions Architect Associate SAA-C03 Sign in Try 10 free questions

Free SAA-C03 practice scenarios: IAM policies

Who can do what, and how AWS decides — roles, evaluation logic and least privilege. Six scenarios with the reasoning attached, SAA-C03, 2026 edition.

Try 6 free IAM scenarios in the exam's own style — every answer explained, no sign-up.

Straight to the 6 free questions ↓

IAM is the foundation of the SAA-C03’s largest domain, and its scenarios reward a small number of reflexes rather than memorised JSON. The exam is not asking you to write policies — it is asking you to recognise which mechanism a requirement calls for, and to apply the evaluation rules the same way AWS does.

Roles, not keys — the reflex the exam rewards most

When the caller is an AWS resource — an EC2 instance, a Lambda function, an ECS task — the answer is almost always an IAM role, never a stored access key. A role delivers temporary credentials that rotate automatically and never sit in a file waiting to leak. Any option that stores a long-lived key, however cleverly hidden in user data or an environment variable, is solving the wrong problem. Read the caller first: if it is a service, reach for a role before you read the rest of the options.

How IAM decides: the evaluation rule

The diagram above is the whole game. IAM gathers every applicable policy — identity-based, resource-based, permissions boundaries, service control policies — and applies two rules in order:

  • An explicit Deny anywhere overrides everything. If any policy denies the action, it is denied.
  • Otherwise the request is allowed only if at least one policy explicitly allows it; with no allow, the default is deny.

That is why a user with a group allow and a personal explicit deny is denied — the deny wins. Policies do not have precedence by attachment point, and evaluation is not order-dependent: everything is combined, then the deny rule decides.

Least privilege is a scoring pattern, not a slogan

On a security-domain question, the most-scoped option that still satisfies the requirement is almost always correct. Grant the one action on the one resource the workload actually uses — s3:PutObject on a specific prefix, not s3:*, not "*", not a broad managed policy “so it can grow later”. The distractors deliberately offer convenience in exchange for blast radius, and the exam consistently marks that trade wrong.

Capping delegated power: permissions boundaries

When the requirement is that someone can create identities but those identities must never exceed a fixed ceiling, the answer is a permissions boundary. Effective permissions are the intersection of the boundary and the identity’s own policies, so nothing a delegated developer writes can break through it. Distinguish it from a group (which grants, not caps) and from detective tools like Access Analyzer (which report after the fact rather than prevent).

Conditions and temporary credentials

Two more patterns close out the common set. A Condition — like requiring aws:MultiFactorAuthPresent — is part of whether a statement applies at all; if it is not met, the allow simply does not fire and the request falls to the default deny. And for time-limited access, assuming a role for short-lived AWS STS credentials beats any permanent key. Both reduce to the same instinct: prefer the mechanism that expires or scopes access automatically over the one you have to babysit.

How to use the six scenarios below

Answer each one before opening the explanation, and when you miss, find the requirement word that decided it — “automatic”, “temporary”, “never exceed”, “only that prefix”. Every explanation names the deciding constraint and then takes the distractors apart one by one. The services here are familiar; the skill the exam tests is choosing the right one under the exact requirement, which is what the reasoning below drills. For the domain overview, see Design Secure Architectures.

How IAM evaluates a request: it starts from an implicit deny, then gathers every applicable policy — identity-based, resource-based, permissions boundaries and service control policies. If any policy has an explicit deny the request is denied outright; otherwise it is allowed only if at least one policy explicitly allows it, and denied by default if none do. An explicit deny always overrides any allow.

6 free SAA-C03 practice questions

Answers and explanations — no email wall
SAA-C03 Question 1 of 6

An application running on an Amazon EC2 instance needs to read objects from an Amazon S3 bucket. A developer proposes storing long-lived IAM user access keys in a configuration file on the instance. A solutions architect must recommend the AWS best-practice approach instead. What should they recommend?

Answer: A — Attach an IAM role to the EC2 instance granting the required S3 permissions.

An IAM role attached to the instance delivers temporary, automatically rotated credentials through the instance metadata service — nothing to store, nothing to leak, and the credentials expire on their own. That is the standing best practice whenever compute needs to call AWS. Why not the others: user data and environment variables are just different hiding places for a long-lived secret that still lives on the instance and can still be exfiltrated. Creating an IAM user with a rotation schedule reduces the blast radius but keeps a static credential where a role removes it entirely — the exam always prefers the role when the caller is an AWS resource.

SAA-C03 Question 2 of 6

A user belongs to an IAM group whose policy allows s3:GetObject on a bucket. A separate policy attached directly to the user contains an explicit Deny for s3:GetObject on the same bucket. When the user tries to download an object, what happens?

Answer: A — The request is denied — an explicit deny overrides any allow.

IAM evaluates the union of all applicable policies, and within that union an explicit Deny always wins — full stop. So the download is denied. Why not the others: allows and denies do not 'cancel out' into a neutral result; a single explicit deny is decisive. There is no precedence of user policies over group policies — they are simply combined. And evaluation is not order-dependent: IAM collects every statement first, then applies the rule that any explicit deny overrides every allow. This is the single most tested fact about policy evaluation.

SAA-C03 Question 3 of 6

A solutions architect is writing an IAM policy for an application that only ever needs to put objects into one specific S3 prefix. Following least privilege, which policy is most appropriate?

Answer: A — Allow s3:PutObject on the specific bucket ARN scoped to that prefix.

Least privilege means granting exactly the one action the workload uses, on exactly the one resource it touches — s3:PutObject scoped to that bucket and prefix. Why not the others: s3:* on the bucket hands over delete, policy changes and reads the app never needs; PutObject on "*" removes the resource boundary entirely; and AmazonS3FullAccess is broad by design. Each of the wrong answers trades a real reduction in blast radius for a little less typing — the opposite of what the exam rewards on a security-domain question.

SAA-C03 Question 4 of 6

A company delegates the ability to create IAM roles to its development teams, but must guarantee that no role a developer creates can ever grant more than a fixed set of permissions — even if the developer writes a broad policy. Which IAM feature enforces this ceiling?

Answer: A — A permissions boundary attached to the roles the developers create.

A permissions boundary sets the maximum permissions an identity can have: the effective permissions are the intersection of the boundary and the identity's own policies, so a role can never exceed the boundary no matter how broad its attached policy. That is exactly the guaranteed ceiling the requirement asks for. Why not the others: an IAM group aggregates users and grants permissions, it does not cap them. A password policy governs sign-in, not authorisation scope. Access Analyzer surfaces overly permissive access after the fact — useful, but detective, not the preventive guarantee the scenario demands.

SAA-C03 Question 5 of 6

An IAM policy statement includes a Condition that requires aws:MultiFactorAuthPresent to be true for s3:DeleteObject. A user authenticated with only a username and password attempts to delete an object. What is the result?

Answer: A — The delete is denied because the MFA condition is not satisfied.

A Condition block is part of whether the statement applies at all: if the condition is not met, the allow does not take effect, so the request falls through to the default deny. With no MFA in the session, the delete is denied. Why not the others: conditions are enforced, not advisory. Ordinary authentication does not satisfy a specific requirement for MFA in the session context. And IAM does not interactively prompt for MFA mid-request — the MFA must already be present in the credentials, which is why sensitive actions are commonly gated this way.

SAA-C03 Question 6 of 6

A solutions architect needs to grant an application temporary, time-limited access to AWS resources rather than permanent credentials. Which approach fits the AWS best practice?

Answer: A — Have the application assume an IAM role and use the short-lived credentials from AWS STS.

Assuming a role returns temporary credentials from AWS STS that expire automatically — the textbook pattern for time-limited access without any long-lived secret to manage. Why not the others: a shared IAM user reintroduces the permanent access key the requirement is trying to avoid. A root user access key should never exist at all, let alone be handed to an application — root is for the rare account-level tasks only. Manual weekly rotation of hard-coded credentials is exactly the toil that temporary credentials exist to eliminate.

That is exactly how every question in the course works — answer, explanation, why-not. The real set continues in the practice player: 10 free questions, no sign-up.

Continue with the 10 free questions →

Those 6 questions were the start.

The exam does not test whether you recognise a term — it tests whether you can rule out three plausible answers under time pressure. That is what the explanations above are for, and there are 780 more questions built exactly like them.

Collecting questions yourself

  • Scattered across forums, of unknown age
  • Answer keys without reasoning
  • No idea which domain you are weak in

Practising with a system

  • 780 questions in 12 full tests, SAA-C03 (2026)
  • Every option explained — including the wrong ones
  • Readiness per exam domain, and drills for your weakest
Start free — 10 questions

Straight into the player. No account, no email.

Frequently asked questions

How does IAM fit the SAA-C03 secure-architectures domain?
Design Secure Architectures is the largest domain at 30% of the exam, and IAM — who can do what — is its foundation. Expect scenarios on roles versus keys, policy evaluation, least privilege and permissions boundaries rather than syntax recall.
Do I need to memorise policy JSON for the exam?
No. The SAA-C03 tests whether you can pick the right mechanism — a role, an explicit deny, a permissions boundary — for a described requirement. You reason about policies at the level these scenarios use, not by writing raw JSON from memory.
Are these real exam questions?
No. They are original scenarios written for this page in the exam's style and difficulty. Reproducing real exam items violates the AWS certification agreement and can cost a candidate their certification — ours come with the reasoning attached, which is the part that prepares you.
What is the one rule to take away?
When compute needs to call AWS, use a role, not keys; and when policies conflict, an explicit deny always wins. Those two reflexes answer a large share of IAM questions on their own.

Updated for SAA-C03 (July 2026). The sample questions above are our own work in the style of the exam — not real exam items. The exam itself is set and marked by the certification body.