AWS 安全最佳实践
构建安全的 AWS 环境需要多层防护和持续监控。
共享责任模型
AWS vs 客户责任
┌─────────────────────────────────────┐
│ 客户责任(安全 IN 云) │
├─────────────────────────────────────┤
│ • 客户数据 │
│ • 应用程序 │
│ • 身份和访问管理(IAM) │
│ • 操作系统、网络和防火墙配置 │
│ • 客户端数据加密 │
│ • 服务器端加密(文件系统/数据) │
│ • 网络流量保护(加密、完整性、身份) │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ AWS 责任(云的安全) │
├─────────────────────────────────────┤
│ • 软件 │
│ ├─ 计算、存储、数据库、网络 │
│ • 硬件 / AWS 全球基础设施 │
│ ├─ 区域、可用区、边缘站点 │
└─────────────────────────────────────┘
服务类型差异:
IaaS(如 EC2):
- 客户管理操作系统及以上
- 打补丁、防火墙、加密
PaaS(如 RDS):
- AWS 管理操作系统和数据库软件
- 客户管理数据和访问控制
SaaS(如 S3):
- AWS 管理几乎所有基础设施
- 客户管理数据和访问权限
安全支柱
1. 身份和访问管理
核心原则:
最小权限
├─ 仅授予完成任务所需权限
├─ 定期审查和撤销
└─ 避免通配符(*)权限
职责分离
├─ 开发、测试、生产分离
├─ 不同团队不同权限
└─ 防止单点故障
临时凭证
├─ 使用 IAM 角色
├─ 避免长期 Access Key
└─ 自动轮换
身份来源:
内部用户 → IAM 用户/SSO
├─ 公司员工
├─ 集成企业 IdP
└─ MFA 强制
外部用户 → Cognito
├─ 应用程序用户
├─ 社交登录
└─ 自定义认证
服务 → IAM 角色
├─ EC2、Lambda
├─ 无永久凭证
└─ 自动刷新
2. 检测控制
威胁检测:
GuardDuty
├─ 智能威胁检测
├─ 机器学习驱动
├─ 检测类型:
│ ├─ 账户被入侵
│ ├─ 实例被入侵
│ ├─ 恶意 IP 通信
│ ├─ 数据泄露尝试
│ └─ 加密货币挖矿
└─ 自动化响应
配置审计:
Config
├─ 资源配置历史
├─ 合规检查
├─ 配置规则:
│ ├─ S3 bucket 必须加密
│ ├─ EC2 必须在 VPC
│ ├─ RDS 必须多可用区
│ └─ 自定义规则
└─ 自动修复
日志分析:
CloudTrail
├─ API 调用日志
├─ 所有管理操作
├─ 用于:
│ ├─ 安全审计
│ ├─ 合规证明
│ ├─ 故障排查
│ └─ 行为分析
└─ 多区域、多账户聚合
3. 基础设施保护
网络安全:
网络分层
┌───────────────────────────────┐
│ Internet Gateway │ ← 互联网入口
└───────────┬───────────────────┘
│
┌───────────▼───────────────────┐
│ 公有子网(Public Subnet) │
│ ┌────────────────────────┐│
│ │ ALB/NAT Gateway ││ ← 边界防护
│ └────────────────────────┘│
└───────────┬───────────────────┘
│
┌───────────▼───────────────────┐
│ 私有子网(Private Subnet) │
│ ┌────────────────────────┐│
│ │ EC2 应用层 ││ ← 应用隔离
│ └────────────────────────┘│
└───────────┬───────────────────┘
│
┌───────────▼───────────────────┐
│ 数据子网(Data Subnet) │
│ ┌────────────────────────┐│
│ │ RDS/ElastiCache ││ ← 数据保护
│ └────────────────────────┘│
└───────────────────────────────┘
防火墙层级:
1. 网络 ACL(子网级别)
├─ 无状态
├─ 允许/拒绝规则
└─ 粗粒度控制
2. 安全组(实例级别)
├─ 有状态
├─ 仅允许规则
└─ 细粒度控制
3. WAF(应用级别)
├─ Web 应用防火墙
├─ SQL 注入防护
├─ XSS 防护
└─ DDoS 缓解
4. 数据保护
加密策略:
静态加密(Data at Rest)
├─ 存储:
│ ├─ S3: SSE-S3/SSE-KMS
│ ├─ EBS: 启用加密
│ ├─ RDS: 启用加密
│ └─ DynamoDB: 加密
├─ 密钥管理:
│ ├─ AWS 托管(自动)
│ └─ 客户托管(KMS)
└─ 默认启用(推荐)
传输加密(Data in Transit)
├─ TLS/SSL
│ ├─ HTTPS API
│ ├─ SSL 数据库连接
│ └─ VPN 隧道
├─ 证书管理:
│ └─ ACM(免费)
└─ 强制加密传输
数据分类:
分类级别:
├─ Public(公开)
│ └─ 营销材料、公告
├─ Internal(内部)
│ └─ 内部文档、邮件
├─ Confidential(机密)
│ └─ 客户数据、财务信息
└─ Restricted(限制)
└─ 敏感个人信息、密钥
保护措施:
高级别数据:
├─ 强制加密
├─ 访问审计
├─ 数据丢失防护(DLP)
└─ 定期审查
5. 事件响应
响应流程:
1. 准备阶段
├─ 制定响应计划
├─ 定义角色和职责
├─ 建立沟通渠道
└─ 准备工具和剧本
2. 检测和分析
├─ 监控告警
├─ 日志分析
├─ 威胁情报
└─ 确定严重程度
3. 遏制
├─ 隔离受影响资源
├─ 限制横向移动
└─ 保留证据
4. 根除
├─ 移除恶意软件
├─ 关闭攻击入口
└─ 修复漏洞
5. 恢复
├─ 恢复服务
├─ 验证安全性
└─ 监控异常
6. 事后分析
├─ 总结经验教训
├─ 更新响应计划
└─ 改进防护措施
合规与审计
合规框架
常见标准:
PCI DSS(支付卡行业)
├─ 用途:处理信用卡数据
├─ 要求:
│ ├─ 网络隔离
│ ├─ 加密传输和存储
│ ├─ 访问控制
│ └─ 定期安全测试
HIPAA(医疗保健)
├─ 用途:医疗数据
├─ 要求:
│ ├─ 数据加密
│ ├─ 审计日志
│ ├─ 备份和灾难恢复
│ └─ 业务连续性
GDPR(通用数据保护条例)
├─ 用途:欧盟公民数据
├─ 要求:
│ ├─ 数据本地化
│ ├─ 被遗忘权
│ ├─ 数据可移植性
│ └─ 违规通知
SOC 2
├─ 用途:服务组织控制
├─ 要求:
│ ├─ 安全性
│ ├─ 可用性
│ ├─ 机密性
│ └─ 隐私
AWS 合规资源
Artifact:
合规报告中心
├─ 下载合规报告
│ ├─ SOC 报告
│ ├─ ISO 证书
│ └─ PCI 证明
├─ 协议管理
└─ 审计支持
Audit Manager:
自动化审计
├─ 预构建框架
├─ 证据收集
├─ 合规报告
└─ 持续评估
安全服务总览
预防性控制
1. IAM:
- 身份和访问管理
- 最小权限
- MFA
2. Organizations + SCP:
- 多账户管理
- 全局策略
- 权限边界
3. Network Firewall:
- 有状态防火墙
- IDS/IPS
- 深度包检测
4. WAF:
- Web 应用防火墙
- 规则引擎
- Bot 防护
检测性控制
1. GuardDuty:
- 威胁检测
- 机器学习
- 持续监控
2. Security Hub:
- 统一安全视图
- 聚合告警
- 合规检查
3. Detective:
- 安全调查
- 根因分析
- 可视化
4. Macie:
- 数据发现
- 敏感数据识别
- 隐私保护
响应性控制
1. Systems Manager:
- 自动化修复
- 补丁管理
- 参数存储
2. Lambda:
- 自动化响应
- 事件驱动
- 快速修复
3. EventBridge:
- 事件路由
- 自动化工作流
- 集成服务
多账户策略
账户隔离
组织结构:
Root 账户(Management)
├─ Security OU
│ ├─ Log Archive 账户
│ └─ Security Tooling 账户
├─ Infrastructure OU
│ ├─ Network 账户
│ └─ Shared Services 账户
├─ Workloads OU
│ ├─ Dev 账户
│ ├─ Test 账户
│ └─ Prod 账户
└─ Sandbox OU
└─ Sandbox 账户
隔离优势:
├─ 安全边界
├─ 资源限制
├─ 成本分账
└─ 合规分离
集中日志
日志聚合:
各账户 → CloudTrail → 中央 S3 bucket
│
├─ 不可变日志
├─ MFA 删除保护
├─ 对象锁定
└─ 跨区域复制
│
▼
Log Archive 账户
├─ 仅追加权限
├─ 长期保留
└─ 合规审计
成本与安全平衡
免费安全服务
基础安全(免费)
├─ IAM
├─ Security Groups
├─ Network ACL
├─ CloudTrail(管理事件)
└─ Config(一定数量)
付费增强:
├─ GuardDuty: $4-5/账户/月
├─ Security Hub: ~$0.0012/检查
├─ Macie: $1/GB 扫描
└─ WAF: $5/WebACL + 规则费用
优先级建议
必须实施(立即):
- 启用 MFA
- 删除 Root Access Key
- 启用 CloudTrail
- 配置安全组
- 启用加密
强烈推荐(短期):
- GuardDuty
- Config 规则
- Security Hub
- IAM Access Analyzer
- Systems Manager
可选增强(长期):
- Network Firewall
- Macie
- Detective
- Inspector
- 第三方 SIEM
安全检查清单
日常检查
✓ 审查 Security Hub 发现
✓ 检查 GuardDuty 告警
✓ 查看异常登录(CloudWatch)
✓ 验证备份完成
✓ 监控关键指标
每周检查
✓ 审查 IAM 权限变更
✓ 检查未使用的 Access Key
✓ 验证安全组规则
✓ 审查 Config 合规性
✓ 更新安全补丁
每月检查
✓ 完整权限审计
✓ 审查 CloudTrail 日志
✓ 测试备份恢复
✓ 更新文档
✓ 安全意识培训
每季度检查
✓ 渗透测试(如需要)
✓ 灾难恢复演练
✓ 合规性审查
✓ 安全架构评估
✓ 供应商审查
安全是一个持续的过程,不是一次性的任务。建立安全文化,持续改进,才能真正保护 AWS 环境!