SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
SAA-C03 · Domain 1

Design Secure Architectures practice questions

Design Secure Architectures is worth 30% of the SAA-C03 exam — the heaviest of the 4 domains. Secure access to AWS resources, secure workloads and applications, and the right data-security controls. 6 fully worked examples are further down this page, answers included.

Exam weight
30%
the heaviest of the 4 domains
Questions
60
across 3 topics
Free, no account
5/day
sign up free to remove the cap
Explanations
Every option
right and wrong

Build a practice session

5 free questions left today.

Domains

How many?

Mode

Ready when you are

10 fresh questions drawn across 1 of 4 domains, in Learn mode.

Focused review

Every question you answer incorrectly, and every question you flag while practising, is saved here automatically. Finish a session and you can come back to re-drill just those.

6 sample Design Secure Architectures questions, fully explained

Questions from the SAA-C03 bank mapped to domain 1, with the answer key and the reasoning behind every option. None of them repeat the examples on the main SAA-C03 practice page.

Question 1Design Secure Architectures

A security team attaches a service control policy to the root of its organization that denies all actions in AWS Regions other than eu-west-1 and eu-central-1. One month later, a review finds new EC2 instances running in us-east-1 that were launched by administrators after the SCP took effect. All of the instances are in a single account. What is the MOST likely explanation?

Choose one.

  • a
    The administrators used the account's root user, and SCPs do not apply to root users.

    SCPs do constrain the root user of member accounts; root exemption applies only in the management account.

  • b
    SCPs attached to the organization root apply only to OUs, not to accounts placed directly under the root.

    SCPs attached to the organization root inherit to every OU and every account beneath it; there is no gap for accounts directly under the root.

  • c
    Amazon EC2 is a global service that is exempt from Region-based SCP conditions.

    EC2 is a regional service; Region-restriction SCPs commonly exempt a handful of truly global services such as IAM, but EC2 is not one of them.

  • d
    The instances were launched in the organization's management account, which SCPs do not affect. Correct

    SCPs have no effect on the management account — not on its users, roles, or root user — so it is the one account a root-level Region-deny SCP cannot constrain.

The concept

SCPs apply to every member account in the organization, including member-account root users, but they have no effect whatsoever on the management account — not on its users, roles, or root user.

Why that’s the answer

Because the SCP sits at the organization root, every member account and OU inherits it, and it binds all principals in those accounts including root. The single account that can still act outside the allowed Regions is the management account, which no SCP can constrain — which is also why AWS recommends running no workloads there. The member-root option inverts the actual rule: member-account root users are constrained by SCPs. The root-attachment option is wrong because root-level SCPs inherit down to everything. The EC2-exemption option is a distractor built on the real practice of exempting global services like IAM in Region-deny SCPs; EC2 is regional and gets no such exemption.

How to reason it out
  1. Confirm the SCP scope: attached at the organization root, it inherits to all OUs and member accounts.
  2. Recall that within member accounts, SCPs bind every principal, including administrators and root.
  3. Identify the one principal set SCPs can never touch: everything inside the management account.
  4. Match the evidence — one unaffected account launching resources post-SCP — to the management account.
  5. Note the operational lesson: keep workloads and daily activity out of the management account.

Exam tip: SCPs bind member accounts and their root users but never the management account — keep workloads out of it.

Designing Secure Access: IAM Best Practices, Roles, and AWS Organizations — the lesson that teaches this.

Question 2Design Secure Architectures

A financial services company keeps compliance logs in an S3 bucket in a dedicated audit account within its AWS organization. Regulators require a guarantee that no principal in any member account — including member-account root users — can delete the bucket, and the company wants this guarantee to also cover new workloads it deploys in the future. Which combination of actions should a solutions architect take? (Select TWO.)

Choose TWO.

  • a
    Attach a service control policy with an explicit deny for s3:DeleteBucket on the audit bucket to the organizational units that contain the member accounts. Correct

    An SCP explicit deny inherits to every account in the OUs and binds all principals there, including administrators and member-account root users, and cannot be removed from inside those accounts.

  • b
    Attach an IAM policy with an explicit deny for s3:DeleteBucket to the root user of each member account.

    Root users are not governed by IAM identity-based policies; you cannot attach IAM policies to root, so this control is impossible to implement.

  • c
    Run all current and future workloads in member accounts rather than in the organization's management account. Correct

    SCPs have no effect on the management account, so any workload or principal there would sit outside the guardrail; keeping workloads in member accounts keeps them all inside SCP enforcement.

  • d
    Attach the same service control policy to the management account so that its principals are equally restricted.

    SCPs have no effect on the management account regardless of where they are attached, so this adds no protection.

  • e
    Apply a permissions boundary that denies s3:DeleteBucket to the root user of each member account.

    Permissions boundaries attach only to IAM users and roles; they cannot be applied to root users at all.

The concept

Only SCPs can constrain member-account root users, and no control of any kind constrains the management account. A guardrail design must therefore combine an SCP with the discipline of keeping workloads out of the management account.

Why that’s the answer

The SCP explicit deny on the member-account OUs is the only mechanism that reaches every principal in those accounts, root included, and it is enforced from above the accounts so no insider can lift it. Keeping workloads in member accounts is the necessary second half: the management account is immune to SCPs, so any future workload placed there would escape the guarantee — the requirement explicitly covers future workloads. The IAM-policy-on-root and boundary-on-root options fail on the same precise fact: root users are not IAM identities and accept neither identity policies nor permissions boundaries. Attaching the SCP to the management account is a no-op because SCPs simply never evaluate against management-account principals.

How to reason it out
  1. Translate the requirement: a preventive restriction binding all member-account principals, including root, now and for future workloads.
  2. Select the only layer that constrains member root users: an SCP with an explicit deny, attached to the relevant OUs.
  3. Recall the SCP blind spot: the management account is never affected, so workloads must not live there.
  4. Eliminate options that attach IAM policies or boundaries to root, since root accepts neither.
  5. Eliminate attaching the SCP to the management account, which has no effect by design.

Exam tip: Guardrails that must bind root are SCPs on member accounts — and because SCPs never reach the management account, workloads must stay out of it.

Designing Secure Access: IAM Best Practices, Roles, and AWS Organizations — the lesson that teaches this.

Question 3Design Secure Architectures

An application running on Amazon EC2 instances reads and writes objects in an S3 bucket. A security review finds an IAM user's access key and secret key stored in a configuration file on each instance. What is the MOST secure way for the application to access the bucket?

Choose one.

  • a
    Attach an IAM role to the instances through an instance profile and grant the role least-privilege access to the bucket. Correct

    The application obtains automatically rotated temporary credentials from the instance metadata service, so there are no long-lived keys to store, leak, or rotate.

  • b
    Rotate the IAM user's access keys every 30 days and update the configuration file automatically.

    Rotation shortens the exposure window but the credentials remain long-lived and stored on disk; leaked keys are still valid until the next rotation.

  • c
    Store the access keys in AWS Secrets Manager and have the application fetch them at startup.

    This changes where the long-lived keys are stored, not the fact that they exist; the application still authenticates with static credentials that can leak and must be rotated.

  • d
    Encrypt the configuration file containing the access keys with AWS KMS.

    Encryption at rest does not help once the application decrypts the file to use the keys; the credentials are still long-lived and present on the instance.

The concept

Anything running on AWS compute should use an IAM role rather than access keys. Roles deliver temporary STS credentials that rotate automatically and never need to be stored in code or configuration.

Why that’s the answer

The instance profile role eliminates the credential problem instead of managing it: the instance retrieves short-lived credentials from the metadata service, they expire automatically, and revocation is as simple as detaching the role. Rotating keys every 30 days still leaves a 30-day validity window for any leaked key and keeps secrets on disk. Moving the keys into Secrets Manager is a common trap — it secures storage of the keys but the keys themselves remain long-lived static credentials, and the application still needs some credential to call Secrets Manager in the first place, which is exactly what a role provides. KMS-encrypting the file protects it at rest only; at runtime the plaintext keys are back in play.

How to reason it out
  1. Spot the anti-pattern in the stem: long-lived access keys stored on compute.
  2. Prefer options that eliminate static credentials over options that store or rotate them better.
  3. Attach an IAM role via an instance profile so the app gets temporary STS credentials from instance metadata.
  4. Scope the role's policy to the specific bucket and actions for least privilege.
  5. Delete the IAM user's access keys so the old path is fully closed.

Exam tip: For AWS API access from EC2, an instance role that removes the keys always beats any scheme that stores or rotates them.

Designing Secure Access: IAM Best Practices, Roles, and AWS Organizations — the lesson that teaches this.

Question 4Design Secure Architectures

A developer is deploying an AWS Lambda function that must read and write items in a DynamoDB table. The developer proposes creating an IAM user, generating access keys, and storing them in the function's environment variables encrypted with AWS KMS. Which alternative meets the requirement with the LEAST operational overhead?

Choose one.

  • a
    Store the IAM user's access keys in AWS Secrets Manager and retrieve them at function initialization.

    This keeps long-lived keys alive and adds retrieval code, Secrets Manager cost, and a rotation process — all overhead the execution role makes unnecessary.

  • b
    Keep the encrypted environment variables and add a scheduled process that rotates the access keys monthly.

    Rotation machinery is ongoing operational work and redeployment risk, and the credentials remain long-lived between rotations.

  • c
    Grant the required DynamoDB permissions to the function's execution role. Correct

    Lambda already injects temporary credentials for the execution role into every invocation, so the function needs no stored keys, no rotation, and no extra code.

  • d
    Have the function call sts:AssumeRole at startup using the stored access keys to obtain temporary credentials.

    This still depends on stored long-lived keys to bootstrap the assume call and adds an unnecessary hop; the execution role already provides temporary credentials natively.

The concept

Every Lambda function runs with an execution role whose temporary credentials AWS supplies automatically. Granting permissions to that role is the native, zero-maintenance way for function code to access AWS services.

Why that’s the answer

The execution role wins on both security and overhead: the SDK picks up temporary credentials automatically, they rotate without any action, and there is nothing to store, encrypt, retrieve, or leak. Secrets Manager storage secures the wrong thing — the static keys still exist and now carry retrieval code and monthly cost. Scheduled rotation is exactly the recurring operational burden the question asks to avoid, and keys are still exposed between rotations. The assume-role-from-stored-keys option is circular: it uses long-lived credentials to obtain temporary ones, when the platform already hands the function temporary credentials for free.

How to reason it out
  1. Recognize the actor: code running on AWS compute (Lambda), which always has a native role mechanism.
  2. Apply the rule that compute gets roles, never IAM users with access keys.
  3. Attach a least-privilege DynamoDB policy to the function's execution role.
  4. Remove the proposed IAM user and its keys so no static credential path remains.
  5. Compare overhead: the role needs zero ongoing maintenance; every other option adds storage, code, or rotation work.

Exam tip: Lambda code gets its AWS access from the execution role — any design that mints access keys for a function is wrong before you weigh the details.

Designing Secure Access: IAM Best Practices, Roles, and AWS Organizations — the lesson that teaches this.

Question 5Design Secure Architectures

During an audit, a company discovers that nightly automation scripts on a fleet of EC2 instances call AWS APIs using a single IAM user's access keys. The keys are shared across three teams, are stored in a script directory on each instance, and have not been rotated in over a year. What should a solutions architect recommend as the MOST secure remediation?

Choose one.

  • a
    Delete the IAM user's access keys and attach an instance profile role with a least-privilege policy to the instances. Correct

    The scripts then use automatically rotated temporary credentials from the instance metadata service, eliminating shared, stored, stale keys entirely.

  • b
    Create separate IAM users for each team and enforce access key rotation every 90 days.

    Per-team keys improve attribution but multiply the number of long-lived credentials sitting on instances; rotation manages the risk rather than removing it.

  • c
    Move the access keys into AWS Systems Manager Parameter Store as SecureString parameters and update the scripts to fetch them.

    The keys remain long-lived and shared; encrypting their storage does not remove the credential-leakage and rotation problem, and the instances still need permissions to fetch them.

  • d
    Enable multi-factor authentication on the IAM user that owns the access keys.

    MFA protects interactive sign-in; unattended scripts authenticating with access keys are not challenged for MFA, so the exposure is unchanged.

The concept

Long-lived access keys on compute are a credential liability that roles eliminate. An instance profile delivers temporary, auto-rotated STS credentials to everything running on the instance.

Why that’s the answer

Deleting the keys and attaching an instance role removes every problem the audit found at once: no shared secret, nothing stored on disk, no rotation schedule to miss, and CloudTrail attributes calls to the role session. Splitting keys per team keeps the fundamental flaw — static credentials on instances — and adds more keys to manage. Parameter Store SecureString is secure storage for the wrong object: the credentials are still long-lived, still shared by whatever reads the parameter, and the fix ignores that the instance can hold a role instead. MFA on the IAM user is irrelevant to programmatic key use by unattended scripts, which never present an MFA token.

How to reason it out
  1. List the audit findings: shared keys, stored on disk, never rotated — all properties of long-lived credentials.
  2. Ask whether the workload can use a role; EC2 instances always can, via an instance profile.
  3. Attach a least-privilege role to the fleet and update scripts to rely on the default credential chain.
  4. Delete the IAM user's access keys to close the old path.
  5. Reject options that relocate, split, or rotate the keys — they manage the liability instead of removing it.

Exam tip: The fix for keys on EC2 is never better key hygiene — it is deleting the keys and using an instance role.

Designing Secure Access: IAM Best Practices, Roles, and AWS Organizations — the lesson that teaches this.

Question 6Design Secure Architectures

A Lambda function in account A must read messages from an Amazon SQS queue in account B and, within the same invocation, write the processed results to a DynamoDB table in account A. The security team requires a design with no long-lived credentials and the fewest moving parts. What should a solutions architect recommend?

Choose one.

  • a
    Have the function assume a cross-account IAM role in account B for the duration of each invocation and perform all work with that role's credentials.

    Assuming the role replaces the function's own permissions, so while operating as the account B role it loses its DynamoDB access in account A and must juggle two credential sets within one invocation.

  • b
    Create an IAM user in account B with SQS permissions and store its access keys in AWS Secrets Manager for the function to retrieve.

    This introduces exactly the long-lived credentials the security team prohibited, plus retrieval code and a rotation obligation.

  • c
    Deploy a second Lambda function in account B that reads the queue and forwards each message to the function in account A.

    A forwarding function works but doubles the compute, adds a cross-account invocation path to secure, and is far from the fewest moving parts.

  • d
    Attach a resource-based policy to the SQS queue in account B that grants the function's execution role permission to receive and delete messages, and keep the DynamoDB permissions on the execution role. Correct

    The function keeps its single identity: the queue policy adds cross-account access on top of the execution role's own permissions, so one credential set covers both sides of the job.

The concept

Assuming a role temporarily replaces your permissions with the role's; a resource-based policy instead grants access while you keep your own identity and permissions. When a caller needs its home-account access and a remote resource in the same flow, the resource-based policy is the clean answer.

Why that’s the answer

The queue policy in account B lets the execution role reach across while remaining itself, so the same invocation reads SQS in B and writes DynamoDB in A with one set of temporary credentials — no key material, no credential switching. The assume-role option fails the scenario's defining nuance: as the account B role, the function is a different principal and no longer holds its account A DynamoDB permissions, forcing awkward mid-invocation credential management. The IAM-user option violates the no-long-lived-credentials requirement outright. The forwarding function is a workable but heavier architecture — extra function, extra permissions surface, extra failure mode — losing on the fewest-moving-parts qualifier.

How to reason it out
  1. Note the dual requirement: access a resource in account B and resources in account A within one invocation.
  2. Recall that assuming a role swaps identities, which would drop the function's home-account permissions mid-flow.
  3. Check that the target service supports resource-based policies; SQS queue policies do.
  4. Grant the execution role the needed queue actions via the queue policy in account B, and grant the SQS API actions plus DynamoDB access in the role's own identity policy.
  5. Verify no long-lived credentials exist anywhere in the design.

Exam tip: When a cross-account caller must keep its own permissions, grant access with a resource-based policy — assuming a role would replace them.

Designing Secure Access: IAM Best Practices, Roles, and AWS Organizations — the lesson that teaches this.

What SAA-C03 domain 1 tests, topic by topic

The official exam guide breaks Design Secure Architectures into 3 topics. The question bank follows the same split, so a weak topic shows up as a cluster of misses you can go back and read.

Published SAA-C03 practice questions per topic in Design Secure Architectures
TopicWhat it coversQuestions
Design secure access to AWS resourcesExam guide task 1.1. Multi-account access control with AWS Organizations, Control Tower, and SCPs; federated and role-based access (IAM, IAM Identity Center, STS, role switching, cross-account roles); least privilege, root-user hardening and MFA, resource policies, directory federation, and the shared responsibility model.20
Design secure workloads and applicationsExam guide task 1.2. VPC security architecture: security groups, network ACLs, route tables, NAT gateways, and public/private subnet segmentation; application-security services (Cognito, GuardDuty, Macie, Shield, WAF, Secrets Manager); securing external connections (VPN, Direct Connect); external threat vectors (DDoS, SQL injection); service endpoints and credential security.20
Determine appropriate data security controlsExam guide task 1.3. Encryption at rest with AWS KMS and in transit with ACM/TLS; key access policies, key rotation, and certificate renewal; data access and governance, classification, retention, and recovery; backups, replication, and data lifecycle/protection policies that meet compliance requirements.20
Total60

Revise Design Secure Architectures before you drill it

Other SAA-C03 domains

Design Secure Architectures: your questions

Design Secure Architectures is domain 1 of the SAA-C03 exam guide and carries 30% of the scored content — the heaviest of the 4 domains. On a 65-question paper that works out to roughly 20 questions, though AWS does not publish an exact per-domain count and individual exam forms vary.

Source

The domain weight and topic list on this page come from the official SAA-C03 exam guide.