---
name: security-arch
description: 安全架构设计。零信任、身份认证、威胁建模。当用户提到安全架构、零信任、IAM、身份认证、威胁建模时使用。
---

# 🏗 阵法秘典 · 安全架构设计


## 零信任架构

```
┌─────────────────────────────────────────────────────────────┐
│                    零信任原则                                │
├─────────────────────────────────────────────────────────────┤
│  1. 永不信任，始终验证                                       │
│  2. 最小权限访问                                             │
│  3. 假设已被入侵                                             │
│  4. 显式验证每个请求                                         │
│  5. 持续监控和验证                                           │
└─────────────────────────────────────────────────────────────┘
```

### 核心组件
```yaml
身份验证:
  - 多因素认证 (MFA)
  - 单点登录 (SSO)
  - 证书认证

设备信任:
  - 设备健康检查
  - 端点检测响应 (EDR)
  - 移动设备管理 (MDM)

网络分段:
  - 微分段
  - 软件定义边界 (SDP)
  - 网络访问控制

数据保护:
  - 加密传输/存储
  - 数据分类
  - DLP
```

## 身份与访问管理 (IAM)

### 认证方式
```yaml
密码认证:
  - 强密码策略
  - 密码哈希 (bcrypt/argon2)
  - 防暴力破解

多因素认证:
  - TOTP (Google Authenticator)
  - FIDO2/WebAuthn
  - 短信/邮件验证码

单点登录:
  - SAML 2.0
  - OAuth 2.0 / OIDC
  - Kerberos
```

### 授权模型
```yaml
RBAC (基于角色):
  用户 → 角色 → 权限
  示例:
    - admin: [read, write, delete]
    - editor: [read, write]
    - viewer: [read]

ABAC (基于属性):
  策略 = f(主体属性, 资源属性, 环境属性)
  示例:
    - 部门=财务 AND 级别>=3 → 访问财务报表

PBAC (基于策略):
  使用策略语言定义复杂规则
  示例: OPA/Rego
```

### JWT 最佳实践
```yaml
签名算法:
  - 使用 RS256 或 ES256
  - 避免 HS256 (共享密钥)
  - 禁止 none 算法

Token 管理:
  - 短期访问令牌 (15分钟)
  - 长期刷新令牌 (7天)
  - 令牌轮换
  - 黑名单机制

Claims:
  - iss: 签发者
  - sub: 主题
  - aud: 受众
  - exp: 过期时间
  - iat: 签发时间
  - jti: 唯一标识
```

## 威胁建模

### STRIDE 模型
```yaml
S - Spoofing (欺骗):
  威胁: 冒充用户身份
  缓解: 强认证、MFA

T - Tampering (篡改):
  威胁: 修改数据
  缓解: 完整性校验、签名

R - Repudiation (抵赖):
  威胁: 否认操作
  缓解: 审计日志、数字签名

I - Information Disclosure (信息泄露):
  威胁: 数据泄露
  缓解: 加密、访问控制

D - Denial of Service (拒绝服务):
  威胁: 服务不可用
  缓解: 限流、冗余

E - Elevation of Privilege (权限提升):
  威胁: 获取更高权限
  缓解: 最小权限、输入验证
```

### 威胁建模流程
```
1. 识别资产
   └─ 数据、服务、基础设施

2. 绘制数据流图
   └─ 信任边界、数据流向

3. 识别威胁
   └─ 使用 STRIDE 分析

4. 评估风险
   └─ 可能性 × 影响

5. 制定缓解措施
   └─ 技术控制、流程控制

6. 验证和迭代
   └─ 渗透测试、代码审计
```

## 安全设计原则

```yaml
纵深防御:
  - 多层安全控制
  - 单点失效不致命

最小权限:
  - 仅授予必要权限
  - 定期审查权限

安全默认:
  - 默认拒绝
  - 显式允许

失败安全:
  - 失败时拒绝访问
  - 不泄露敏感信息

分离职责:
  - 关键操作需多人
  - 开发/运维分离
```

## 安全架构检查清单

```yaml
认证:
  - [ ] 实施 MFA
  - [ ] 密码策略
  - [ ] 会话管理
  - [ ] 账户锁定

授权:
  - [ ] 最小权限
  - [ ] RBAC/ABAC
  - [ ] API 授权

数据保护:
  - [ ] 传输加密 (TLS)
  - [ ] 存储加密
  - [ ] 密钥管理

日志审计:
  - [ ] 安全事件日志
  - [ ] 访问日志
  - [ ] 日志保护

网络:
  - [ ] 网络分段
  - [ ] 防火墙规则
  - [ ] WAF
```

## 数据安全

### 数据分类
| 级别 | 类型 | 保护措施 | 示例 |
|------|------|----------|------|
| 公开 | Public | 无特殊要求 | 产品文档 |
| 内部 | Internal | 访问控制 | 内部Wiki |
| 机密 | Confidential | 加密+审计 | 客户数据 |
| 受限 | Restricted | 加密+审计+MFA | 密钥、PII |

### 加密要求
```yaml
传输加密:
  - TLS 1.2+（禁用 1.0/1.1）
  - 推荐: TLS_AES_256_GCM_SHA384 / TLS_CHACHA20_POLY1305_SHA256
  - HSTS + 证书管理

存储加密:
  - AES-256-GCM（对称）+ 密钥与数据分离（KMS/Vault）+ 定期轮换

密码存储:
  - bcrypt (rounds>=12) 或 argon2，禁止 MD5/SHA1
```

### 隐私保护
```yaml
数据脱敏: 姓名(张**) / 手机(138****1234) / 邮箱(z***@x.com)
数据最小化: 只收集必要数据 / 限制保留期限 / 定期清理 / 匿名化
生命周期: 创建(分类)→存储(加密)→使用(审计)→共享(脱敏)→归档(压缩)→销毁(安全删除)
```

### 数据安全检查清单
```yaml
- [ ] 数据资产清单 + 敏感数据识别 + 数据流映射
- [ ] 传输加密 + 存储加密 + 访问控制 + 数据脱敏
- [ ] 访问日志 + 异常检测 + DLP
```

## 合规审计

### 合规框架速查
| 框架 | 适用范围 | 核心要求 | 处罚 |
|------|----------|----------|------|
| GDPR | 欧盟用户数据 | 数据保护、用户权利 | 营收4%或2000万欧 |
| SOC 2 | SaaS/云服务 | 安全、可用、机密、隐私 | 失去客户信任 |
| HIPAA | 医疗健康数据 | PHI保护 | $50K-$1.5M/次 |
| PCI DSS | 支付卡数据 | 持卡人数据保护 | $5K-$100K/月 |

### GDPR 用户权利 (DSAR)
| 权利 | API | SLA |
|------|-----|-----|
| 访问权 | `GET /users/{id}/data-export` | 30天 |
| 删除权 | `DELETE /users/{id}/data` | 30天 |
| 可携带权 | `GET /users/{id}/data-export?format=json` | 30天 |
| 限制处理 | `POST /users/{id}/restrict` | 72小时 |

### SOC 2 关键控制
```yaml
访问控制: MFA强制 + RBAC + 最小权限 + 季度审查 + 离职即撤权
变更管理: PR审查 + 分环境部署 + 审批流程 + 回滚方案
监控告警: 安全事件监控 + 异常登录检测 + 数据访问审计
事件响应: IR计划文档化 + 定期演练 + 72小时通知 + 事后复盘
```

### 审计日志要求
```yaml
必须审计: 登录/MFA/密码变更 | 权限/角色变更 | 敏感数据访问/导出/删除 | 配置/部署变更
存储: 不可篡改(WORM) + 加密 + 异地备份
保留: 安全事件>=1年 / 访问日志>=90天 / 变更>=3年 / 合规审计>=7年
```

### 合规即代码 (OPA)
```rego
deny[msg] {
    input.resource_type == "aws_s3_bucket"
    input.resource.acl == "public-read"
    msg := sprintf("S3 %s must not be public", [input.resource.name])
}
```

### 合规检查清单
```yaml
GDPR: 隐私政策 + 同意管理 + DSAR(30天) + 加密 + 保留策略 + 泄露通知(72h)
SOC2: 访问控制+MFA + 变更管理 + IR计划 + 漏洞管理 + 安全培训
审计: 日志覆盖关键操作 + 不可篡改 + 保留期限合规
```

