第3章 网络与VPC安全面试问题
本章聚焦AWS网络与VPC安全三大核心组件:安全组(Security Group)、网络ACL(NACL)、VPC流日志(VPC Flow Logs)。面试中常见考查点包括:有状态vs无状态、默认规则、优先级、日志分析场景以及三者协同使用。掌握一套清晰的回答框架,能帮助你在面试中快速组织语言、展示深度。
| 维度 | 安全组 | 网络ACL | VPC流日志 |
|---|---|---|---|
| 状态 | 有状态(自动允许回程) | 无状态(需显式允许回程) | 仅记录,不控制流量 |
| 作用层 | 实例级别(ENI) | 子网级别 | VPC / 子网 / ENI |
| 默认规则 | 隐式拒绝所有入站,允许所有出站 | 允许所有入站/出站(自定义后改为拒绝) | 无规则,仅生成日志 |
| 规则评估 | 所有规则合并评估,允许优先 | 按编号从小到大评估,有拒绝则拒绝 | 不参与流量决策 |
| 典型用途 | 细粒度访问控制 | 子网级别的黑/白名单 | 安全审计、故障排查 |
问题1:安全组和网络ACL有什么区别?请分别说明适用场景。
🎯 面试官考察点:是否理解有状态vs无状态、作用层级、默认规则;能否结合实际场景推荐正确组件;是否清楚两者协同工作的边界。
📌 回答框架:先点出状态差异 → 再对比作用层级 → 补充默认规则和评估顺序 → 给出典型场景(安全组用于实例细粒度,NACL用于子网黑白名单)→ 最后提一句流日志可辅助排查。
🔹 示例回答:安全组有状态,自动允许回程;NACL无状态,需显式规则。安全组在ENI层,NACL在子网层。默认安全组全出站,NACL全允许。推荐:内部服务间用安全组,DMZ子网用NACL做双重防护。
🔍 可能追问:如果一个流量被安全组允许但被NACL拒绝,结果如何?(答:拒绝,因为两者都必须允许,任一拒绝则拒绝)。
问题2:VPC流日志可以用来做什么?如何通过流日志排查安全组配置错误?
🎯 面试官考察点:是否真正用过流日志;能否分析“ACCEPT”和“REJECT”记录;是否知道流日志的局限性(如不记录经NAT的流量)。
📌 回答框架:流日志用途(审计、故障排查、网络分析)→ 关键字段(src/dst IP、port、action)→ 定位问题方法(对比期望规则与REJECT记录)→ 结合Athena或CloudWatch Logs Insights分析。
🔹 示例回答:例如某应用无法访问数据库,查流日志看到REJECT记录,说明安全组或NACL拒绝。再对比源IP和端口,发现安全组入站规则遗漏数据库端口。更新规则后流日志变为ACCEPT,问题解决。
🔍 可能追问:流日志不记录哪些流量?(答:有NAT的流量、AWS内部元数据、DHCP等),以及如何启用流日志到S3而非CloudWatch。
问题3:设计一个三层Web架构的VPC安全策略,你会如何组合使用安全组、NACL和流日志?
🎯 面试官考察点:架构设计能力;是否理解安全组最小权限原则;能否合理分层防御;流日志启用位置。
📌 回答框架:分层架构(ELB→Web→App→DB)→ 每层安全组只开放必要端口 → 子网NACL做粗粒度管控(如禁止外网SSH)→ 流日志在关键子网启用,并送到S3归档。
🔹 示例回答:Web层安全组允许0.0.0.0/0的443,App层只允许Web层SG,DB层只允许App层SG。NACL在公共子网限制SSH来源IP,私有子网拒绝所有入站外部流量。流日志启用全部ENI,用Athena做异常检测。
🔍 可能追问:如果DB需要临时从运维机器访问,你会改安全组还是NACL?(答:改安全组,更精细且影响范围小);流日志数据量太大怎么办?(答:采样或只记录REJECT)。