多数团队答不上来一个决定性问题:受影响的插件到底跑在哪些项目里。而正是这个问题,决定一条安全公告的代价是一个下午还是一周。plugin inventory value 就藏在这个缺口里,这也是 why your plugin list is a security asset 的原因,而不是一份杂物台账。一旦知道 how to run a plugin list security audit,它就不再是留痕用的文书工作,而是几分钟界定事件范围的那一步。下面讲的是如何在不靠谁回忆的前提下 know what plugins you have installed、这份记录在你真正用得上的三天里值多少,以及保持它不过期的最短路径。
plugin inventory value 到底体现在哪
风平浪静的工作日里,这份清单几乎没什么价值。它的价值在压力下显现,具体是下面四种情况。
- 响应安全公告。某个插件被公开点名时,范围靠查清单界定,而不是全仓库 grep 之后再猜。
- 发现重复项。两个插件解决同一个问题,意味着要多评审一份、多授予一份权限,而活只干一份。
- 发现偏移。某位开发者装着别人都没有的插件,要么是他走在团队前面,要么是配置已经漂移了,两种情况都值得聊一聊。
- 交接与离职。写下来的记录能活过当初装它的人。
这些都不需要新工具。只需要一个文件,在有变动的时候更新它。
| 你被问到的问题 | 没有清单 | 有清单 |
|---|---|---|
| 哪些项目用了受影响的插件? | 全仓库 grep,然后靠猜 | 一次查询 |
| 有多少台机器暴露? | 要等有人在群里回话说不清 | 立刻给出数量 |
| 我们当初装过它吗? | 没人记得 | 记录里有,还带日期 |
| 同一作者还装了别的吗? | 再搜一轮 | 按作者归类好了 |
清单真正派上用场的三天
每个坚持做清单的团队迟早都会撞上这三天,一般一年内都会遇到。
- 公告那天。你装的东西被公开点名。有清单,回答是一次查询;没有清单,是一整天的搜索,最后还得出一个没人完全信服的答案。
- 审计那天。有人要你拿出构建环境里跑了什么的证据。清单本身就是证据,而事后补做清单,永远比预想的花时间长。
- 事故那天。某个东西行为异常,缩小嫌疑范围的第一步就是知道装了什么。问题安装脚本背后的权限套路写在 /blog/how-install-script-scanning-works。
清单不是白捡的安全工作。它是你一次性做掉的部分,好让另外三天不用花在找清单这件事上。
给自己留一份 know what plugins you have installed 的记录
这是个表格就能干的活。别等什么平台选型。
- 从一台机器上导出已装插件列表,放进共享文件,写上当天日期。
- 每条加三列:版本或 commit、来源(注册表、仓库还是本地路径)、加入日期。
- 在每台开发机和每个 CI 镜像上重复一遍。CI 那一列最容易被忘,而它的权限往往是给得最宽的。
- 把涉及网络访问、凭据、以及项目目录之外文件的条目标出来。
- 指定一个人每月重跑一次导出。没有轮流负责的人,是多数清单悄悄失效的原因。
每条的评分不必写进文件,链接插件页面就行,因为分数会动,而文件不该跟着动。每个分数背后的四个输入写在 /blog/dsh-quality-score-decoded。
不增加流程也能保持更新
清单失败的原因和多数检查表一样:它指望人去记。把更新挂在已经会发生的事情上。
- 在装机或清机的那天重新导出,而不是挂在一个没人看的日历上。
- 新增插件必须同时在文件里加一行,就像加依赖要提 PR 一样。这道闸门在团队层面怎么落地,写在 /blog/setting-up-a-plugin-allowlist-for-your-dev-team。
- 更新时用 diff 比对,而不是靠手填,变更自己就会冒出来。
- 保留历史版本。某个插件两个版本前还很干净,这在它的新版本被标记时是有用的上下文。
常见问题
- 个人开发者也值得做吗?值得,只是价值会变而不是消失。对一个人来说,价值主要是清机后的重装速度,外加一份你到底授予了哪些权限的记录。
- 多久刷新一次?只要装的东西变了就刷新。每月重跑一次能抓到漂移;间隔再长,记录基本已经过期了。
- 分数要写进清单吗?引用,不要抄。分数会随维护和发布活跃度变动,抄在表格里的数字会不知不觉变成错的。
- 我们已有依赖清单了怎么办?两个都留着。依赖清单管的是代码 import 的包;插件是跑在编辑器或 harness 里的工具,通常不在里面。
- 这能替代扫描吗?不能。清单告诉你该查什么,扫描告诉它做了什么。为什么评级要独立于开发者自报的数据,写在 /blog/why-independent-plugin-scoring-beats-self-reported-ratings。
今天先做一台机器,这周把剩下的补齐。你清单里的每个插件在 dshquality.com 都有对应的评分页,那些页面的评分是独立给出的,不是开发者自报的。让清单保持诚实的评审习惯写在 /blog/dsh-plugin-review-process,我们发布的全部文章在 /blog。