1. 权限边界概述:什么是数据共享权限、为什么需要权限边界、核心原则
好,咱们直接进入正题。数据共享中的权限边界,说白了就是回答三个问题:谁能看?能看什么?能干什么?
我做了这么多年权限设计,发现很多团队一开始都栽在同一个坑里——觉得权限就是「给个角色、打个勾」就完事了。等你数据量上来、业务复杂了,才发现到处都是漏洞。
1.1 什么是数据共享权限
数据共享权限,就是一套规则。它决定了:
- 谁可以访问哪些数据
- 在什么条件下可以访问
- 能对数据做什么操作(读、写、删、导出)
举个例子。你公司有个客户信息表。销售能看到客户手机号,但客服只能看到客户姓名和订单状态。这就是权限在起作用。
核心要点:权限不是「有」或「没有」的二选一。它是多维度的组合——用户维度、数据维度、操作维度、环境维度。
我个人习惯把权限拆成三层来看:
- 身份层——你是谁?(用户、角色、组织)
- 资源层——你要碰什么?(表、字段、文件、API)
- 动作层——你能做什么?(增、删、改、查、导出)
这三层组合起来,才是一个完整的权限定义。
1.2 为什么需要权限边界
你想想看,如果没有权限边界会怎样?
我在项目中遇到过一家做金融科技的公司。他们早期为了开发效率,所有工程师都能直接连生产数据库。结果有一次,一个实习生写了个死循环查询,直接把数据库拖垮了,线上交易停了40分钟。
这就是没有权限边界的典型后果:
| 风险类型 | 具体表现 | 真实案例 |
|---|---|---|
| 数据泄露 | 不该看的人看到了敏感数据 | 某电商客服查询CEO的订单记录 |
| 数据篡改 | 非授权人员修改了关键数据 | 实习生误删生产库用户表 |
| 合规风险 | 违反GDPR、等保等法规 | 某医疗APP因权限过宽被罚200万 |
| 运维事故 | 误操作导致服务不可用 | 全量数据导出压垮数据库 |
嗯,这里要注意——权限边界不是用来「限制业务」的,它是用来保护业务的。没有边界的数据共享,就像没有护栏的悬崖。
1.3 权限边界的核心原则
做权限设计,有两个原则我建议你刻在脑子里。一个是最小权限,一个是职责分离。
1.3.1 最小权限原则
什么意思?就是给一个人刚刚好的权限,不多给一分。
我曾经帮一家物流公司做权限整改。发现他们的仓库管理员居然有「删除订单」的权限。你想想,仓管只需要扫码出库,为什么要能删订单?这就是典型的权限过度。
我的经验:最小权限不是「能少给就少给」,而是「给到刚好能完成工作的最小集合」。少给了,业务跑不动;多给了,风险敞口大。
落地时我一般这么操作:
- 先问清楚这个角色必须做什么
- 只给这些操作对应的权限
- 定期审计,收回不再需要的权限
- 默认拒绝,按需开放
1.3.2 职责分离原则
这个原则更关键。它说的是:关键操作不能由同一个人完成全部步骤。
举个例子。财务系统里,「创建付款单」和「审批付款单」必须是两个人。如果同一个人既能创建又能审批,那他把钱转给自己都没人知道。
为什么会这样?因为权限集中会带来舞弊风险。这不是不信任员工,而是制度上要避免「一个人说了算」的情况。
避坑提醒:我曾经见过一家公司,为了「效率」,让运维同时拥有「代码部署」和「数据库变更」的权限。结果一次误操作,把测试环境的脚本直接跑到了生产库上。嗯,从那以后,我再也不敢把这两个权限放给同一个人。
职责分离的常见场景:
| 业务场景 | 应分离的职责 | 风险点 |
|---|---|---|
| 财务付款 | 创建付款单 ≠ 审批付款单 | 资金被挪用 |
| 代码发布 | 开发代码 ≠ 部署上线 | 恶意代码被直接发布 |
| 数据导出 | 申请导出 ≠ 审批导出 | 敏感数据被批量泄露 |
| 权限管理 | 授予权限 ≠ 审计权限 | 权限被滥用无人发现 |
1.4 知识体系总览
下面这张图,是我自己梳理的权限边界知识框架。你可以把它当作本章的「地图」:
这张图把本章的核心内容串起来了。你可以看到,权限边界不是孤立的概念——它从「定义」出发,经过「为什么需要」的驱动,最终落到「两个核心原则」上。
好了,这就是权限边界的全貌。记住:权限设计不是一锤子买卖。它需要随着业务变化持续调整。我见过太多团队一开始设计得挺好,半年后权限就乱成一锅粥。所以,定期审计、持续优化,才是长久之道。