前置知识: 云计算

云安全服务

6 min高级

共享责任模型、身份与访问管理、数据加密与密钥管理、网络安全、合规与审计、安全运营与事件响应。

1. 共享责任模型

1.1 模型概述

云安全遵循共享责任模型,云厂商和客户各负责不同层面的安全:

flowchart TD
    subgraph Shared[责任共担]
        I[IaaS<br/>云厂商:物理安全、基础设施、网络<br/>客户:OS、应用、数据]
        P[PaaS<br/>云厂商:物理、基础设施、OS、运行时<br/>客户:应用代码、数据]
        S[SaaS<br/>云厂商:几乎全部<br/>客户:数据、访问控制]
    end

1.2 各云厂商模型差异

责任领域AWSAzure阿里云
物理数据中心云厂商云厂商云厂商
网络基础设施云厂商云厂商云厂商
虚拟化层云厂商云厂商云厂商
操作系统客户客户客户
应用与数据客户客户客户
身份与访问客户客户客户

2. 身份与访问管理(IAM)

2.1 IAM 核心概念

flowchart LR
    P[Principal 谁] --> R[Role 角色] --> PL[Policy 权限] --> Res[Resource 什么资源]

认证(AuthN):你是谁?授权(AuthZ):你能做什么?审计(Audit):你做了什么?

2.2 IAM 策略

基于身份的策略(附加到用户/角色):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject"],
      "Resource": "arn:aws:s3:::my-bucket/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": ["10.0.0.0/8"]
        },
        "StringEquals": {
          "s3:x-amz-server-side-encryption": "aws:kms"
        }
      }
    }
  ]
}

基于资源的策略(附加到资源,如 S3 Bucket Policy)。

2.3 最小权限原则

最小权限实施策略:

  1. 从拒绝所有开始:默认拒绝,逐步放行
  2. 使用 AWS Access Analyzer:识别过度权限
  3. 权限边界(Permissions Boundary):设置角色权限上限
  4. 服务控制策略(SCP):组织级权限限制
  5. 会话策略:临时会话的权限缩小

2.4 联合身份

flowchart LR
    IdP[企业 IdP AD/LDAP] -->|SAML/OIDC 联合认证| IAM[IAM Role 临时凭证] --> AWS[AWS 资源]

联合身份优势:

  • 无需管理 IAM 用户
  • 使用现有企业身份体系
  • 临时凭证自动轮换
  • 集中审计

2.5 临时安全凭证

STS(Security Token Service)提供临时凭证:

临时凭证有效期=min⁡(请求时长,角色最大会话时长)\text{临时凭证有效期} = \min(\text{请求时长}, \text{角色最大会话时长})
凭证类型有效期用途
AssumeRole15min-12h跨账户访问
GetFederationToken15min-36h联合身份
GetSessionToken15min-36hMFA 场景

3. 数据加密与密钥管理

3.1 加密层次

flowchart TD
    A[应用层加密<br/>应用代码实现,最灵活] --> S[存储层加密<br/>数据库/文件系统透明加密]
    S --> D[磁盘层加密<br/>EBS 加密,操作系统不可见]
    D --> N[网络层加密<br/>TLS/IPsec,传输中保护]

3.2 KMS(Key Management Service)

KMS 提供密钥的创建、管理和审计:

flowchart TD
    AWS[AWS 托管密钥 aws/*] --> HSM[HSM 硬件安全模块<br/>密钥在 HSM 中生成和存储]
    CUST[客户托管密钥 alias/*] --> HSM
    BYOK[客户自带密钥 ext/*] --> HSM

信封加密:

KMS 使用信封加密保护数据,避免每次请求都访问 KMS:

1. 请求数据密钥 → KMS 返回明文 DK + 密文 DK
2. 使用明文 DK 加密数据
3. 存储密文 DK + 密文数据
4. 丢弃明文 DK

解密:
1. 发送密文 DK → KMS 解密 → 返回明文 DK
2. 使用明文 DK 解密数据

信封加密性能优势:

KMS 调用次数=数据量4KB (直接加密)\text{KMS 调用次数} = \frac{\text{数据量}}{\text{4KB}} \text{ (直接加密)} KMS 调用次数=1 (信封加密)\text{KMS 调用次数} = 1 \text{ (信封加密)}

3.3 密钥轮换

  • 自动轮换:每年自动轮换(AWS 托管密钥)
  • 按需轮换:手动创建新密钥版本
  • 别名轮换:更新别名指向的密钥

密钥轮换不影响已加密数据(旧密钥版本仍可解密)。

4. 网络安全

4.1 深度防御

flowchart TD
    B[边界防护<br/>WAF / Shield / CloudFront] --> N[网络防护<br/>VPC / 安全组 / NACL / VPC Endpoint]
    N --> H[主机防护<br/>OS 加固 / 漏洞修补 / 运行时保护]
    H --> A[应用防护<br/>输入验证 / 认证授权 / 会话管理]
    A --> D[数据防护<br/>加密 / 脱敏 / 访问控制]

4.2 WAF(Web Application Firewall)

WAF 保护 Web 应用免受常见攻击:

规则类型防护内容
SQL 注入恶意 SQL 语句
XSS跨站脚本攻击
RFC 违规不合规 HTTP 请求
机器人自动化攻击
IP 信誉已知恶意 IP
速率限制DDoS 防护

WAF 规则优先级:

规则1 (Allow: 已知好IP) → 规则2 (Block: 已知坏IP) → 规则3 (Rate Limit) → 规则4 (SQLi检测) → 默认动作

4.3 DDoS 防护

服务防护层级特点
AWS Shield StandardL3/L4自动免费防护
AWS Shield AdvancedL3/L4/L7付费,$3000/月,DDoS 响应团队
CloudFrontL7分布式吸收流量
Route 53DNSDNS 层防护
WAFL7应用层规则

DDoS 攻击类型与防御:

攻击流量=攻击包速率×包大小\text{攻击流量} = \text{攻击包速率} \times \text{包大小}
攻击类型层级防御策略
SYN FloodL4SYN Cookie、限速
UDP FloodL4限速、Geo 屏蔽
DNS 放大L3DNSSEC、限速
HTTP FloodL7WAF 速率限制、CAPTCHA
SlowlorisL7连接超时、并发限制

4.4 VPC Endpoint

VPC Endpoint 允许私有网络访问云服务,不经公网:

Interface Endpoint(PrivateLink):

VPC ── ENI ── PrivateLink ── 云服务
       (私有IP)

Gateway Endpoint(S3/DynamoDB 专用):

VPC ── 路由表 ── Gateway Endpoint ── S3/DynamoDB
       (免费)

5. 合规与审计

5.1 合规框架

框架行业核心要求
SOC 2通用安全性、可用性、机密性
PCI DSS支付卡数据保护
HIPAA医疗健康信息保护
GDPR隐私个人数据保护
ISO 27001通用信息安全管理体系
等保 2.0中国网络安全等级保护

5.2 AWS Config

Config 持续记录资源配置变更,评估合规性:

flowchart TD
    RC[资源变更] --> CR[Config Recorder] --> CI[配置项]
    CR --> RULE[合规规则]
    RULE --> COMP[COMPLIANT]
    RULE --> NON[NON_COMPLIANT] --> FIX[自动修正]

常用合规规则:

  • 加密 EBS 卷
  • S3 Bucket 禁止公开访问
  • 安全组不允许 22/3389 端口入站
  • IAM 用户必须启用 MFA
  • RDS 实例必须开启加密

5.3 CloudTrail

CloudTrail 记录所有 API 调用,用于安全审计:

API 调用 → CloudTrail → S3 (长期存储)
                      → CloudWatch Logs (实时监控)
                      → EventBridge (事件驱动)

关键审计场景:

  • 谁创建了/删除了资源?
  • 何时修改了 IAM 策略?
  • 哪些 API 调用失败?
  • 是否有异常的登录行为?

6. 安全运营与事件响应

6.1 安全运营中心

flowchart LR
    D[检测<br/>GuardDuty/SecurityHub/Config] --> A[分析<br/>上下文/取证] --> C[遏制<br/>隔离/撤销权限]
    C --> E[根除<br/>修补/清除恶意] --> R[恢复<br/>验证/恢复服务] --> X[复盘<br/>改进/文档/策略]

6.2 GuardDuty

GuardDuty 是托管的威胁检测服务:

检测类型示例
异常 API 调用来自异常地域的 API 调用
凭证泄露GitHub 上发现 AWS 凭证
恶意 IP 交互与已知 C2 服务器通信
挖矿行为异常高的 CPU 使用 EC2
暴力破解多次登录失败
权限提升异常的 IAM 操作

6.3 自动化响应

安全事件自动化响应架构:

flowchart LR
    GD[GuardDuty 发现] --> EB[EventBridge] --> L[Lambda 自动动作]
    L --> A1[撤销 IAM 凭证]
    L --> A2[隔离 EC2 实例]
    L --> A3[阻止恶意 IP]
    L --> A4[通知安全团队]
    L --> A5[创建 JIRA 工单]

6.4 安全基线检查

云账户安全基线检查清单:

身份与访问:

  • Root 账户无 AK/SK
  • Root 账户启用 MFA
  • 所有 IAM 用户启用 MFA
  • 无 IAM 访问密钥超过 90 天
  • 最小权限策略

网络:

  • 安全组不允许 0.0.0.0/0 入站
  • VPC 流日志已开启
  • S3 Bucket 禁止公开访问

数据保护:

  • EBS 卷加密
  • RDS 实例加密
  • S3 对象加密
  • CloudTrail 日志加密

监控:

  • CloudTrail 全区域启用
  • Config 合规规则配置
  • GuardDuty 启用
  • 安全告警通知配置

小结

  • 初学者要点:共享责任模型决定了”哪些事云厂商不管”;IAM 三问(你是谁/能做什么/ 做过什么)对应认证、授权、审计;数据安全优先做好传输加密(TLS)与静态加密(KMS)。
  • 进阶注意:信封加密是性能与安全的平衡术——数据密钥加密数据、KMS 只解密 数据密钥;人类用户尽量走联合身份 + 临时凭证,长期 AccessKey 只留给机器并配轮换; 安全不是状态而是流程:基线检查清单 + 自动化响应(GuardDuty → EventBridge → Lambda) 才能覆盖 3 点钟的攻击。