在当今的云计算时代,网络是云基础设施的基石。对于任何希望在 AWS 上构建稳健、安全且可扩展应用的企业而言,掌握 Amazon Virtual Private Cloud(VPC) 是必不可少的第一步。

本文将全面介绍 Amazon VPC 的核心功能、典型应用场景,并通过一个实际的金融行业案例,演示如何使用 AWS CLI 构建一个符合合规要求的多层安全网络架构。


什么是 Amazon VPC?

Amazon VPC(Virtual Private Cloud) 是 AWS 提供的基础网络服务,允许您在 AWS 云中创建一个逻辑隔离的虚拟网络环境。在这个私有网络中,您可以完全控制 IP 地址范围、子网划分、路由策略和访问控制,就像在本地数据中心中一样灵活和安全。

简而言之,VPC 就是您在 AWS 中的“专属网络空间”,所有其他 AWS 资源(如 EC2 实例、RDS 数据库、Lambda 函数等)都必须部署在某个 VPC 内。


Amazon VPC 核心功能一览

1. 自定义网络空间

通过指定 CIDR 地址块(如 10.0.0.0/16),您可以定义 VPC 的 IP 地址范围,满足不同规模应用的需求。

2. 子网划分与可用区隔离

您可以在不同的 可用区(Availability Zones) 中创建子网,实现高可用性。子网可分为:

  • 公有子网:可通过 Internet Gateway 访问公网

  • 私有子网:与公网隔离,仅能通过 NAT Gateway 访问互联网

3. 安全控制机制

  • 安全组(Security Groups):有状态的防火墙,控制 EC2 实例级别的入站/出站流量。

  • 网络 ACL(Network Access Control List):无状态的子网级防火墙,提供额外的访问控制层。

4. 灵活的路由控制

通过 路由表(Route Tables),您可以精确控制子网中的流量走向,例如:

  • 指向 Internet Gateway 实现公网访问

  • 指向 NAT Gateway 允许私有子网访问互联网

  • 指向 VPC 对等连接或 Transit Gateway 实现跨 VPC 通信

5. 多样化的网络连接选项

连接方式

用途

Internet Gateway

VPC 与公共互联网通信

NAT Gateway

私有子网安全访问互联网

VPC Peering

两个 VPC 之间的私有连接

Transit Gateway

集中连接多个 VPC 和本地网络

Site-to-Site VPN

加密隧道连接本地数据中心

Direct Connect

专用物理线路连接,低延迟高带宽

6. 监控与运维支持

  • VPC Flow Logs:记录网络流量信息,用于安全审计和故障排查

  • VPC Endpoints:无需公网即可私密访问 S3、DynamoDB 等 AWS 服务

  • DHCP Options Set:自定义 DNS 服务器、域名等网络配置

  • Elastic IP:静态公网 IP,可动态绑定到实例


典型应用场景

Amazon VPC 适用于多种企业级场景:

应用场景

说明

多层 Web 应用

Web 层公有,应用/数据库层私有,实现纵深防御

混合云架构

通过 VPN 或 Direct Connect 连接本地数据中心

灾难恢复

跨区域部署 VPC 作为备份环境

开发测试隔离

为不同团队或环境创建独立 VPC

合规性要求

满足金融、医疗等行业对数据隔离的监管要求

微服务架构

按服务划分 VPC 或子网,降低耦合度

多租户系统

为每个客户提供独立的网络环境

动手实践:使用 AWS CLI 配置 VPC

以下是构建一个基本 VPC 架构的命令行示例(请替换实际资源 ID):

1. 创建 VPC

aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=MyVPC}]'

2. 创建公有和私有子网

# 公有子网(us-east-1a)
aws ec2 create-subnet \
  --vpc-id vpc-0123456789abcdef0 \
  --cidr-block 10.0.1.0/24 \
  --availability-zone us-east-1a \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=Public-Subnet-1}]'

# 私有子网(us-east-1b)
aws ec2 create-subnet \
  --vpc-id vpc-0123456789abcdef0 \
  --cidr-block 10.0.2.0/24 \
  --availability-zone us-east-1b \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=Private-Subnet-1}]'

3. 配置 Internet Gateway

# 创建 IGW
aws ec2 create-internet-gateway \
  --tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=MyIGW}]'

# 绑定到 VPC
aws ec2 attach-internet-gateway \
  --internet-gateway-id igw-0123456789abcdef0 \
  --vpc-id vpc-0123456789abcdef0

4. 配置公有子网路由

# 创建路由表
aws ec2 create-route-table \
  --vpc-id vpc-0123456789abcdef0 \
  --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=Public-RT}]'

# 添加默认路由到 IGW
aws ec2 create-route \
  --route-table-id rtb-0123456789abcdef0 \
  --destination-cidr-block 0.0.0.0/0 \
  --gateway-id igw-0123456789abcdef0

# 关联子网
aws ec2 associate-route-table \
  --route-table-id rtb-0123456789abcdef0 \
  --subnet-id subnet-0123456789abcdef0

5. 创建 NAT Gateway(支持私有子网访问互联网)

# 分配弹性 IP
aws ec2 allocate-address --domain vpc

# 创建 NAT Gateway(需在公有子网)
aws ec2 create-nat-gateway \
  --subnet-id subnet-0123456789abcdef0 \
  --allocation-id eipalloc-0123456789abcdef0 \
  --tag-specifications 'ResourceType=natgateway,Tags=[{Key=Name,Value=MyNATGW}]'

⚠️ 注意:NAT Gateway 创建需要时间,请等待其状态变为 available 后再配置路由。

6. 为私有子网配置 NAT 路由

aws ec2 create-route \
  --route-table-id rtb-1234567890abcdef0 \
  --destination-cidr-block 0.0.0.0/0 \
  --nat-gateway-id nat-0123456789abcdef0

7. 创建安全组(以 Web 服务器为例)

aws ec2 create-security-group \
  --group-name WebServerSG \
  --description "Allow HTTP/HTTPS" \
  --vpc-id vpc-0123456789abcdef0

aws ec2 authorize-security-group-ingress \
  --group-id sg-0123456789abcdef0 \
  --protocol tcp --port 80 --cidr 0.0.0.0/0

aws ec2 authorize-security-group-ingress \
  --group-id sg-0123456789abcdef0 \
  --protocol tcp --port 443 --cidr 0.0.0.0/0

8. 启用 VPC Flow Logs(用于监控)

# 创建日志组
aws logs create-log-group --log-group-name VPCFlowLogs

# 创建 IAM 角色和策略(略,见前文)

# 创建 Flow Logs
aws ec2 create-flow-logs \
  --resource-type VPC \
  --resource-ids vpc-0123456789abcdef0 \
  --traffic-type ALL \
  --log-destination-type cloud-watch-logs \
  --log-destination "arn:aws:logs:us-east-1:123456789012:log-group:VPCFlowLogs" \
  --deliver-logs-permission-arn "arn:aws:iam::123456789012:role/VPCFlowLogsRole"

实际案例:金融服务公司多层安全架构

🎯 场景需求

一家银行需在 AWS 上部署核心银行系统,要求:

  • 符合金融行业合规标准(如 PCI DSS)

  • 高可用性,跨可用区部署

  • 严格的网络隔离与访问控制

  • 支持混合云连接

🏗️ 解决方案架构

[公网用户]
    ↓ HTTPS
[Application Load Balancer] ← AWS WAF + Shield
    ↓
[Web 层 EC2](公有子网) 
    ↓
[应用层 EC2](私有子网)
    ↓
[RDS 主从数据库](私有子网,仅内网访问)
    ↑
[管理子网] ← 堡垒主机 + 监控服务器
    ↓
[VPC Flow Logs + CloudTrail + GuardDuty] → 安全审计
    ↓
[Site-to-Site VPN / Direct Connect] ↔ 本地数据中心

🔐 安全设计亮点

  • 纵深防御:安全组 + 网络 ACL 双重防护

  • 最小权限原则:仅开放必要端口

  • 私有服务访问:通过 VPC Endpoint 访问 S3/DynamoDB,避免公网暴露

  • 集中监控:启用 Flow Logs、CloudTrail、Config 实现全面可观测性

  • 混合连接:通过 Direct Connect 实现低延迟、高安全的本地连接


最佳实践建议

  1. CIDR 规划:预留足够 IP 空间,避免后期扩展困难

  2. 高可用设计:关键组件跨可用区部署

  3. 最小权限:安全组默认拒绝所有,只开放必需端口

  4. 日志留存:启用 Flow Logs 并长期保存,用于审计

  5. 自动化部署:使用 Terraform 或 CloudFormation 管理 VPC 配置

  6. 定期审查:使用 AWS Config 和 IAM Access Analyzer 检查配置合规性

延伸阅读