A Virtual Private Cloud (VPC) is your own isolated section of the AWS cloud. You define its IP address range (CIDR block), create subnets, configure route tables, and control network access with security groups and NACLs.
VPC limits are generous but not infinite, and knowing the defaults avoids surprises mid-project:
The most common VPC security failure is the subnet that is public without anyone deciding it should be. "Public" is not a property you set on a subnet: it is an emergent fact of routing. Any subnet whose route table contains a 0.0.0.0/0 route to an internet gateway is public, and if the subnet also auto-assigns public IPv4 addresses, every instance launched into it is internet-reachable, protected only by its security groups. Teams reorganize route tables, associate the wrong one with a data-tier subnet, and suddenly databases sit one security group mistake away from the internet.
The default VPC compounds this. It exists in every region, is built for convenience rather than isolation, and its subnets are public by design. Workloads launched "temporarily" into the default VPC have a habit of becoming permanent. A sound baseline: treat the default VPC as unused territory, monitor it for any resource creation, and build deliberate VPCs where public subnets exist only for load balancers and NAT gateways, with compute and data tiers in private subnets reached through them.
The other recurring mistake is CIDR planning debt. Overlapping CIDR ranges between VPCs, or between a VPC and on-premises networks, block future peering and VPN routing. Address space is cheap at design time and painful to change later; allocate non-overlapping ranges from a plan, not per-project improvisation.
List the default VPC in a region, if one exists:
aws ec2 describe-vpcs --filters Name=is-default,Values=true
Run this across every region in scope. Anywhere it returns a VPC, follow up by checking whether anything is actually running there; a default VPC hosting forgotten instances is a common finding in first-time AWS security reviews. The same command with Name=cidr,Values=10.0.0.0/16 style filters helps you spot CIDR collisions across accounts before a peering or Transit Gateway project runs into them.
What exactly makes a subnet public?
A route to an internet gateway in the subnet's associated route table. Whether instances in that subnet are actually reachable then depends on whether they have public IP addresses and what their security groups allow. All three layers (routing, addressing, security groups) must line up for exposure, which is also why checking only one of them gives false comfort.
Is one big VPC better than many small ones?
For strong isolation, separate VPCs (or better, separate accounts) beat subnet-level separation inside one VPC, because a VPC boundary stops lateral movement at the routing layer rather than relying on security group discipline. The cost is more plumbing: peering, Transit Gateway, or PrivateLink for the traffic that legitimately crosses boundaries. Most mature AWS environments land on multiple VPCs across multiple accounts, connected through a Transit Gateway with segmented route tables.
Does a VPC encrypt my traffic?
No. A VPC provides isolation and routing control, not encryption. Traffic inside a VPC is isolated from other tenants, but encryption in transit remains your job, through TLS at the application layer or the encryption features of the services you use. Treat "it is internal traffic" as a routing statement, never as a security control.
A virtual firewall for EC2 instances and other resources that controls inbound and outbound traffic at the instance level using allow rules.
A stateless firewall at the subnet level that controls inbound and outbound traffic using numbered allow and deny rules.
Dividing a network into isolated segments (subnets, VPCs) to limit lateral movement and contain the blast radius of a security breach.
A private connection between your VPC and an AWS service that keeps traffic within the AWS network, eliminating the need for internet access.
Toc Consulting: AWS Security & Cloud Architecture
Our team helps engineering teams secure and architect AWS the right way: assessment in week one, a prioritized action plan in week two.