四个词各管一段——访问权限管"能到哪儿",认证管"你是谁",授权管"你能干什么",最小权限原则管"该给多少"。
上一节(成本、便利性、安全性的考量)讲了怎么挑措施。这一节开始讲最基础也最有效的那一类措施——管权限。
它同时也是前面几条线的汇合点:出现内部违规的原因 说"机会是唯一能当天改的东西",权限就是机会的具体形态;信息安全的三要素 说"机密性必须靠事前守",权限就是事前守的主要手段。
一、四个词,先各归各位
这四个词特别容易混。用一句话记住各自的职责:
| 词 | 一句话 | 回答的问题 | 把握不好会怎样 |
|---|---|---|---|
| 访问权限 | 能进入的范围 | 他能到哪儿? | 到了不该到的地方 |
| 认证 | 确认你是谁 | 你是你吗? | 别人用你的身份进来 |
| 授权 | 你能做什么 | 你能干什么? | 能做不该做的事 |
| 最小权限原则 | 该给多少 | 给到刚好够吗? | 权限越攒越多 |
它们的关系是一条链:先认证确认身份 → 再授权给出权利 → 访问权限划出范围 → 用最小权限原则控制"给多少"。
认证和授权必须分清,这是新手最常混淆的一对:
认证是"进门",授权是"进屋之后能开哪几个抽屉"。
一个人可以认证成功(确实是本人),但没有任何授权(新人还没分配任务)。反过来,授权存在的前提一定是认证通过。攻破这两者的后果也不一样:认证被攻破 = 别人冒充你;授权被配错 = 你自己做了不该做的事(甚至你自己都没意识到)。
二、访问权限:范围要"默认关闭"
访问权限管的是边界:哪些资源可以被访问、从哪些地方、什么时候。它的关键设计思想只有一条:
默认关闭,按需开放。
这句话听着简单,但现实中的系统常常是反过来的——默认开放,出了问题再关。典型表现:
- 新建的共享文件夹默认所有人可读
- 新建的云上存储桶默认可公网访问
- 新入职的账号默认抄一份老员工的权限
"默认开放"的问题在于:你永远不知道自己漏关了哪一个。而"默认关闭"的好处是:漏了就是功能不可用,会被立刻发现并修好——错误的方向从"悄悄泄露"变成"立刻报错"。这是安全设计中一个很有价值的思路:让错误以可见的方式发生。
三、认证:三个因子和它们的强弱
认证手段按"依赖什么"分成三类:
| 因子 | 是什么 | 例子 | 弱点 |
|---|---|---|---|
| 你知道的 | 知识 | 口令、PIN、密保问题 | 会被猜、被骗、被复用 |
| 你拥有的 | 物品 | 手机、硬件密钥、工牌 | 会被偷、被复制、被补办 |
| 你本身的 | 生物特征 | 指纹、人脸、虹膜 | 泄露了改不了 |
单独用任何一类算单因子。而"多因子"的严格要求是:来自不同的类别。所以:
- 口令 + 密保问题 → 不算多因子(两者都是"你知道的")
- 口令 + 短信验证码 → 形式上算,但短信码容易被实时转发骗走
- 口令 + 硬件密钥 → 真正的强多因子,还能抗钓鱼
认证这一块后面还有整整五节要展开(针对密码的攻击 到 利用个人身体信息),这里只需要先立住这个框架。
四、授权:从"给个人"变成"给角色"
授权管的是"这个人能做什么"。它的演化路线很清晰:
- 早期做法:一人一份权限清单。人一多就没人管得清。
- 现在做法:按角色授权(RBAC)——先定义岗位角色需要什么权限,再把人和角色挂钩。
按角色授权的好处有三个:
- 清楚:新人的权限来自岗位,不用每次重新讨论。
- 可查:审计时问"这个角色有哪些权限",答案是一份清单,而不是几百个人的记录。
- 好改:岗位职责变了,改一次角色定义,所有这个角色的人一起生效。
角色化之后,最容易出的问题变成了"角色本身太肥"——某个角色为了让少数人方便,加了一些只有个别场景才需要的权限,于是所有人都多了这些权限。所以角色定义也需要定期"减肥"。
五、最小权限原则:它的价值是"限制塌方范围"
最小权限原则的完整表述是:每个账号、每个程序,只应拥有完成其任务所必需的最小权限,并且只在必需的时间内拥有。
它常被误解成"尽量少给",那不是它的本意。它的三条实际含义是:
- 按岗位给:权限来自职责,不来自"他之前是干什么的"
- 按需要给:临时任务给临时权限,任务结束就收
- 到期就收:离职、转岗、项目结束,权限跟着清
为什么它值得单独立为"原则"?因为它的作用不止是"少给点权限",而是:
让一次失守不至于变成一次塌方。
举两个真实场景:
- 出纳的账号如果不能改收款账号,那么即使这个账号被攻破,攻击者也做不了最危险的那一步。
- 运维的账号如果没有删日志的权限,那么他即使做了不该做的事,也抹不掉记录。
这就是最小权限的真正价值:它假设"一定会有一次被攻破",然后让那次攻破的后果可控。
六、动手 Demo:权限体检器
下面这个 Demo 只看第二件事——现有的权限里,有多少是岗位根本不需要的。
# 对每个账号算出:现有权限 − 岗位所需权限 = 多余的那部分
extra = has - need
missing = need - has
实跑输出:
====================================================================================
一、逐个账号体检
====================================================================================
zhang.s 出纳 ⚠️ 多 2 项
li.w 销售 ⚠️ 多 2 项 缺 1 项:改价 10% 以内
wang.q 运维 ⚠️ 多 2 项
zhao.m 实习生 ⚠️ 多 2 项
sun.k 前员工 ⚠️ 多 2 项
chen.j 财务主管 ⚠️ 多 1 项
liu.y 外包开发 ⚠️ 多 1 项
hu.d 人事 ⚠️ 多 2 项
====================================================================================
二、多余的权限明细(按多余项数排序)
====================================================================================
zhang.s 出纳 多余:修改收款账号、审批付款单
wang.q 运维 多余:删日志、查数据库
zhao.m 实习生 多余:下载内部文档、发外部邮件
sun.k 前员工 多余:查看报销系统、登录 VPN
hu.d 人事 多余:改工资表、查工资表
li.w 销售 多余:导出全部客户、改价 30% 以内
chen.j 财务主管 多余:改收款账号
liu.y 外包开发 多余:改生产库
合计多余权限 14 项
④ 上面每一行都是同一个毛病:权限是按【当时方便】给的,
之后就没人回头收。最刺眼的是 sun.k——
一个已经离职的人,还留着报销系统和 VPN 的入口。
⑤ 最小权限原则不是【尽量少给】,而是:
按岗位给、按需要给、到期就收。
它真正的价值是让一次失守不至于变成一次塌方——
出纳的账号就算被攻破,也不该能改收款账号。
读这个输出:八行里八行都有多余权限——这不是夸张,这是真实系统里最常见的样子。再看两条特别值得注意的:zhang.s 出纳 同时能"录入付款单"和"审批付款单",这是职责分离失效(一个人能自己提、自己批);li.w 销售 有一点"缺权限"(没有改价 10% 以内的权限),说明这份档案不只是"给多了",也有没维护到的部分——权限治理的问题往往同时包含"给多了"和"给错了"。
七、⚠️ 2026 现状
- 认证侧的重心正在从"口令"移到"抗钓鱼的凭据"。全球范围内,免口令的通行密钥(Passkey,基于 FIDO2/WebAuthn 标准)已经进入规模应用阶段;主流指南明确把短信验证码列为"不抗钓鱼",建议能被替代就替代。下一节到 1-12 讲的都是这条线上的细节。
- 权限治理的最大盲区是"非人账号"。除了员工账号,还有大量程序用的账号:服务账号、API 密钥、流水线里的凭据、机器人账号。它们通常长期不变、权限过大、共享给多人使用。做最小权限盘点时,这一块要单独列出来查。
- "离职即停权"已成为标准动作,且要多系统联动。单点登录让这件事变容易了——停一个账号,所有接进来的系统一起失效(见 密码使用环境的变化)。但没有接入单点登录的系统仍要单独处理,这也是"哪些系统没接进来"必须被记录的原因。
- 定期复核成了硬要求。多数安全与合规框架都要求对账号和权限做周期性复核——不是一次性清完,而是把"权限会不会随时间变肥"当成一个需要持续处理的问题。
30 秒实验
打开你手机上任意一个 App 的"设置 → 隐私 / 权限",做三件事:
- 看它申请了哪几项权限(位置、通讯录、相册、麦克风……)。
- 逐条问:这个功能真的需要这项权限吗?
- 把不需要的关掉,把"仅使用期间允许"改成"仅此一次"。
这个过程就是最小权限原则的最小实践版——从"我可能用得上"改成"这次确实要用"。顺便想一想:如果你是一个系统管理员,你手上的权限里有几项是"从来没用过、但一直留着"的?
常见误区
-
错误:认证通过了就是安全的,授权不重要。——纠正:认证解决"你是谁",授权解决"你能干什么"。绝大多数内部事故不是"别人冒充了你",而是你(或你的账号)做了越界的事——而这属于授权配置问题。
-
错误:最小权限原则就是权限给得越少越安全。——纠正:给得太少会让人干不了活,最后的结果是大家共用管理员账号或申请特批。正确的目标是"够用且不多"——权限与职责对齐,临时需求用临时授权解决。
-
错误:权限配好一次就不用再管了。——纠正:权限会随时间自然变肥(转岗、加项目、临时授权忘记收),这几乎必然发生。所以需要定期复核,把清理做成一个固定动作,而不是一次运动。
-
错误:给共享账号设一个强口令就安全了。——纠正:共享账号的根本问题不是口令强弱,而是事后无法定位到具体的人(破坏可追溯性),也无法做最小权限(每个人都需要全部功能)。它通常是不得已的临时方案,必须记录、限期、有替代计划。
自测三问(点开对答案)
1. "登录时输入口令"和"登录后能查看工资表",分别属于哪个环节? —— 输入口令是**认证**(确认你是谁),能查看工资表是**授权**(你能干什么)。**这两件事由不同机制负责**:认证失败挡住的是入口,授权配错挡住的是越界访问。 2. 为什么说最有价值的最小权限设计,是"不让出纳账号能改收款账号"这种? —— 因为它**限制了一次失守的后果**。认证不能被攻破是理想,但现实一定会有被攻破的时候;这时真正救你的不是"没被攻破",而是**攻破之后也做不了最危险的事**。这就是最小权限的价值定位:**不是防失守,是限制塌方范围。** 3. 为什么"新建文件夹默认所有人可读"是一个糟糕的默认值? —— 因为它让**漏配变成"悄悄泄露"而不是"立刻报错"**。改成默认关闭之后,忘了授权的结果是功能不可用(会被立刻发现并修好),而不是数据静默外泄。**让错误以可见的方式发生,是这一节最值得带走的设计思想。**- ☐ 下一节(1-9 针对密码的攻击)
相关笔记
- 出现内部违规的原因 —— 权限就是"机会"的具体形态,堵机会就是在收权限
- 针对密码的攻击 —— 下一篇:认证这一环最常被打的三种打法
- 密码使用环境的变化 —— 账号多了以后怎么管:单点登录与口令管理工具
- 🛡️ 网络与信息安全 · 索引 —— 全课路线图