seegongsik
我的单词本
安全

设计安全的原则

一说安全,容易想到某个巧妙的加密技术。可锁再结实,门要是大敞着也没用。真正安全的房子不是靠一把锁造出来的。谁拿到哪把钥匙,一层被攻破时靠什么挡住,不认识的客人是放进来还是挡在外面,结构是简单还是复杂。这些设计上的约定加起来,才造出安全。而这些约定,比任何一种技术都活得更久。

01

够用就好,最小权限

之前在操作系统那课见过把权限收回。
把这个想法拓宽到安全设计里。
给某人权限时,
只给做事真正需要的那么多。
对只需看一眼的人,
没理由连修改的权限也给。
而且事情做完,就把那权限收回。
权限越少,出了什么差错,
能扩散到的范围就越小。
给得越多,能丢的也越多。

所负责的事: 只需短暂看一下内容
风险范围
选给这个人的权限

选给一个人多少权限。够用风险就小,给多了能丢的就大。

给得刚够时最清爽。
过多的权限平时看着方便,
可一旦哪里出岔,就把损失放大。
最小权限不只针对人。
对程序、对机器同样适用。
让这个零件只做这一件事。
让这个程序只看这一个文件夹。
就这样把权限的篱笆围窄。
可就算权限分得好,
那一层被攻破的日子也会来。
所以需要下一条原则。

02

破了一层也不怕,多层防御

任何防御都不能保证永远不被攻破。
所以不把一切押在单独一层上。
把好几道挡的层叠起来。
外门开了,还有内门,
内门开了,还有保险柜。
就算一层失守,
它后面的层接住。
本来攻破一处就行,
现在得把每一层都攻破。
层越多,越难走到尽头。
这就是多层防御的力量。

1外门挡着
2内门
3保险柜
所保护的
就算一层开了,下一层还挡着。

一层层去攻破。一层开了下一层还挡着,要走到尽头得穿过每一层。

开了一层并不是终点。
下一层又拦住了。
摆好几层有个窍门。
让每一层性质不一样。
要是每层都是一样的锁,
会开一把就等于会开全部。
层越是种类不同越靠得住。
可要摆好几层,
就得清清楚楚定下
放到哪里、从哪里开始挡。
这个标准的出发点,就是下一条原则。

03

不认识的就挡,默认拦截

设计门时,出发点可以有两个。
一个是先全放进来,只挡坏的。
另一个是先全挡住,只放允许的进来。
两者之间,从挡住开始更安全。
要是从全放进来开始,
连没想到的危险也进来了。
得把世上的坏东西一个不漏全认得,才挡得住。
反过来从挡住开始,
只有明确允许的才通过。
不认识的自动被挡。
名单上没有就进不来。

选默认方针
选默认方针

对比两个出发点。全放进来只挡坏的会漏掉未知风险,全挡住只放允许的会自动挡掉未知。

从全放进来开始的那边,
一个没料到的客人悄悄漏了进来。
从挡住开始的那边,把不认识的全停住了。
把默认设成拦截,
就算漏掉了允许名单上的某项,
也会偏向安全那边,而不是危险那边。
这是按出错时损失小的方向去设计。
到这里看了三条原则。
可想把每条原则都守住,
设计往往越变越复杂。
那又成了另一种危险。
最后一条原则来拿住这个平衡。

04

复杂就多缝隙,越简单越安全

为了好好守原则,
就没完没了地添装置,会怎样呢?
结构越复杂,
藏在里面的缝隙也跟着越多。
零件多、连接乱,
哪里弱就越看不出来。
人没法全检查的结构,
没检查到的那处就成了缝隙。
所以好的设计守住简单。
只留真正需要的,
可有可无的就减掉。
简单的话,什么挡什么
一眼就看得清,所以更安全。

1
零件数: 1没检查到的缝隙: 0
简单。什么挡什么一眼就看得清。

在结构里加零件或减零件。越复杂没检查到的缝隙越多,越简单越能一眼看清。

减掉零件,要检查的地方就少了。
越往上添,缝隙就悄悄越多。
简单不是偷懒。
反倒是把什么才真正需要
想到底的结果。
四条原则不是各管各的,
而是彼此咬合一起转。
用最小权限去减,
用多层去撑,
把默认设成拦截,
再把整体保持简单。
现在把四条原则聚到一处看看。

05

来理一理

聚到一处,是这样。
好的安全不是来自某一种技术,而是来自设计原则。
最小权限,只给够用的,做完就收回。
多层防御,破了一层下一层撑住。
默认拦截,除了允许的先一律挡。
越简单越安全,复杂就多缝隙。
四条原则彼此咬合一起转。
而这些原则,比单个技术活得更久。
所以哪怕遇上新技术,
先用原则掂量,就不会动摇。

1最小权限
2多层防御
3默认拦截
4越简单越安全

依次点四条原则回顾一下。(最小权限 -> 多层防御 -> 默认拦截 -> 越简单越安全)

现在你把设计安全的四条原则握在手里了。
往后遇到别的安全话题,
这些原则会给你当向导。
这个是不是只给了够用的,
这个是只有一层还是好几层,
这个是放不认识的进来还是挡住,
这个是简单还是白白复杂。
技术的名字一直在变,
可这些问题永远说得通。
用原则去掂量的眼光,就是看懂安全的力量。

一句话总结好的安全不是来自某一种技术,而是来自设计原则。第一,最小权限。给每个人只够用的权限,事情做完就收回。握的权力越少,能丢的也越少。第二,多层防御。不靠单独一层,摆好几道来挡。一层被攻破,下一层接住。第三,默认拦截。除了明确允许的,先一律挡住。不认识的不放进来更安全。第四,越简单越安全。结构越复杂,没看到的缝隙越多。简单就容易检查。这些原则,就算单个技术变了也长久。所以学新技术时,先用原则掂量一下,就不会迷路。
安全
如果有帮助,请支持我们