安全合规 = 设计阶段的内置属性
解决什么问题:安全 = 后期补丁 vs 内置属性—— 安全合规不是"加在产品上",而是"设计在产品里"。后期补丁 = 永远追不上攻击者。
业务问题
真实场景
场景 1:等保审计时才发现问题
上线 2 年的系统,等保三级审计:
- 弱密码策略(部分账号 123456)
- 无访问日志
- 无数据加密(数据库明文)
- 无入侵检测
- 第三方库含已知漏洞
- 权限混乱(A 能访问所有数据)
后果:
- 1 个月紧急整改
- 客户失去信任
- 可能被处罚失败模式
| 失败模式 | 后果 |
|---|---|
| 安全 = 后期补丁 | 永远追不上 |
| 最小权限原则缺失 | 数据泄露 |
| 无威胁建模 | 关键风险未被识别 |
| 依赖含漏洞 | 攻击面扩大 |
| 无审计日志 | 无法溯源 |
| 合规当摆设 | 真出问题无法应对 |
控制论视角
Ch 6 §6.3:"解耦" + Ch 4 §4.6:"不变量"
安全 = 多层防护
- 边界(ACL、防火墙)
- 认证(AuthN)
- 授权(AuthZ)
- 审计(Audit)
- 加密(Encryption)
- 监控(Detection)
每层都是控制律的"输入端口"
- 输入验证 = Ch 4 §4.6 不变量
- 解耦 = 隔离攻击面核心概念
安全 4 要素
CIA + N:
C - Confidentiality(机密性)
I - Integrity(完整性)
A - Availability(可用性)
N - Non-repudiation(不可否认)
每一项都是独立维度:
- C:谁能看
- I:内容是否被篡改
- A:何时能访问
- N:能否否认操作零信任(Zero Trust)
原则:
- 从不信任,始终验证
- 最小权限
- 假设已经泄露
vs 传统(边界防护):
- 防火墙内 = 信任
- 防火墙外 = 不信任
- 边界被突破 = 全军覆没
零信任实现:
- mTLS(服务间加密)
- OAuth 2.0 / OIDC(认证)
- RBAC / ABAC(授权)
- 服务网格(Istio)威胁建模
方法:STRIDE
S - Spoofing(伪装)
T - Tampering(篡改)
R - Repudiation(否认)
I - Information Disclosure(信息泄露)
D - Denial of Service(拒绝服务)
E - Elevation of Privilege(权限提升)
每个威胁:
1. 识别(识别资产 + 攻击面)
2. 评估(可能性 + 影响)
3. 缓解(控制措施)
4. 验证(测试 + 演练)OWASP Top 10(web 应用)
1. 注入(SQL/NoSQL/Command)
2. 认证失效
3. 敏感数据暴露
4. XML 外部实体(XXE)
5. 访问控制失效
6. 安全配置错误
7. XSS
8. 不安全反序列化
9. 已知漏洞组件
10. 日志和监控不足合规框架
GDPR(欧盟隐私)
- 数据主体权利
- 同意管理
- 数据可移植
- 72h 报告泄露
SOC 2(服务组织控制)
- 安全性
- 可用性
- 处理完整性
- 机密性
- 隐私
ISO 27001(信息安全管理)
- 风险评估
- 控制措施
- 持续改进
等保 2.0(中国)
- 物理安全
- 网络安全
- 主机安全
- 应用安全
- 数据安全工程实践
实战 1:认证与授权
认证(Authentication):
- OAuth 2.0 / OIDC
- JWT(含短期 + 刷新)
- 多因素认证(MFA)
- 单点登录(SSO)
授权(Authorization):
- RBAC(Role-Based)
- ABAC(Attribute-Based)
- 最小权限
- 定期审计实战 2:数据保护
传输中加密:
- TLS 1.3
- mTLS(服务间)
- HTTPS 强制
存储加密:
- 数据库加密(at rest)
- 字段级加密(敏感字段)
- 密钥管理(KMS / Vault)
敏感数据处理:
- 不存明文
- 不在日志输出
- 不在错误信息暴露实战 3:依赖管理
工具:
- Snyk
- Dependabot
- npm audit / pip-audit
- OWASP Dependency-Check
流程:
1. CI 自动扫描
2. 高危漏洞 = 阻塞部署
3. 定期更新
4. SBOM(依赖清单)实战 4:日志和审计
必须记录:
- 认证(登录/登出)
- 授权决策
- 数据访问(特别是敏感数据)
- 配置变更
- 异常行为
不可记录:
- 密码(任何形式)
- 信用卡号
- 完整的 token
- 密钥
保留期:
- 业务决定(合规要求)
- 至少 90 天
- 关键操作:更长实战 5:DevSecOps
原则:
- 安全 = 全员责任(不只是安全团队)
- 自动化(CI/CD 中嵌入)
- 早期(设计阶段就考虑)
- 持续(监控 + 响应)
工具链:
- SAST(静态分析):SonarQube, Semgrep
- DAST(动态分析):OWASP ZAP, Burp
- SCA(依赖扫描):Snyk, Trivy
- 容器扫描:Trivy, Clair
- 密钥扫描:git-secrets, TruffleHog反模式 vs 正模式
| 反模式 | 正模式 |
|---|---|
| "我们之后加安全" | 设计阶段就考虑 |
| 自己写加密算法 | 用标准库 + KMS |
| 在 URL 里传 token | 在 Header + HTTPS |
| 日志记录密码 | 不记录敏感数据 |
| 长期 JWT(无刷新) | 短期 + 刷新 |
性能指标
| 指标 | 衡量 | 健康值 |
|---|---|---|
| 漏洞修复时间 | 高危漏洞发现到修复 | < 7 天 |
| 依赖新鲜度 | 依赖更新比例 | > 80% |
| MFA 覆盖 | 启用 MFA 的账号 | 100% |
| 密钥轮换 | 密钥轮换周期 | < 90 天 |
| 审计日志完整 | 关键操作覆盖 | 100% |
边界判断
何时用零信任
- 多云/混合云
- 远程办公
- 第三方协作
- 高敏感数据
何时可简化
- 内部工具
- 单租户
- 低敏感
何时升级
| 当前 | 升级到 | 触发条件 |
|---|---|---|
| 边界防护 | 零信任 | 攻击面扩大 |
| 无 MFA | 强制 MFA | 数据泄露风险 |
| 手动漏洞修复 | 自动化 | 漏洞过多 |
与 L 层对位
与四源对位
| 主题 | cybernetics | IDDD | Event-Driven | SE@G |
|---|---|---|---|---|
| 边界防护 | Ch 6 §6.3 解耦 | Ch 3 ACL | Ch 13 集成 | — |
| 最小权限 | Ch 6 §6.7 耦合利用 | Ch 10 聚合 | — | — |
| 加密通信 | Ch 20 信息论 | — | Ch 3 Schema | — |
| 审计日志 | Ch 15 测量 | Ch 8 事件 | Ch 14 监控 | — |
| 威胁建模 | Ch 4 §4.6 不变量 | Ch 4 风险驱动 | — | Ch 20 静态分析 |
关键洞察
- 安全 = 内置属性——不是后期补丁。
- 零信任是现代默认——边界防护已过时。
- 最小权限原则——每个用户/服务只给必要的权限。
- 依赖是新攻击面——SBOM 是安全审计基础。
- 合规 ≠ 安全——但合规是底线。
- DevSecOps 是文化——安全不是安全团队的责任。
- 与 cybernetics 同构:Ch 6 §6.3 解耦 = 安全边界;Ch 4 §4.6 不变量 = 输入验证。
阅读路径
新手:
1. 安全 4 要素 + 零信任(基础)
2. OWASP Top 10(常见漏洞)
深入:
3. 威胁建模 STRIDE
4. 合规框架(GDPR / SOC 2)
实战:
5. 认证授权(OAuth / JWT)
6. DevSecOps 工具链