IAM roles and AWS STS are the beating heart of the Design Secure Architectures domain, and the SAA-C03 tests them the same way every time: it describes a workload holding a long-lived access key and asks for the pattern that removes it. The correct answer is almost always a role issuing temporary credentials, and the distractors are real mechanisms that solve a slightly different problem.
Roles issue temporary credentials; users hold long-lived keys
An IAM user carries a permanent access key and secret. A role carries nothing permanent: an entity assumes it, and AWS STS mints temporary credentials that expire and rotate automatically. That single difference decides most questions. When the requirement mentions “no stored secret”, “automatically rotated”, or “only valid briefly if leaked”, the answer is a role — a leaked temporary credential simply stops working, while a leaked long-lived key is valid until someone notices and deletes it. The diagram contrasts the two: a compute identity assuming a role via STS on one side, a crossed-out static key on the other.
Instance profiles and service roles
For compute, the role is delivered for you. An instance profile attaches a role to an EC2 instance; the SDK pulls temporary credentials from the instance metadata service and refreshes them, so the application never handles a secret. A service role lets an AWS service act on your behalf — the classic case is a Lambda execution role, which Lambda assumes at runtime to hand your function temporary credentials for DynamoDB, S3 or wherever it writes. Watch for distractors that reach for the network or the resource policy: a security group grants no IAM permissions, and a resource-based policy on a function controls who may invoke it, not what it may do.
What STS actually hands back
When code calls AssumeRole, STS returns three things — an access key ID, a secret access key, and a session token — all stamped with an expiry. All three travel on every signed request; the session token alone is not a credential. Knowing the shape of that response lets you dismiss options offering “a permanent key” or “just a token you reuse forever”. A role’s trust policy, by contrast, decides who may assume it and is never returned to the caller.
Federation and scoping down
Human access follows the same mechanism. With SAML or web identity federation, an external identity provider authenticates the user, who then assumes a role and receives temporary credentials — no per-person IAM user, and access that expires with the session. And when a single call needs to be tighter than the role allows, a session policy passed inline to AssumeRole intersects with the role’s permissions: the session can only be equal to or narrower than the role, never broader. That is the tool for scoping one task down to a single S3 prefix without editing the role or disturbing anyone else who uses it.
The method for these scenarios
Read for the requirement word. “No stored keys” and “automatically rotated” point at a role and STS; “act on your behalf” points at a service role; “temporary credentials” and “session duration” point at AssumeRole; “authenticate through our identity provider” points at federation; “narrow just this session” points at a session policy. The seven scenarios below each turn on one of those constraints, and every explanation names it before taking the distractors apart. For the wider domain, see Design Secure Architectures.
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.