安全模型与原则 · kp-003
最小权限与纵深防御
入门
约 15 分钟
状态:reviewed
#原则#最小权限#纵深防御
一句话定义
最小权限原则要求每个主体只拥有完成其职能所必需的最小权限集合;纵深防御要求在多个独立层次部署控制,使任何单层失效都不会导致整体失守。
为什么重要
这两条原则是"假设一切都会失效"这一现实前提下的工程对策:单点防御必然有被绕过的一天,而限制爆炸半径(blast radius)决定了单点失守后的损失上限。从数据库账号、容器运行身份到网络分段,几乎所有具体加固手段都是这两条原则的实例化;它们也是评估任何安全方案是否"成体系"的试金石。
前置知识
kp-001(CIA 三元组):控制的目标属性决定了层次怎么排布。
核心概念
- 最小权限:按"职能必需"而非"方便"分配权限;权限应有时限并可回收。
- 默认拒绝(Deny by Default):未显式允许的一律拒绝,与"默认全开再逐项封堵"相反。
- 职责分离(Separation of Duties):关键操作拆给多个主体(如"发起转账"与"审批转账"分人),抬高单人作恶或单人失误的门槛。
- 纵深防御层次:物理 → 网络 → 主机 → 应用 → 数据 → 人;每层控制独立失效,且层间互补(如应用层 WAF + 网络层分段 + 数据层加密)。
- 爆炸半径:单点失守后可波及的资产范围,最小权限的目的是把它压到最小。
公式、模型或图示
┌──────────────────────────────┐
外部 │ 网络层:防火墙 / 分段 │ ← 第 1 道
攻击 ─▶│ 主机层:加固 / 补丁 / EDR │ ← 第 2 道
者 │ 应用层:输入校验 / 权限判定 │ ← 第 3 道
│ 数据层:加密 / 备份 │ ← 第 4 道
│ 人:培训 / 最小授权 │ ← 第 5 道
└──────────────────────────────┘
每层独立失效;攻击者需连续突破全部层次原理与机制
两层控制的组合价值来自"独立失效":如果第二层漏洞恰好能被第一层拦下,两层就是伪纵深。因此层间要尽量异构——不同厂商、不同机制、不同失效模式。最小权限的落地难点不在配置而在流程:权限随人员变动与业务演进而累积(权限蔓延),需要定期复审与自动化回收。度量上,"多少账号拥有管理员权限""多少服务以 root 运行""多少端口默认开放"这类指标比"装了什么安全产品"更能反映原则的落实程度。
实例或案例
- 数据库账号分角色:报表系统只给 SELECT 权限,即使被注入(kp-012)也无法 DROP 表或写数据——单层失守的损失被最小权限封顶。
- 个人电脑不上网时也更新补丁、浏览器进程沙箱化、手机为每个 App 询问单项权限,都是纵深防御的日常形态。
- 反例:全公司共用一个有 DROP 权限的数据库 root 账号,一次 Web 漏洞即等于全库沦陷——爆炸半径未被约束。
直观类比
中世纪城堡不只靠一堵墙:护城河、外墙、内墙、塔楼层层设防,且守卫各管一段、钥匙分管多个。攻破一堵墙只赢得一场战斗;同时,任何守卫都不持有打开所有门的钥匙——这就是纵深与最小权限的组合。
常见误区
- 用单一强控制替代体系:"买了防火墙就够了"违背纵深防御;产品是层次的载体而非层次本身。
- 把最小权限理解为一次配置:不做周期复审,权限只会越积越多。
- 为了排障方便长期放宽权限,事后不回收——事故往往发生在放宽窗口期。
与其他知识点的关系
- kp-019(防火墙与网络分段):网络层的最小权限与分段实践。
- kp-022(主机加固与权限治理):主机层的最小权限落地清单。
- kp-023(容器与云安全):云 IAM 与容器运行身份的最小权限实例。
自测题
- 为什么"应用层 WAF + 数据层加密 + 网络层分段"比"两个防火墙串联"更接近真纵深?要点:前者异构机制、独立失效模式;后者同构叠加,绕过方式相同。
- 报表服务该用什么数据库账号权限?为什么?要点:仅 SELECT(必要时限定库表);注入或凭证泄露时的爆炸半径被压到只读。
- 职责分离如何防单人失误与单人作恶?要点:关键操作需多主体协作,单人无法独立完成高危变更,同时留下相互校验点。
延伸阅读
《Security Engineering》(Ross Anderson)第 2 章:以大量工程失败案例说明最小权限与职责分离的组织学含义。