SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
SCS-C03 practice

Free SCS-C03 practice questions

Drill exam-realistic AWS Certified Security – Specialty questions by domain, with an explanation on every option — not just the right one. 5 fully worked examples are further down this page, answers included.

Question bank
629
across 6 domains
Free, no account
5/day
a free account allows 30 a day
Real exam
65 Qs
170 min · pass 750 / 1000
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 all 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.

5 sample SCS-C03 questions, fully explained

Real questions from the SCS-C03 bank, with the answer key and the reasoning behind every option. Read them, then go back up the page and try the rest.

Question 1Detection

A security tooling account is the AWS Security Hub CSPM delegated administrator for 120 accounts in four Regions. Production OUs must run the AWS Foundational Security Best Practices and CIS standards; the sandbox OU must run only the foundational standard with several controls turned off. An account that moves between OUs must pick up its new settings with no per-account work. What should the team do?

Choose one.

  • a
    Switch to central configuration and, from the home Region, associate a separate configuration policy with each OU. Correct

    Central configuration lets the delegated administrator create configuration policies in the home Region and associate them with OUs; an account inherits the policy of the OU it sits in, so a move between OUs changes its settings with no per-account work, across the home and linked Regions.

  • b
    Keep local configuration and, in each Region, turn on auto-enable of the default standards for new member accounts.

    Local configuration auto-enable only applies the default standards to new accounts in the current Region; it cannot vary standards or controls by OU and does nothing for existing accounts that move.

  • c
    Switch to central configuration and, from the management account, associate a separate configuration policy with each OU.

    Configuration policies are created and associated only by the Security Hub CSPM delegated administrator in its home Region, not by the Organizations management account.

  • d
    Keep local configuration and deploy the standards to each OU with a CloudFormation StackSet from the tooling account.

    StackSets push per-account resources that each account still owns and can change; the accounts stay self-managed, so drift is possible and the setup is far heavier than policy inheritance.

The concept

In Security Hub CSPM, central configuration lets the delegated administrator define configuration policies (service on/off, standards, controls, control parameters) in the home Region and associate them with the root, OUs or accounts; policies take effect in the home Region and all linked Regions, and accounts inherit the policy of their closest parent.

Why that’s the answer

Different settings per OU, applied automatically when accounts move, is exactly what configuration policy inheritance provides. Local configuration can only auto-enable the default standards for new accounts in one Region, so it can neither tailor the sandbox OU nor follow OU moves. The management account cannot author configuration policies; only the delegated administrator can, from the home Region. StackSets can deploy standards, but the accounts remain self-managed and each holds its own copy of the settings. Central configuration also requires cross-Region aggregation with the home Region set first, which is why the policies are authored there.

How to reason it out
  1. Note the requirement: different standards and controls per OU, following accounts that move.
  2. Recall that only configuration policies, created by the delegated administrator in the home Region, are associated with OUs and inherited.
  3. Rule out local configuration: it affects only new accounts in the current Region with the default standards.
  4. Rule out the management account as the author: central configuration APIs belong to the delegated administrator.

Exam tip: Per-OU Security Hub CSPM settings that follow account moves = central configuration policies, authored by the delegated administrator in the home Region.

Designing Security Monitoring and Alerting Across an AWS Organization — the lesson that teaches this.

Question 2Incident Response

A company runs 40 accounts in AWS Organizations. In the last incident, responders waited three hours while an administrator wrote IAM permissions in the affected account. Responders work from a security tooling account and must now be able to investigate and contain in a member account within minutes, with no long-term credentials and no standing administrator rights. What should the security team do?

Choose one.

  • a
    Use a StackSet to deploy a role with investigation and containment permissions to each account, trusting the security tooling account. Correct

    Correct. The role exists before the incident, so responders assume it in minutes; it carries only investigation reads and targeted containment actions; it issues temporary credentials; and each AssumeRole call is recorded in CloudTrail, so every responder action is attributable.

  • b
    Use a StackSet to deploy a role with the AdministratorAccess policy to each account, trusting the security tooling account.

    Fast and cross-account, but it is standing administrator access in every account: whoever compromises a responder identity can do anything anywhere. The requirement rules out standing administrator rights.

  • c
    Use a StackSet to create an IAM user per responder in each account, with investigation and containment permissions attached.

    Pre-provisioned and scoped, but IAM users authenticate with passwords or long-term access keys, and 40 copies of every responder identity multiply the credentials an attacker can steal. The requirement rules out long-term credentials.

  • d
    Create an IAM Identity Center permission set that an administrator assigns to responders for the affected account when an incident opens.

    Identity Center gives temporary credentials, but the assignment is made by an administrator after the incident opens, which is the delay the team is trying to remove. The permission set would need to be assigned in advance.

The concept

Responder access is a preparation control: a least-privilege incident response role in every account, deployed as code (for example with CloudFormation StackSets) and assumable from a central security tooling account.

Why that’s the answer

The deciding facts are timing and scope. Access that is created during the incident (an administrator assigning a permission set) repeats the three-hour delay. Access that is ready but over-broad (AdministratorAccess) turns one compromised responder into an organization-wide compromise. IAM users are ready and can be scoped, but they bring long-term credentials. The pre-deployed scoped role satisfies all three constraints and leaves a CloudTrail record of each assumption.

How to reason it out
  1. List the constraints: minutes to access, no long-term credentials, no standing administrator rights.
  2. Reject any design that grants access after the incident opens.
  3. Reject designs that use IAM users (long-term credentials) or AdministratorAccess (standing admin).
  4. Choose a pre-deployed role with investigation reads plus targeted containment actions, trusted by the security tooling account.

Exam tip: Provision responder roles before the incident: least privilege, deployed to every account, assumed cross-account with temporary credentials.

Design and Test an AWS Incident Response Plan (SCS-C03) — the lesson that teaches this.

Question 3Infrastructure Security

A company exposes a public HTTPS API through an internet-facing Network Load Balancer whose TLS listeners forward to EC2 instances. An OWASP Top 10 assessment requires AWS WAF managed rules to inspect every request. The platform team will not change the load balancer type or its targets this quarter. What should the security engineer do?

Choose one.

  • a
    Create a Regional web ACL with the Core rule set and associate it with the Network Load Balancer.

    AWS WAF does not support Network Load Balancers as an associated resource, Regional scope or not. An NLB works at layer 4 and offers WAF no HTTP request to inspect.

  • b
    Replace the NLB with an Application Load Balancer and associate a Regional web ACL with the new ALB.

    An ALB is a supported WAF resource and this would work technically, but it changes the load balancer type, which the platform team has ruled out for this quarter.

  • c
    Subscribe to Shield Advanced for the NLB Elastic IPs and turn on automatic application layer mitigation.

    Elastic IP protections get network and transport layer mitigation, not OWASP request inspection. Automatic application layer mitigation applies only to CloudFront and ALB protections through a web ACL, and it is now legacy: Since 26 March 2026 the AWS WAF Anti-DDoS managed rule group is the default HTTP flood protection and supersedes this legacy Shield Advanced feature (new Shield Advanced customers must ask AWS Support for it).

  • d
    Put a CloudFront distribution in front of the NLB and associate a global web ACL with the distribution. Correct

    CloudFront is a supported WAF insertion point and can use the NLB as its custom origin, so a CloudFront-scope web ACL inspects every HTTP request before it reaches the unchanged NLB and instances.

The concept

AWS WAF associates with CloudFront distributions, Application Load Balancers, API Gateway REST API stages, AppSync GraphQL APIs, Cognito user pools, App Runner services, Verified Access instances and Amplify apps. It cannot be associated with a Network Load Balancer or an EC2 instance.

Why that’s the answer

The NLB is not a WAF resource, so the workload needs a supported layer 7 insertion point in front of it. A CloudFront distribution with the NLB as its origin provides one without touching the load balancer or targets, and its web ACL must be created in the CloudFront (global) scope in us-east-1. Swapping the NLB for an ALB is the tempting near-twin: it works, but it breaks the stated constraint. A Regional web ACL cannot be associated with an NLB at all. Shield Advanced automatic application layer mitigation exists only for CloudFront and ALB protections, relies on a web ACL and has been superseded by the Anti-DDoS managed rule group since March 2026, so it adds nothing for NLB Elastic IPs.

How to reason it out
  1. Check whether the resource in the path is a supported WAF association target; an NLB is not.
  2. Apply the constraint: the load balancer type and targets must stay, which rules out moving to an ALB.
  3. Add a supported insertion point in front of the NLB: a CloudFront distribution using the NLB as a custom origin.
  4. Create the web ACL in the CloudFront (global) scope in us-east-1 with the managed rule groups and associate it with the distribution.

Exam tip: No WAF on an NLB or instance: add a supported insertion point such as CloudFront in front of it, or change the load balancer to an ALB if that is allowed.

Edge Security on AWS: WAF, Shield, and CloudFront as Controls — the lesson that teaches this.

Question 4Identity and Access Management

A security engineer enforces MFA with an identity policy statement that denies all actions under the condition "Bool": { "aws:MultiFactorAuthPresent": "false" }. Console users who have not enrolled a device are blocked as intended, but a nightly job that signs requests with an IAM user's long-term access keys still calls every API without error. What is the cause, and what change closes the gap?

Choose one.

  • a
    The key is present and true for access-key requests; keep Bool but compare it against "true" in the deny.

    Long-term access-key requests do not carry the key at all, so it is not "present and true". Comparing against "true" would deny every MFA-authenticated session instead of the access-key traffic.

  • b
    The key is missing from access-key requests, so Bool never matches; switch the deny to BoolIfExists. Correct

    aws:MultiFactorAuthPresent is added to the request context only for temporary credentials. With the key absent, a plain Bool condition cannot match and the deny is skipped. BoolIfExists treats a missing key as a match, so the deny now also applies to access-key callers.

  • c
    The key is missing from access-key requests; add a Null condition on the key with the value "false".

    Null with "false" matches only when the key is present, so it still skips access-key requests where the key is absent. Null with "true" would target them; "false" inverts the intent.

  • d
    The key covers console sign-in alone; test aws:MultiFactorAuthAge with NumericGreaterThan in the deny.

    aws:MultiFactorAuthAge is also absent from long-term access-key requests, so a numeric condition on it does not match them either. It limits how long ago MFA happened for sessions that have MFA.

The concept

aws:MultiFactorAuthPresent is in the request context only when the call uses temporary credentials. Requests signed with long-term access keys omit it, and a condition operator without IfExists does not match a missing key.

Why that’s the answer

The symptom is a deny that blocks console users (key present, value false) but not access keys (key absent). A plain Bool comparison needs the key to exist, so access-key traffic slips through. BoolIfExists evaluates to true when the key is missing, extending the deny to callers that cannot carry MFA. Comparing against "true" flips the policy onto MFA users; a Null condition with "false" is the opposite test (key present); aws:MultiFactorAuthAge is absent in exactly the same requests.

How to reason it out
  1. Note which callers are blocked (console sessions) and which are not (long-term access keys).
  2. Recall that aws:MultiFactorAuthPresent is only populated for temporary credentials.
  3. Recall that a condition on a missing key does not match unless the operator uses IfExists (or a Null test for "true").
  4. Choose BoolIfExists so the deny treats an absent key as "no MFA".

Exam tip: An MFA deny must use BoolIfExists on aws:MultiFactorAuthPresent; plain Bool silently exempts long-term access keys.

AWS Authentication Strategies: MFA, STS, and Federation — the lesson that teaches this.

Question 5Data Protection

Auditors require that no object in an S3 bucket can be read or written over plain HTTP, regardless of what identity-based policies grant the caller. A security engineer will add one statement to the bucket policy with Principal "*", Action "s3:*", and the bucket and object ARNs as resources. Which Effect and Condition meet the requirement?

Choose one.

  • a
    "Effect": "Deny" with "Condition": {"NumericLessThan": {"s3:TlsVersion": "1.2"}}

    Plain HTTP requests carry no TLS version, so the s3:TlsVersion key is absent from the request context. A condition operator without IfExists does not match a missing key, so the deny never applies to HTTP and plaintext access stays open. This statement is a useful addition for raising the minimum version, not a replacement for the transport check.

  • b
    "Effect": "Allow" with "Condition": {"Bool": {"aws:SecureTransport": "true"}}

    An Allow only adds permission. Callers whose identity policies already allow S3 actions can still use HTTP, because nothing denies them. Enforcement that overrides other policies needs an explicit Deny.

  • c
    "Effect": "Deny" with "Condition": {"Bool": {"aws:SecureTransport": "false"}} Correct

    aws:SecureTransport is false for a request sent over HTTP, so this statement denies every plaintext request. An explicit deny overrides any allow in identity or bucket policies, which meets "regardless of what identity-based policies grant".

  • d
    "Effect": "Allow" with "Condition": {"NumericGreaterThanEquals": {"s3:TlsVersion": "1.2"}}

    An Allow only adds permission for TLS 1.2+ requests. It denies nothing, so a caller whose identity policy already allows S3 actions can still read and write over plain HTTP.

The concept

S3 enforces encrypted transport through a bucket policy that explicitly denies requests where aws:SecureTransport is false. An explicit deny overrides every allow, so the control holds whatever the caller's IAM permissions are.

Why that’s the answer

For an HTTP request, aws:SecureTransport evaluates to false, so a Deny conditioned on that value blocks all plaintext access and wins over any allow. Both Allow statements fail for the same reason: allows elsewhere still grant HTTP access, and an Allow cannot take that away. The s3:TlsVersion deny is the subtle trap: the key exists only for TLS requests, so on an HTTP request it is missing, the NumericLessThan condition does not match, and the deny is skipped. Use s3:TlsVersion in addition to the SecureTransport deny when a minimum version is also required.

How to reason it out
  1. The requirement must hold regardless of other policies, so the statement must be an explicit Deny.
  2. For HTTP requests, aws:SecureTransport is false, so the Deny must match the value "false".
  3. Check what each condition key looks like on a plaintext request: s3:TlsVersion is absent, so a condition on it alone does not match.
  4. Choose the Deny on aws:SecureTransport false; add a version deny only as a second statement.

Exam tip: Enforce TLS on S3 with Deny + aws:SecureTransport false; s3:TlsVersion only raises the version for requests that already use TLS.

Data in Transit on AWS: TLS, ACM, and End-to-End Encryption Design — the lesson that teaches this.

The SCS-C03 question bank, by domain

The bank is built to the exam's own weighting, so the practice you get reflects the marks that are actually on offer — not whichever domain was easiest to write questions for.

Published SCS-C03 practice questions per exam domain
DomainExam weightTopicsQuestions
Detection16%397
Incident Response14%288
Infrastructure Security18%3114
Identity and Access Management20%2128
Data Protection18%3112
Security Foundations and Governance14%390
Total100%16629

Practise SCS-C03 one domain at a time

How SCS-C03 questions are worded

Most SCS-C03 questions are not asking whether you can recall a definition. They describe a situation and ask which option satisfies it — so the skill being tested is reading the requirement precisely and eliminating options that fail it.

Single-response vs multiple-response

A single-response question has exactly one right answer. A multiple-response question tells you how many to pick ("Choose TWO") and there is no partial credit — getting one of the two right scores nothing. Read that instruction before you read the options.

Read the last line first

The final sentence is the actual question; everything before it is scenario. Read it first, then read the scenario knowing what you are looking for. It stops you from building an answer in your head that the question never asked for.

Hunt for the qualifier

Most scenarios turn on one word — MOST cost-effective, LEAST operational overhead, with the LEAST latency, without changing application code. Two options are frequently both technically correct, and the qualifier is the only thing separating them.

Eliminate, then choose

Distractors are almost always real AWS services doing a real job — just not this job. Rule out the ones that break a stated constraint before you compare what's left. On a question you truly don't know, eliminating two options turns a guess into a coin flip.

Practise SCS-C03 from your browser

The SaveMyCert Chrome extension opens a daily drill of 5 SCS-C03 questions in the side panel, with the full explanation behind every answer. No account needed.

Get the Chrome extension (opens in a new tab)

Beyond SCS-C03 practice

SCS-C03 practice questions: your questions

Yes. You can answer 5 questions a day with no account at all, and a free account raises that to 30 a day across the full 629-question SCS-C03 bank, with an explanation on every option. Pro removes the daily cap entirely.

Source

Exam structure, domain weights and scoring on this page come from the official SCS-C03 exam guide.