本页目录

安全 II · 密钥、供应链与安全工程

对标:Stanford CS155 / OWASP / Building Secure and Reliable Systems(Google)| 前置:sec-01、crypto 线、cloud 线、se 线 sec-01 讲具体漏洞类别,这一页把安全提升到系统性的工程实践——不是"事后修漏洞",而是"从设计和流程上让系统更难被攻破"。三块:密钥与秘密管理(你 memory 里"明文密钥"的教训直接相关)、软件供应链安全(依赖是最大攻击面之一)、安全工程文化(威胁建模、安全左移、纵深防御)。核心是把安全从个人英雄主义变成可持续的工程纪律。

1. 密钥与秘密管理:最常见的低级灾难

密钥管理:硬编码进 git(永久泄露)vs .env+gitignore+密钥管理器+轮换。

图 sec-02.3密钥管理:硬编码进 git(永久泄露)vs .env+gitignore+密钥管理器+轮换。

API key、数据库密码、加密密钥、token——这些秘密(secrets)一旦泄露,前面所有防御白搭。而泄露往往因为最低级的错误:

扫描防线:用 gitleaks / git-secrets(你 memory 的开源计划里正提到"gitleaks 全史扫")在提交前/CI(se-02)扫描,防止密钥意外进库。"提交前自动扫密钥"应该是每个项目的默认关卡

2. 软件供应链安全:你依赖的一切都是攻击面

现代软件是站在依赖的肩膀上——一个项目可能间接依赖上千个第三方包(npm/pip)。每个依赖都是信任 + 攻击面

防御(供应链卫生)

对你的开源计划(memory):把 Medusa 开源时,"gitleaks 全史扫 + 剥离数据 + 依赖审查"正是供应链 + 密钥卫生的实践——开源前的安全清理,本页给了完整清单

3. 威胁建模:在设计时想清楚攻击面

STRIDE 威胁建模 + 数据流信任边界。

图 sec-02.2STRIDE 威胁建模 + 数据流信任边界。

安全最有效的时机是设计阶段(越早越便宜——上线后修漏洞成本高百倍)。威胁建模:系统性地问"谁会攻击、攻击什么、怎么防":

方法论威胁建模不用很正式——哪怕设计时花十分钟问"这里的输入可信吗?这个密钥怎么保护?出错会泄露什么?"就能挡下大量问题

4. 安全工程文化:让安全可持续

安全不是一个人的英雄主义或一次性审计,是融入流程的持续实践

读法成熟的安全工程 = 把 sec 线的所有知识变成默认的、自动的、低摩擦的流程——密钥自动扫描、依赖自动审计、输入默认校验、权限默认最小、异常默认告警。安全不是产品发布前的一道关,是贯穿设计-开发-部署-运维的一条线

5. 全站收束:安全是所有层的横切关注

安全是横切每一层(系统/网络/数据/应用/流程)的属性,六板块会师。

图 sec-02.1安全是横切每一层(系统/网络/数据/应用/流程)的属性,六板块会师。

安全线不是孤立的——它横切本站每一层,把整个课程串起来:

"安全是每一层都要考虑的横切属性,不是某一层的功能"——这是安全工程最重要的心智模型,也是本站六大板块在安全这一页的会师。对你的 Medusa 和开源计划:从只读账号、.env + gitleaks、到未来的依赖扫描和健康告警,你其实已经在实践本页的很多原则——本站帮你把这些零散的好习惯,连成一个系统性的安全工程框架

6. 练习与要点

例 1(密钥审计) 检查 Medusa 的密钥都存哪(.env?、有没有历史泄露、只读账号权限对不对),对照本页清单做一次密钥卫生自查——把"明文密钥"的历史教训变成主动防御

例 2(供应链自查) 对一个项目跑 npm audit / pip-audit,看有几个已知漏洞依赖——理解"你依赖的一切都是攻击面",为开源计划的依赖审查热身。

例 3(威胁建模练手) 给 Medusa 的公网入口(cloudflared → FastAPI)做一次迷你 STRIDE:谁能攻击、攻击什么、现有防御够吗——把威胁建模用到自己系统的真实攻击面\(\blacksquare\)


计算机讲义库到此全部完成——六大板块、二十门课、五十页,从算法理论到全栈工程再到安全,计算机科学的主干你都走了一遍。祝学习顺利,常回来查表。