灵光 · 灵光 · · 国科智飞 Gavin
最小权限原则:钥匙,才是所有门的门
磐石城给每扇门都分好了级,唯独把六把钥匙抄进了同一本册子。最小权限原则:钥匙,才是所有门的门。
北地的城,比的是墙高。磐石城比的是门。
城里城外都说,这座城不是建出来的,是「分」出来的。造城的裴匠人,人称裴门神——他这辈子只做一件事:给全城的门分级。
正阳门是粮道,只进不出,牛车可入,兵车不纳;水门只放竹筏,筏头不许过三尺;官署门凭签出入,无签者一律挡在阶下;军械库干脆没有门——那面墙是实的,连个锁眼都不留;密档库更绝,图纸上画着门,砌墙的时候封死了,外墙连门洞都找不到。
每道门的规矩都写进《城门令》,令的第一条是裴门神亲手刻的:「凡锁,不得悬于门外;凡钥,不得书于册中。」
外邦使节来参观,绕着城走一圈,回去都说固若金汤:粮道进不了兵,水门过不了大船,军械库无门可攻,密档库连在哪儿都找不着。裴门神最得意的是军械库,逢人就说:「没有门,就是最好的门。」
裴门神有个习惯。他太爱自己的门,怕钥匙丢了,就在书房备了一本册子——《磐石城诸门名册》:六页,一页一扇门,门的样子、锁的机括、钥匙的齿形,画得一丝不差。写完了,他在扉页上又题了一句,还是《城门令》第一条:「凡锁,不得悬于门外;凡钥,不得书于册中。」题罢搁笔,翻过扉页,继续记他的钥匙。
城破那天,是个晴天。
敌兵没有攻任何一扇门。正阳门是守军自己开的——大白天,一辆粮车进城,车上下来的人掏出一把钥匙,对上了锁,门就开了。守军以为是换防的友军,还帮着推车。等明白过来,城已经破了。
裴门神被押着,走过自己引以为傲的城门。敌将手里,拿着那本名册。
「我本来没想打磐石城。」敌将说,「是你的册子告诉我该打。扉页上写着『钥匙不得入册』——这说明册子里的钥匙是真的。六页六把,你全城的锁,都在这一本书里。」
他翻开扉页,念道:「凡锁,不得悬于门外;凡钥,不得书于册中。」
然后他笑了:「你把这句话,写在了藏着钥匙的地方。」
裴门神一生的门,没有一扇被攻破。攻破磐石城的,是那本名册。
城破之后,民间流传一句话:门分得再细,钥匙不分级,等于没分。钥匙,才是所有门的门。
概念:最小权限原则
最小权限原则(Principle of Least Privilege) 由萨尔策与施罗德(Saltzer & Schroeder)在 1975 年的论文《信息系统的保护》中提出,是计算机安全史上最奠基的原则之一:每个程序、每个用户、每个接口,只应拥有完成其任务所必需的最小权限。
它有一条配套的姊妹原则——默认拒绝(Fail-safe Defaults):没有明确授权,就是禁止。论文还强调,最小权限首先限制的是「意外或错误造成的损害」,其次才是恶意攻击;军事上的「最小知情」是它的古典形态。
这套原则的边界必须画到凭证层:接口分级再完美,一条凭证泄露,全部接口的权限分级就会归零。门分得再细,钥匙不分级,等于没分。原因也很朴素——给权限分级几乎零成本,而钥匙入册的代价是全栈。所以安全设计的第一条,是「钥匙不在名册里」,而不是「每扇门多加三道锁」。
故事里的映射
| 故事里的元素 | 现实中的含义 |
|---|---|
| 磐石城的门 | 系统里一层层的权限设计 |
| 裴门神给每扇门分级 | 接口与访问的权限分级 |
| 军械库没有门 | 不暴露即最安全:默认拒绝 |
| 密档库连门洞都没有 | 连「看看有什么」都不开放 |
| 《城门令》第一条 | 「密钥不写进文档」的安全规矩 |
| 《磐石城诸门名册》 | 把凭证集中抄在一处的内部文档 |
| 扉页禁令反证钥匙为真 | 自己写下的禁令标明了文件的价值 |
| 敌将用钥匙从正阳门进城 | 一次凭证泄露,全栈权限归零 |
| 「钥匙,才是所有门的门」 | 最小权限必须画到凭证层 |
现实中的最小权限
- 密钥写进代码仓库,一次泄露就让整套系统的权限分级作废
- 数据库密码放进共享文档和群聊,等于给每个能看到的人配了万能钥匙
- 给 AI 代理一个超管令牌包打天下,风险与便利同源
- 离职员工未回收的权限,是常年开着的后门
给 AI 时代的企业
给系统、给员工、给 AI 代理,都按「完成这件事所需的最小权限」授权,默认关闭。凭证单独加密存放、定期轮换,永远不要写进会被共享的文档。记住那条最容易被忽略的:内部资料,才是最该分级的东西。
灵光 · 用一个故事讲清楚一个概念。