威胁建模和风险控制
1)原则
1.Architectural First.我们从上下文、信任边界和数据流开始。
2.Risk ≈ Likelihood × Impact.测量而不是感觉。
3.Defense in Depth.每层控制器:代码→协议→平台→人员。
4.Shift Left/Right.PR+监视和销售反应中的早期门。
5.Privacy by Design.我们不仅模拟安全威胁,而且模拟隐私风险。
6.Automate Where Possible.策略作为代码,自动反驳,"红线"。
2)库存: 资产、实体、信托界限
资产:数据(PII,财务,秘密),计算资源,密钥,可用性,业务流程。
受试者:用户,服务,管理人员,合作伙伴,外部提供商。
信任边界:用户↔前端、API网关↔服务↔ DB/缓存/队列、区域/云。
攻击面:输入点(API, webhook, UI, network, CI/CD, supply chain)。
mermaid flowchart LR
U[Пользователь] -- TLS --> WAF[WAF/CDN]
WAF --> GW[API Gateway]
GW --> Svc[Service A]
Svc --> DB[(Postgres)]
Svc --> MQ[[Kafka]]
MQ --> SvcB[Service B]
subgraph Trust Boundary
GW; Svc; SvcB end
3)威胁框架
STRIDE (безопасность): Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege.
LINDDUN (приватность): Linkability, Identifiability, Non-repudiation, Detectability, Disclosure, Unawareness, Non-compliance.
PASTA(流程):从业务目标和威胁行为者→技术细节→测试场景。
表(片段、STRIDE ×组件):4)风险评估
针对漏洞的DREAD/OWASP风险评级或CVSS。
概率(L):攻击者的动机/能力,复杂性,表面曝光。
影响(I):金融,侏罗纪,停机,PD泄漏。
风险(R=L × I)→优先级和临界值:Avoid/Reduce/Transfer/Accept。
Impact
Low Med High Critical
Lik Low L L M H
Med L M H H
High M H High Crit
风险寄存器(最小字段):'id,脚本,STRIDE,资产,L,I,R,所有者,控制者,状态,修订日期'。
5)主计长: Prevent/Detect/Respond
预防(预防):- 身份验证/授权:OIDC/OAuth2,PoLP,RBAC/ABAC,短期服务信用。
- 秘密/密钥:KMS/HSM,旋转,"不知情"原则,FPE/字段加密。
- 安全协议:TLS1。2+,mTLS,webhook签名,等效性和反重播。
- 验证/卫生:计划(JSON 计划/Proto),限制,正常化。
- 隔离:网络政策,细分,sandbox,namespaces,bulkheads。
- 审核逻辑(不可响应),在SIEM中重播,异常异常。
- 监视签名和完整性(导出工件哈希,attestation)。
- Honeytokens/金丝雀用于早期密钥泄漏检测。
- Runbook IR:分类,隔离,召回密钥,警报,forenzika.
- 自动杀手开关/功能旗,令牌的"黑名单"。
- 在PD事件中通知用户/监管机构。
6) SDL和安全门
在想法/设计中:威胁模型(RFC/ADR),控制检查表。
在开发中:SAST/秘密扫描,依存扫描(SCA),依存策略。
在装配中:SBOM、工件签名、漏洞策略(CVSS阈值)。
Deply: OPA/Kyverno-IaC/清单 (securityContext、网络策略、秘密漏洞)策略。
销售:IDS/WAF,匿名检测,金丝雀检查,混沌安全(例如,过期证书)。
rego package policy.cicd deny[msg] {
some v input.sbom.vulns[v].cvss >= 7.0 msg:= sprintf("High vuln blocked: %s %s", [v.package, v.id])
}
deny[msg] {
input.k8s.pod.spec.securityContext.runAsRoot == true msg:= "RunAsRoot forbidden"
}
7)供应链供应和人工制品信任
每个映像/软件包的SBOM;依存关系更新-通过机器人/策略。
SLSA/Provenance:可重现的组件、签名、状态。
容器:最小外观,rootless,下降capabilities,只读FS。
IaC扫描:Terraform/Helm是加密政策,开放端口,网络规则。
8)隐私和合规性
LINDDUN隐私威胁卡,数据最小化,别名/匿名化。
保留策略:TTL/重建,"删除权限",对PD访问进行审核。
本地化:地理限制,"数据保留在该地区"。
透明度:处理、通知和同意记录。
9)云层和外围
零信任:验证每个请求,服务之间的mTLS/OPA。
分段:VPC/子网/SG,私人端口,egress控制。
钥匙/秘密:KMS,rotation,CI(OIDC联合会)中的短信。
备份/DR:加密备份,单独密钥,恢复排练。
10)红色/紫色团队和平板运动
红色团队:威胁假设验证,社会工程,链条操作。
紫色团队:联合调试探测器/警报器,改进IR的剧本。
Tabletop:"证书到期"、"密钥泄漏"、"供应链损害"脚本。结果-更新控制和指标。
11)成熟度量与管理
覆盖:具有当前威胁模型和DFD的服务百分比。
MTTD/MTTR安全,控制者捕获的事件比例。
CI中的Policy pass-rate(策略通票率),按临界值关闭漏洞的时间。
隐私:具有TTL/ILM的dataset的百分比,具有合理性的可用性份额。
审计:定期审查风险登记册(季度)。
12)工件模板
12.1个风险卡(示例)
Risk ID: SEC-API-012
Сценарий: SSRF через изображение в профиле
STRIDE: Tampering/Info Disclosure
Актив: API / файловый прокси
Likelihood: High Impact: High Risk: Critical
Контроли: denylist схем, egress-прокси, URL-fetcher в изолированном рантайме,
DNS-resolv только через прокси, время/размер-лимиты, allowlist.
Владелец: team-accounts Статус: Reduce (в работе)
Дата пересмотра: 2025-12-01
12.2设计支票清单
DFD/数据轮廓是组成并绑定到 ADR的?
STRIDE/LINDDUN是通过每个DFD箭头吗?
如何添加代码(OPA/Kyverno/CI门)策略?
监视/警报计划和IR-runbook是否更新?
已确定资产和PII?信任界限是标记的吗?
选择风险临界点;有所有者/截止日期/国防部?
隐私: 最小化、加密、TTL/还原、本地化?
12.3 Webhook策略(伪代码)
python def verify_webhook(req, keys):
ts = int(req.h["X-Timestamp"])
if abs(now_utc()-ts) > 300: return 401 if not hmac_ok(req.body, ts, keys.active_or_prev(), req.h["X-Signature"]):
return 401 if replay_cache.seen(req.h["X-Event-ID"]): return 200
PoLP: в обработчике — только нужные скоупы handle(json.loads(req.body))
replay_cache.mark(req.h["X-Event-ID"])
return 200
13)反模式
没有DFD/不变量的威胁模型"用于打勾"。
"超级外围"无需内部验证服务。
环境/回购变量中的长期秘密。
未作为代码实施的策略→手动"忘记"。
带有PD的徽标没有伪装,也没有重生/TTL。
忽略供应链(无SBOM/签名/扫描)。
接受风险(接受)没有所有者和审查日期。
14)流程整合
RFC/ADR:每个有意义的解决方案都包含"威胁和控制"部分。
Docs-as-Code:威胁模型,DFD,代码旁边的版本中的风险寄存器。
Release gates:当SAST/SCA/SBOM策略失败或缺少高临界性控制时,该发布被阻止。
培训:面向开发人员的花花公子(秘密,签名,PoLP),常规平板电脑。
二.结论
威胁建模是风险管理的工程实践,不是一次性文档。通过应用STRIDE/LINDDUN定义资产和信任界限,测量风险,将其记录在寄存器中,并通过将其嵌入到CI/CD和操作中来实现控制作为代码。随着成熟度指标和定期修订,您将将安全性转变为可预测的体系结构能力-价格、效果和速度是可以理解的。