VPC security is where the SAA-C03 tests whether you can reason about a network boundary, not just recite service names. The scenarios reward a handful of clean distinctions — stateful versus stateless, public versus private, and the three ways a private instance talks to the outside world.
The two firewalls: security group vs NACL
Every VPC-security question leans on this line. A security group is stateful and allow-only, wrapping a resource; if a request is allowed in, its response is allowed out automatically. A network ACL is stateless and can deny, guarding a subnet; each direction is evaluated on its own, so responses need an explicit outbound rule on ephemeral ports.
Two reflexes follow. When a scenario needs to block a specific address, only the NACL can express a deny. When it asks about return traffic, the security group handles it for you and the NACL does not. Reverse those two and you have written the exam’s favourite distractor.
Reference the group, not the IP
When the source of allowed traffic is another AWS resource whose addresses change — an ALB, another tier — the durable answer is to set the security group’s source to that resource’s security group, not a CIDR block. It stays correct as addresses churn, and it says exactly what you mean: “traffic from the load balancer”, not “traffic from a list of IPs I have to maintain”.
Public, private, and the road out
Keep anything that must not be internet-facing in a private subnet with no route to an internet gateway — that is what makes it unreachable, more absolutely than any firewall rule. From there, a private instance reaches the outside world in one of two ways, and the exam wants the right one:
- Outbound to the internet (patches, third-party APIs) but never inbound → a NAT gateway in a public subnet.
- To an AWS service like S3 or DynamoDB without touching the internet at all → a VPC endpoint (a gateway endpoint for S3 and DynamoDB), which keeps the traffic on AWS’s private network and, for gateway endpoints, costs nothing.
The trap is offering NAT where the requirement says “must not traverse the internet” — NAT reaches S3, but over the internet. Read the constraint before choosing the road out.
Placing a database
Put it in a private subnet, give it no internet-gateway route, and make its security group source the app tier only. That is defence at two layers: the subnet cannot be reached from the internet, and the instance accepts only its intended caller. A public subnet with a tight security group is the classic wrong answer — the group may be narrow, but the database is still sitting somewhere the requirement forbids.
How to use the six scenarios below
Answer each one before opening the explanation, and when you miss, name the requirement that decided it — “block one IP”, “outbound only”, “must not traverse the internet”, “only the app tier”. Every explanation states that deciding constraint and then dismantles the distractors, most of which are real controls solving a slightly different requirement. That discrimination is the skill the exam measures. For the wider picture, 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.