aws-doc/课程/第三阶段-安全与身份/第24天-VPC安全进阶.md
2026-05-08 10:24:39 +08:00

7.0 KiB
Raw Blame History

第24天VPC 安全进阶——网络层面的防护

今天你将学到什么

第 14 天我们学了 VPC 的基础概念。今天深入学习 VPC 的安全功能:网络 ACL访问控制列表、VPC Flow Logs流量日志、VPC Endpoint私有连接。这些是在网络层面保护你资源的重要工具。


安全组 vs 网络 ACL

第 14 天学过安全组Security Group今天加上网络 ACLNetwork ACL看看它们的区别。

类比理解

想象你住在一个小区里:

  • 网络 ACL = 小区大门的保安。检查每一个进出小区的人,按照名单放行或拦截。
  • 安全组 = 你家的门锁。只有你允许的人才能进你家。

两道防线,层层保护。

详细对比

特性 安全组 网络 ACL
作用范围 实例级别(绑定到 EC2 子网级别(整个子网的流量)
规则类型 只有允许规则 有允许和拒绝规则
状态 有状态(允许进就自动允许出) 无状态(进和出要分别设置)
规则评估 所有规则一起评估 按编号顺序评估,匹配即停止
默认行为 拒绝所有入站,允许所有出站 默认 ACL 允许所有流量

"有状态"和"无状态"是什么意思?

安全组(有状态)

  • 你允许了外部访问 80 端口(入站规则)
  • 服务器的响应会自动被允许出去(不需要额外设置出站规则)
  • 就像你邀请朋友来家里,他走的时候不需要再开一次门

网络 ACL无状态

  • 你允许了外部访问 80 端口(入站规则)
  • 还必须单独设置出站规则,允许响应流量出去
  • 就像小区保安,进来要查一次证件,出去还要再查一次

网络 ACL 规则示例

入站规则:
规则# | 类型    | 端口  | 来源        | 允许/拒绝
100   | HTTP   | 80   | 0.0.0.0/0  | 允许
110   | HTTPS  | 443  | 0.0.0.0/0  | 允许
120   | SSH    | 22   | 10.0.0.0/16| 允许
200   | 所有    | 所有  | 1.2.3.4/32 | 拒绝封禁恶意IP
*     | 所有    | 所有  | 0.0.0.0/0  | 拒绝(默认拒绝)

规则按编号从小到大评估。规则 200 会拒绝来自 1.2.3.4 的所有流量,即使规则 100 允许了 HTTP。


VPC Flow Logs——网络流量的"监控录像"

是什么

VPC Flow Logs 记录 VPC 中网络接口的流量信息。它不记录流量内容(不是抓包),而是记录"谁和谁通信了、用什么端口、多少数据、是否被允许"。

类比:如果 CloudTrail 是记录"谁做了什么操作",那 Flow Logs 就是记录"谁和谁通了电话、打了多久"。不记录通话内容,但记录通话记录。

记录什么信息

每条 Flow Log 记录包含:

字段 含义 举例
源 IP 流量从哪来 203.0.113.50
目标 IP 流量去哪里 10.0.1.25
源端口 发送方端口 49152
目标端口 接收方端口 443
协议 TCP/UDP/ICMP TCP (6)
数据包数 传了多少包 15
字节数 传了多少数据 3500
动作 被允许还是拒绝 ACCEPT / REJECT

能用来做什么

安全分析

  • 发现异常流量模式(某台服务器突然向外发送大量数据——可能是数据泄露)
  • 检测端口扫描(大量来自同一 IP 的 REJECT 记录)
  • 确认安全组规则是否生效

故障排查

  • "为什么我的应用连不上数据库?"——查 Flow Logs 看流量是否被 REJECT
  • "为什么响应这么慢?"——查看是否有大量重传

合规审计

  • 证明敏感数据没有流向未授权的网络
  • 记录所有跨 VPC 的通信

在哪里开启

Flow Logs 可以在三个级别开启:

  • VPC 级别:记录整个 VPC 的所有流量
  • 子网级别:只记录某个子网的流量
  • 网络接口级别:只记录某台 EC2 的流量

日志可以发送到CloudWatch Logs 或 S3。


VPC Endpoint——不走公网的私有连接

问题EC2 访问 S3 要绕路

默认情况下,私有子网的 EC2 要访问 S3流量路径是

EC2 → NAT Gateway → Internet Gateway → 公网 → S3

问题:

  • 流量走了公网(虽然加密了,但有些合规要求不允许)
  • 要付 NAT Gateway 的流量费
  • 延迟更高

解决方案VPC Endpoint

VPC Endpoint 让你的 VPC 内部资源可以直接连接 AWS 服务,不经过公网。

EC2 → VPC Endpoint → S3全程在 AWS 内部网络)

类比:就像公司内部有一条专用通道直达银行金库,不需要走大马路。更安全、更快、更便宜。

两种 Endpoint 类型

类型 适用服务 费用 原理
网关端点 S3、DynamoDB 免费 在路由表中添加一条路由
接口端点 其他大多数 AWS 服务 按小时 + 流量收费 在子网中创建一个网络接口

建议:如果你的 EC2 需要频繁访问 S3 或 DynamoDB一定要创建网关端点。免费且更安全。


PrivateLink——安全地暴露服务

场景

你有一个内部 API 服务,想让其他 VPC可能是其他团队或其他公司安全地访问但不想把它暴露到公网。

传统方式(不安全)

把服务放在公网 → 任何人都能尝试访问 → 需要复杂的防火墙规则

你的 VPC服务提供方
    └── Network Load Balancer
            ↓
        PrivateLink
            ↓
其他 VPC服务消费方
    └── VPC Endpoint接口端点

消费方通过 VPC Endpoint 访问你的服务,流量全程在 AWS 内部网络,不经过公网。

类比:就像两栋大楼之间建了一条地下通道。住户可以安全地往来,不需要走外面的马路。


网络安全架构总结

一个安全的 VPC 网络架构应该包含:

互联网
  ↓
网络 ACL子网级别的第一道防线
  ↓
安全组(实例级别的第二道防线)
  ↓
EC2 实例
  ↓
VPC Endpoint访问 AWS 服务不走公网)

加上 VPC Flow Logs 记录所有流量,形成完整的网络安全体系。


今天的小测验

  1. 安全组和网络 ACL 的"有状态"和"无状态"分别是什么意思?
  2. VPC Flow Logs 记录什么信息?它能帮你解决什么问题?
  3. 为什么建议使用 VPC Endpoint 而不是通过公网访问 S3
  4. PrivateLink 解决了什么问题?

延伸阅读


明天预告

明天是第三阶段的收尾:安全架构综合实战。我们会把 IAM、加密、WAF、CloudTrail、VPC 安全这些知识串联起来,设计一个完整的安全防护体系。