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 + 规则费用

优先级建议

必须实施(立即):

  1. 启用 MFA
  2. 删除 Root Access Key
  3. 启用 CloudTrail
  4. 配置安全组
  5. 启用加密

强烈推荐(短期):

  1. GuardDuty
  2. Config 规则
  3. Security Hub
  4. IAM Access Analyzer
  5. Systems Manager

可选增强(长期):

  1. Network Firewall
  2. Macie
  3. Detective
  4. Inspector
  5. 第三方 SIEM

安全检查清单

日常检查

✓ 审查 Security Hub 发现
✓ 检查 GuardDuty 告警
✓ 查看异常登录(CloudWatch)
✓ 验证备份完成
✓ 监控关键指标

每周检查

✓ 审查 IAM 权限变更
✓ 检查未使用的 Access Key
✓ 验证安全组规则
✓ 审查 Config 合规性
✓ 更新安全补丁

每月检查

✓ 完整权限审计
✓ 审查 CloudTrail 日志
✓ 测试备份恢复
✓ 更新文档
✓ 安全意识培训

每季度检查

✓ 渗透测试(如需要)
✓ 灾难恢复演练
✓ 合规性审查
✓ 安全架构评估
✓ 供应商审查

安全是一个持续的过程,不是一次性的任务。建立安全文化,持续改进,才能真正保护 AWS 环境!