很多团队做数据平台,前期都很兴奋:数据接进来了,指标跑起来了,BI 看板也上线了,业务方开始天天要数据。
然后问题来了:
“这个表谁能看?”
“手机号能不能给运营?”
“研发查生产数据要不要审批?”
“客户项目数据能不能跨部门复用?”
“导出过哪些敏感字段,谁导出的?”
“AI Agent 调数据的时候,权限怎么算?”
很多公司一开始的答案都很简单:加角色、配权限、敏感字段打星号。
但真到大数据平台、IoT 平台、金融风控平台、企业 AI 平台这种复杂场景里,单纯 RBAC 很快就会失效。不是 RBAC 没用,而是它只解决了“谁属于哪个角色”的问题,没有解决“数据是什么级别、在什么场景下、为了什么目的、以什么方式被访问”的问题。
这篇文章想系统讲清楚一件事:权限和隐私治理,不是一个功能点,而是一套从数据分类分级、角色权限、字段脱敏、审计日志、最小权限到合规流程的工程体系。
法规层面,中国《数据安全法》已经明确提出数据分类分级保护制度,要根据数据的重要程度,以及被篡改、破坏、泄露、非法获取或非法利用后可能造成的危害程度,对数据实行分类分级保护。(国家统计局) 国家标准 GB/T 43697-2024《数据安全技术 数据分类分级规则》也已经发布并实施,为分类分级落地提供了通用规则。(国家标准开放平台)
工程层面,行业也在从“边界安全”走向“数据中心化安全”。NIST 的零信任架构强调,访问控制要尽可能细粒度,并围绕每一次请求做认证、授权和最小权限判断,而不是默认信任内网用户。(NIST 技术系列出版物)
所以,今天我们不聊“怎么加一个菜单权限”,而是聊一套真正能落地的数据权限和隐私治理架构。
一、为什么传统权限方案会在大数据平台里失控?
先说一个很常见的场景。
公司有一个用户画像宽表,里面有用户 ID、手机号、城市、年龄、消费能力、设备信息、健康标签、行为轨迹、最近购买 SKU、营销偏好。业务方说:“我只想看用户画像,不看隐私。”
听起来没问题。但问题是,什么叫“不看隐私”?
手机号肯定是敏感。身份证肯定是敏感。那设备 ID 呢?家庭地址呢?老人健康状态呢?儿童行为数据呢?长期定位轨迹呢?单独看可能只是一个字段,组合起来就可能形成可识别个人的信息。
这就是大数据平台和普通后台系统最大的区别:数据不是孤立字段,而是可组合、可关联、可推断的资产。
传统系统的权限模型一般是:
用户 -> 角色 -> 菜单 -> 操作按钮
比如:
运营人员:可以查看用户列表
客服人员:可以查看订单详情
管理员:可以导出报表
这个模型在单体业务系统里还行,但到了数据平台会出现几个问题。
第一,数据粒度更细。权限不再只是页面级、接口级,而是库、表、行、列、字段、标签、指标、画像、特征、模型输入、模型输出。
第二,访问场景更多。同一张表,BI 查询、离线分析、实时接口、算法训练、Agent 问答、客户交付、监管报送,风险完全不一样。
第三,数据链路更长。数据从 ODS 到 DWD、DWS、ADS,再到特征库、指标平台、画像平台、AI 应用,中间会经历清洗、聚合、关联、加工。如果只在入口控制一次,后面基本就失控了。
第四,使用者更多。研发、测试、数据分析师、算法工程师、产品、运营、销售、客户成功、外部合作方,都可能要访问数据。
第五,监管要求更明确。《个人信息保护法》要求个人信息处理者对个人信息实行分类管理,采取加密、去标识化等安全技术措施,合理确定操作权限,并定期进行安全教育和培训;同时还要求定期进行个人信息保护合规审计。
所以,大数据权限治理的核心不是“给谁开权限”,而是回答下面这几个问题:
1. 这是什么数据?
2. 这个数据是什么级别?
3. 谁是数据 Owner?
4. 谁因为什么业务目的访问?
5. 访问原文、脱敏值,还是聚合结果?
6. 访问行为有没有被记录?
7. 权限多久过期?
8. 出问题后能不能追溯?
能回答这些问题,才算真正进入了数据安全治理。
二、技术的来龙去脉:从 ACL、RBAC 到零信任数据治理
权限系统不是今天才有。它大致经历过几个阶段。
1. ACL:一条资源一张名单
最早很多系统用 ACL,也就是 Access Control List。
资源 A:张三可读,李四可写,王五不可访问
资源 B:销售组可读,管理员可写
ACL 的优点是直观,缺点也明显:资源一多,配置爆炸。几千张表、几万个字段、几百个项目、几千个用户,靠 ACL 基本没法维护。
2. RBAC:用角色降低复杂度
后来大家用 RBAC,也就是 Role-Based Access Control。
用户 -> 角色 -> 权限
比如:
数据分析师 -> 可查 ADS 层报表
算法工程师 -> 可查特征表
客服主管 -> 可查部分用户信息
RBAC 解决了 ACL 的“逐人逐资源配置”问题,是企业权限系统的基础。但 RBAC 最大的问题是:角色本身太粗。
举个例子,“数据分析师”这个角色能不能看手机号?
答案取决于场景。做用户留存分析,不需要手机号;做回访名单,需要手机号;做模型训练,可能只需要 hash 后的用户 ID;做客户投诉处理,可能只看尾号就够了。
也就是说,角色只是权限的一个维度,不是全部维度。
3. ABAC:把属性和上下文纳入判断
ABAC 是 Attribute-Based Access Control,基于属性的访问控制。
它不只看角色,还看用户属性、资源属性、环境属性和业务目的。
用户属性:部门、岗位、职级、项目组、安全等级
资源属性:数据级别、数据域、字段标签、所属客户、是否个人信息
环境属性:访问时间、访问地点、设备可信度、网络环境
行为属性:读取、导出、修改、共享、训练模型
目的属性:客服处理、营销触达、风控审核、研发排障、监管报送
一个典型策略可以是:
当用户属于“客服主管”
并且访问目的为“客户投诉处理”
并且工单状态为“处理中”
并且访问数据属于本人负责区域
则允许查看手机号后四位
不允许导出完整手机号
这就比“客服主管能看用户表”安全得多。
4. PBAC / Policy as Code:把权限策略变成可管理的代码
再往后,权限治理会走向 PBAC,也就是 Policy-Based Access Control。核心思想是:权限不是散落在各个应用里的 if-else,而是统一进入策略中心。
Open Policy Agent 这类策略引擎的思路,就是把策略决策从业务代码里剥离出来,用声明式语言表达规则,再由应用、API 网关、Kubernetes、CI/CD 等系统调用策略引擎做判断。OPA 官方文档把它描述为一个通用策略引擎,可以用 Policy as Code 的方式统一跨系统策略管理。
这件事非常关键。
因为一家公司只要数据链路复杂起来,就一定会有很多访问入口:
Web 后台
BI 工具
SQL 查询平台
Notebook
API 网关
数据服务
模型训练平台
Agent 工具调用
离线导出
客户交付环境
如果每个入口都自己写一套权限逻辑,最后一定不一致。真正成熟的做法,是把权限策略收敛成统一的策略中心,然后在不同入口做统一执行。
5. 零信任数据治理:每一次访问都要重新判断
过去我们习惯说:“内网是可信的,外网是不可信的。”
现在这个假设越来越危险。账号可能被盗,内部人员可能误操作,测试环境可能泄露,Agent 可能越权调用工具,第三方系统可能被攻破。
NIST 零信任架构强调,不应基于网络位置默认信任访问者,而是围绕资源保护,对访问请求持续评估,做细粒度授权。
放到数据平台里,就是一句话:
不要因为一个人登录了系统,就默认他可以访问所有数据。每一次访问,都要结合身份、资源、动作、场景和风险重新判断。
这就是现代数据权限治理的基本盘。
三、先分数据,再谈权限:分类分级是所有控制的地基
很多团队一上来就讨论角色:
“运营能看什么?”
“产品能看什么?”
“研发能看什么?”
我一般会先打断这个讨论,因为顺序反了。
正确顺序应该是:
先识别数据 -> 再分类分级 -> 再定义访问策略 -> 再配置角色和流程
没有分类分级,权限配置一定会变成拍脑袋。
1. 一个实用的数据分类模型
从工程落地看,建议先把数据分成几大类。
| 数据类型 | 示例 | 风险点 |
|---|---|---|
| 公开数据 | 官网介绍、公开商品信息、公开文档 | 低风险,但要防篡改 |
| 内部业务数据 | 普通运营数据、部门报表、流程数据 | 泄露后影响经营 |
| 个人信息 | 姓名、手机号、地址、账号 ID、设备 ID | 涉及个人权益 |
| 敏感个人信息 | 身份证、金融账户、医疗健康、行踪轨迹、生物识别、未成年人信息 | 泄露后可能造成人身、财产或人格权益损害 |
| 商业敏感数据 | 定价、成本、客户名单、合同、渠道政策、经营策略 | 影响竞争优势 |
| 重要数据 / 核心数据 | 关键行业、重要民生、重大公共利益相关数据 | 可能影响国家安全、公共利益或重要行业运行 |
| 算法和模型数据 | 训练样本、特征、标签、模型输出、提示词、评测集 | 可能造成模型泄露、偏见、合规风险 |
这里要特别注意“敏感个人信息”。《个人信息保护法》明确列举了生物识别、宗教信仰、特定身份、医疗健康、金融账户、行踪轨迹等,以及不满十四周岁未成年人的个人信息,并要求只有在具有特定目的和充分必要性、采取严格保护措施的情况下才能处理。
如果你做的是 IoT、康养、幼教、美业、金融、车联网、智慧城市这类业务,很多数据天然就容易碰到敏感区。比如老人健康指标、儿童图像、家庭位置、设备行为轨迹、消费偏好、金融交易路径,都不能按普通日志数据处理。
2. 一个可落地的数据分级模型
分类回答“它是什么数据”,分级回答“它有多敏感”。
可以设计一个五级模型:
| 等级 | 名称 | 说明 | 典型控制 |
|---|---|---|---|
| L1 | 公开数据 | 可公开传播,泄露风险低 | 防篡改、基础审计 |
| L2 | 内部数据 | 公司内部可见,不宜公开 | 内部账号、基础权限 |
| L3 | 敏感数据 | 涉及个人信息、客户数据、普通商业敏感 | 审批、脱敏、行列级控制 |
| L4 | 高敏数据 | 敏感个人信息、核心客户数据、高价值经营数据 | 强审批、最小权限、动态脱敏、强审计 |
| L5 | 重要 / 核心数据 | 可能影响公共利益、行业运行、国家安全等 | 专项制度、专人负责、强隔离、风险评估 |
这套模型不一定适合所有公司,但有一个原则不会变:级别越高,访问越少;使用越多,暴露越少。
什么意思?
同样一份高敏数据,不要让所有人都看原文。能看聚合就看聚合,能看脱敏就看脱敏,能用服务接口就不要直接查表,能用特征就不要拿明文。
3. 分类分级的流程不要靠人工表格硬扛
很多公司做数据分类分级,第一反应是搞 Excel:
表名、字段名、字段说明、数据级别、负责人、备注
这个方式可以启动,但不能长期依赖。原因很简单:数据每天都在变,字段每天都在加,任务每天都在加工,人工表格很快就过期。
更好的方式是做成“元数据 + 自动识别 + 人工确认”的闭环。
Apache Atlas 这类元数据治理工具,就提供了数据资产目录、分类、血缘和治理能力;它支持给实体打分类标签,并且可以通过血缘传播分类,和 Apache Ranger 结合后还能基于分类做数据访问授权和脱敏。
这背后的思路很重要:权限策略不要只绑定表名字段名,还要绑定数据标签。
因为字段会变,表会迁移,数据会加工,但标签可以沿血缘传播。只要某个字段被识别为敏感个人信息,不管它流到哪张下游表,都应该继承相应的保护要求。
四、角色权限怎么设计:RBAC 打底,ABAC 精细化,策略中心统一收口
权限系统的核心,是把“人”和“数据”之间的关系表达清楚。
我建议用一个组合模型:
RBAC + ABAC + 数据标签 + 审批流程 + 临时授权
不要试图用一种模型解决所有问题。
1. RBAC 负责基础岗位权限
RBAC 适合处理稳定的组织角色。
| 角色 | 基础权限 |
|---|---|
| 数据分析师 | 查询授权数据集、创建分析报表 |
| 算法工程师 | 访问特征表、训练样本、模型评估数据 |
| 数据开发 | 开发数据任务、查看任务日志、管理非高敏表 |
| 业务运营 | 查看业务看板、申请导出名单 |
| 客服主管 | 查看工单相关用户信息 |
| 安全审计员 | 查看审计日志、风险告警 |
| 数据管理员 | 管理数据目录、分类标签、数据 Owner |
| 平台管理员 | 管理系统配置,但默认不看高敏业务数据 |
注意最后一行:平台管理员默认不应该能看所有数据。
这是很多公司的坑。系统管理员、DBA、大数据平台管理员经常因为“运维需要”拥有过大的数据访问能力。成熟做法应该是:系统管理权限和数据访问权限分离。
平台管理员可以管理集群、任务、资源、配置,但访问高敏数据原文,需要单独审批、单独授权、单独审计。
2. ABAC 负责上下文判断
RBAC 解决“你是谁”,ABAC 解决“你在什么情况下要干什么”。
一个权限判断可以写成这样:
Subject:谁
- user_id
- department
- role
- project
- clearance_level
- employment_status
Resource:访问什么
- database
- table
- column
- data_domain
- data_level
- data_tags
- owner
- tenant_id
Action:做什么
- read
- export
- update
- share
- train_model
- call_api
Context:在什么场景下
- purpose
- ticket_id
- ip
- device_trust_level
- access_time
- location
- risk_score
策略示例:
policy_id: pii_phone_read_masked
description: 运营人员只能在营销活动审批通过后查看手机号脱敏值
effect: allow
subject:
role: marketing_operator
resource:
tags:
- pii_phone
level_lte: L3
action:
- read
context:
purpose: marketing_campaign
ticket_required: true
ticket_status: approved
decision:
mask: phone_last4
export: false
expire_after: 7d
audit:
level: high
这段策略表达了几个关键点:
权限不是永久的。
权限需要业务目的。
权限可以只给脱敏值。
权限可以禁止导出。
权限要带审批单号。
权限要有过期时间。
访问行为要高等级审计。
这才是数据平台里的权限。
3. 不要让角色爆炸
角色爆炸是权限系统常见灾难。
一开始只有:
运营
产品
研发
管理员
后来变成:
华南运营
华东运营
康养运营
美业运营
高级运营
临时运营
外包运营
康养高级临时运营
再后来大家都不知道哪个角色干什么。
解决办法不是继续加角色,而是把稳定信息放到 RBAC,把动态条件放到 ABAC。
例如:
角色:运营人员
属性:业务线=康养,区域=华南,项目=深圳项目,数据级别<=L3
这样比创建几十个角色更干净。
4. 权限判断要统一入口
大数据平台常见入口很多:
Hive / Spark / Trino / Doris / ClickHouse
Kafka / Flink
BI 工具
Notebook
API 服务
数据导出平台
特征平台
AI Agent 工具
如果每个入口都自己做权限,最后一定出问题。
更合理的架构是:
PDP 是 Policy Decision Point,负责判断“能不能访问”。
PEP 是 Policy Enforcement Point,负责执行“放行、拒绝、脱敏、过滤、审计”。
这个设计的好处是,策略统一、执行分布、审计集中。
Apache Ranger 的设计就比较接近这个方向。它提供大数据生态里的集中式安全管理、细粒度访问控制和集中审计,也支持基于用户、组、访问类型、IP、访问时间等动态属性做授权,并支持基于资源分类标签做授权。
五、字段脱敏不是“打星号”:要区分静态、动态、去标识化和匿名化
很多人一提脱敏,就想到:
138****5678
张*
440***********1234
这只是最浅的一层。
在数据平台里,脱敏至少要区分四件事:
静态脱敏
动态脱敏
去标识化
匿名化
1. 静态脱敏:生成一份不可逆或低风险副本
静态脱敏通常用于测试环境、开发环境、外部交付数据集。
比如把生产库里的手机号、身份证、地址处理后,生成一份测试数据。
优点是访问成本低,适合研发测试。
缺点是数据一旦生成副本,就需要继续管理副本的生命周期。很多泄露就是从“测试数据”开始的。
静态脱敏适合这些场景:
测试环境数据
外包开发数据
演示数据
培训数据
离线分析样本
但要注意,静态脱敏不是简单替换。要保证:
格式可用:手机号看起来仍然像手机号
分布合理:年龄、城市、金额分布不要严重失真
关联一致:同一个用户在多张表里的脱敏 ID 要一致
不可逆:不能通过规则反推出原文
2. 动态脱敏:运行时根据权限返回不同结果
动态脱敏更适合生产数据查询。
同一张表,同一个字段,不同人看到不同结果。
客服主管:138****5678
普通运营:138********
数据安全员:完整手机号,但必须有工单和审批
算法工程师:hash(user_id),不看手机号
Google BigQuery 的列级数据脱敏就是典型例子:可以创建数据策略,把脱敏规则和访问主体绑定到策略标签,查询运行时根据用户角色应用脱敏规则;Google 也建议在数据策略级别授予 Masked Reader,避免项目级授权带来过度权限。
动态脱敏的关键是:脱敏发生在数据访问引擎侧,而不是前端页面侧。
只在前端打星号没用。别人可以绕过前端,从 SQL、API、导出任务、日志、缓存里拿到原文。
3. 去标识化:让数据暂时脱离直接身份
去标识化常见做法包括:
哈希
加盐哈希
Tokenization
替换 ID
泛化
截断
分桶
比如把 user_id 替换成 token_id,把精确年龄改成年龄段,把精确地址改成城市或区县。
去标识化不等于匿名化。只要还能通过额外信息重新识别个人,它仍然属于需要保护的数据。
《个人信息保护法》也要求个人信息处理者采取加密、去标识化等安全技术措施。
4. 匿名化:理论上无法识别到个人
匿名化比去标识化要求更高。真正匿名化后,数据不应再能识别到特定个人,也无法复原。
但工程上要谨慎使用“匿名化”这个词。很多所谓匿名化数据,只是去掉姓名手机号,但保留了位置轨迹、设备 ID、时间序列、行为序列。只要组合起来能重新识别,就不是真匿名。
所以我建议团队内部少说“我们已经匿名化”,多说清楚:
我们做了哪些处理?
是否可逆?
是否保留关联键?
是否可被重识别?
是否可用于模型训练?
是否允许外发?
5. 常见字段脱敏策略表
| 字段类型 | 示例 | 推荐处理 |
|---|---|---|
| 手机号 | 13812345678 | 展示后四位、hash、token |
| 身份证 | 4403... | 默认禁止访问,必要时只展示后四位 |
| 姓名 | 张三 | 姓氏保留或全掩码 |
| 地址 | 小区门牌号 | 降精度到城市 / 区县 |
| 位置轨迹 | 经纬度序列 | 聚合、栅格化、模糊化 |
| 健康数据 | 血压、心率、疾病标签 | 高敏,强审批,最小化使用 |
| 金融账户 | 银行卡、账户号 | token 化或后四位 |
| 设备 ID | IMEI、MAC、SN | hash / token,限制跨域关联 |
| 图像视频 | 人脸、儿童图像 | 高敏,控制采集、存储、调用和留存 |
| 模型特征 | 用户风险分、画像标签 | 按推断敏感度分级,限制导出 |
脱敏策略不要只看字段名,还要看数据语义。比如 score 这个字段,如果是考试分数可能一般敏感,如果是信用风险分、健康风险分,就可能很敏感。
六、行级、列级、对象级:权限粒度要拆开看
权限粒度一般可以分为几层。
系统级:能不能登录平台
功能级:能不能使用查询、导出、审批、配置功能
数据集级:能不能访问某个库、表、主题、数据产品
行级:能不能访问某些区域、租户、客户、项目的数据
列级:能不能访问手机号、地址、健康指标等字段
单元格级:某些行 + 某些列的组合控制
动作级:能不能读、写、导出、共享、训练模型
目的级:为了什么业务目的访问
很多事故不是因为完全没有权限,而是权限粒度太粗。
比如一个销售只能看自己负责客户的数据,但系统只做了表级权限。结果销售拿到了全国客户表。
这就是缺少行级权限。
再比如一个运营可以看用户画像,但不应该看到身份证、手机号、家庭住址。系统只做了表级权限,结果运营看到了全字段。
这就是缺少列级权限。
再比如一个接口返回用户对象,里面包含 phone、address、id_card,前端只是不用这些字段,但接口仍然返回了。
这就是对象属性级授权缺失。
OWASP API Security Top 10 2023 里,API1 是对象级授权缺失,API3 是对象属性级授权缺失;OWASP 特别强调,只要 API 通过对象 ID 访问数据,就要在每个访问数据源的函数里做对象级授权检查。
所以,后端接口不要返回“前端可能用得上”的全量对象。应该返回“这个用户、这个场景、这个动作允许看到的字段”。
一个比较安全的接口设计是:
{
"user_id": "u_123",
"name": "张*",
"phone": "138****5678",
"city": "深圳",
"risk_level": "中",
"masked": true,
"policy_id": "pii_phone_read_masked",
"trace_id": "trace_20260508_001"
}
返回值里甚至可以带上是否脱敏、命中的策略和 trace_id,方便排查和审计。
七、审计日志不是“记录一下”:要能追责、能告警、能复盘
很多系统都有日志,但真正出事时会发现:
不知道谁查的
不知道查了哪些字段
不知道有没有导出
不知道导出了多少行
不知道当时为什么有权限
不知道权限是谁批的
不知道数据流到哪里去了
这说明日志只是“系统日志”,不是“审计日志”。
审计日志的目标不是给研发排 bug,而是回答安全和合规问题:
谁,在什么时候,从哪里,用什么身份,基于什么审批,访问了什么数据,做了什么动作,拿到了什么结果,系统为什么允许,后续有没有异常?
1. 审计日志应该记录哪些字段?
一条高质量的数据访问审计日志,至少包括:
| 字段 | 说明 |
|---|---|
| event_id | 事件唯一 ID |
| trace_id | 链路追踪 ID |
| subject_id | 用户 / 服务账号 / Agent ID |
| subject_type | 人、服务、应用、脚本、Agent |
| department / project | 所属部门和项目 |
| action | read、export、update、share、train_model |
| resource | 库、表、字段、API、数据产品 |
| resource_tags | pii_phone、sensitive_health、trade_secret |
| data_level | L1-L5 |
| row_count | 返回 / 导出行数 |
| column_list | 访问字段列表 |
| mask_applied | 是否脱敏 |
| policy_id | 命中的权限策略 |
| decision | allow / deny / mask / row_filter |
| purpose | 访问目的 |
| ticket_id | 审批单、工单、项目单 |
| client_ip | 来源 IP |
| device_id | 设备标识 |
| user_agent | 客户端信息 |
| risk_score | 风险评分 |
| result_status | 成功 / 失败 |
| timestamp | 时间戳 |
尤其要注意服务账号和 Agent。未来很多访问不是人直接发起的,而是系统、脚本、调度任务、AI Agent 发起的。审计里必须能区分:
张三本人访问
张三触发的 Agent 访问
营销系统服务账号访问
离线任务访问
第三方接口访问
否则出了问题会互相甩锅。
2. 审计日志要防篡改
审计日志如果能被管理员随便删,那就没有审计意义。
建议:
审计日志和业务日志分离
审计日志单独权限管理
关键日志追加写,不允许覆盖
高敏访问日志进入不可篡改存储或对象锁
日志访问本身也要审计
定期归档和留存
《网络安全法》要求网络运营者采取监测、记录网络运行状态和网络安全事件的技术措施,并按规定留存相关网络日志不少于六个月。《个人信息保护法》则要求个人信息保护影响评估报告和处理情况记录至少保存三年。
实际落地时,日志留存周期不要只看一个统一数字,要按数据类型和业务风险分层设计:
普通访问日志:6-12 个月
敏感数据访问日志:至少 1-3 年
个人信息影响评估记录:至少 3 年
高风险导出 / 外发 / 出境记录:按法务和监管要求延长
安全事件相关日志:冻结留存,直到事件关闭
3. 审计要能实时告警
审计如果只是事后查,那价值少一半。
高风险行为应该实时触发告警:
短时间批量导出高敏数据
非工作时间访问大量用户信息
首次访问 L4/L5 数据
跨部门访问客户数据
服务账号突然访问非授权数据域
失败访问次数异常增加
查询字段包含多个敏感标签
绕过 BI 直接查底表
Agent 调用了不该调用的数据工具
同一账号从异常地区登录并访问敏感数据
这里可以做一个简单规则:
风险分 = 数据级别分 + 行为分 + 场景分 + 异常分
比如:
访问 L4 数据:+40
导出动作:+30
非工作时间:+10
首次访问该数据域:+10
无审批单:直接拒绝
风险分超过 70:告警
风险分超过 90:阻断 + 安全团队介入
不要一上来追求完美算法。先把高风险规则跑起来,比空谈 AI 风控更有用。
八、最小权限怎么落地:权限要有生命周期
“最小权限”很多人都知道,但很少公司做得好。
AWS IAM 文档对最小权限的定义很直接:只授予完成任务所需的权限,不给额外权限。AWS 也建议定期检查和移除不再需要的用户、角色、权限、策略和凭证,并使用访问活动生成更细粒度的权限策略。
落到企业数据平台,我建议把最小权限拆成六个动作。
1. 默认拒绝
默认不要给权限。
新用户、新角色、新服务账号、新 Agent,默认不可访问敏感数据。
default deny
这是权限系统最重要的一行。
2. 按需申请
权限申请必须说清楚:
访问什么数据
为什么访问
用于哪个项目
访问多久
是否需要原文
是否需要导出
是否涉及个人信息
是否涉及敏感个人信息
是否向第三方共享
是否用于模型训练
申请单不是形式主义,它是后续审计、复盘和合规证明的依据。
3. 分级审批
不是所有权限都走同一个审批流。
L1/L2:部门内审批或自动授权
L3:数据 Owner + 直属负责人审批
L4:数据 Owner + 安全 / 合规审批
L5:专项评估 + 管理层审批 + 安全负责人确认
越敏感,审批越严格。
越高频,越应该产品化为数据服务,而不是反复人工审批。
4. 限时授权
权限一定要有过期时间。
临时排障:4 小时
项目分析:7 天
营销活动:活动周期内
客户交付:合同周期内
长期岗位权限:季度复核
永久权限是权限膨胀的根源。
5. 定期复核
至少按季度做权限复核:
谁拥有 L3+ 数据权限?
哪些权限 30/60/90 天没用过?
哪些人离岗、转岗、离职但权限还在?
哪些服务账号长期未使用?
哪些角色权限明显过大?
哪些导出权限不合理?
复核不是发个 Excel 让部门经理点确认,而是要基于真实访问日志给出建议:
过去 90 天未使用,建议回收
访问量异常,建议复核
权限高于岗位需要,建议降级
仅访问脱敏数据即可,建议取消原文权限
6. Break Glass 紧急权限
生产事故、重大客户问题、安全事件时,确实可能需要临时高权限。
这类权限不要偷偷开,要设计 Break Glass 机制:
必须填写原因
自动通知安全和负责人
权限极短时间有效
全程高等级审计
事后必须复盘
这比“临时给管理员开一下”安全得多。
九、合规流程怎么设计:别把法务放到最后
很多团队的习惯是:产品做完了,技术上线了,最后问法务:“这个合规吗?”
这是最危险的做法。
数据合规必须前置到需求和架构阶段。因为等系统上线后再补,往往意味着重构数据链路、重做授权、重写隐私政策、重签合同。
1. 合规不是拦路虎,而是设计约束
做数据产品时,至少要问:
这个数据是否属于个人信息?
是否属于敏感个人信息?
是否涉及未成年人?
是否涉及重要数据?
是否有明确处理目的?
是否满足最小必要?
是否需要用户同意或单独同意?
是否会向第三方提供?
是否会跨境?
是否用于自动化决策?
是否用于 AI 模型训练?
是否有删除和撤回机制?
《个人信息保护法》要求处理个人信息应遵循公开、透明原则,明示处理目的、方式和范围;个人信息保存期限应为实现处理目的所必要的最短时间。
这两句话翻译成工程语言就是:
不要悄悄采。
不要无限期存。
不要超目的用。
不要为了方便多拿。
2. 哪些场景要做个人信息保护影响评估?
《个人信息保护法》明确要求,在处理敏感个人信息、利用个人信息进行自动化决策、委托处理 / 向其他个人信息处理者提供 / 公开个人信息、向境外提供个人信息,以及其他对个人权益有重大影响的处理活动前,应进行个人信息保护影响评估。
工程上可以把它做成流程触发器:
只要数据标签包含 sensitive_personal_information -> 触发评估
只要 action = export_to_third_party -> 触发评估
只要 purpose = automated_decision -> 触发评估
只要 destination = overseas -> 触发评估
只要 subject_age < 14 -> 触发更严格规则
不要靠人记。要靠系统触发。
3. 数据出境要单独管理
很多企业一接入海外 SaaS、跨境 CRM、全球 BI、海外云、跨国团队协作,就可能涉及数据出境。
2024 年《促进和规范数据跨境流动规定》对数据出境场景做了进一步细化,比如关键信息基础设施运营者向境外提供个人信息或重要数据,或者非关基数据处理者向境外提供重要数据、达到一定个人信息或敏感个人信息数量阈值时,应申报数据出境安全评估。
这部分建议不要只让技术团队判断,必须和法务、安全、业务一起建立流程。
最低限度要记录:
出境数据类型
是否包含个人信息
是否包含敏感个人信息
是否包含重要数据
境外接收方
处理目的
处理方式
保存期限
安全措施
合同条款
用户告知和同意情况
评估结论
4. 网络数据安全管理进入更细化阶段
《网络数据安全管理条例》已于 2025 年 1 月 1 日起施行,适用于在中国境内开展网络数据处理活动及其安全监督管理,也对境外处理中国境内自然人个人信息的特定情形作出适用规定。
这意味着企业不能再把数据安全当成“安全部门自己的事”。它会影响:
产品设计
数据采集
平台架构
权限审批
日志留存
第三方合作
数据出境
AI 训练
客户交付
安全事件响应
合规流程要嵌入研发流程,而不是上线前补签一个表。
十、一套可落地的参考架构
下面给一套我比较推荐的数据权限与隐私治理架构。
这套架构有几个关键点。
第一,身份要统一。人、服务账号、外部应用、AI Agent 都必须有明确身份。
第二,策略要统一。不要让每个系统各写一套权限规则。
第三,数据要打标签。没有分类分级标签,就没有自动化治理。
第四,执行要靠近数据。不要只在前端做控制,要在查询引擎、API 网关、数据服务层做强制执行。
第五,审计要贯穿全链路。允许、拒绝、脱敏、导出、共享、训练模型,都要记录。
第六,流程要系统化。审批、影响评估、出境评估、权限复核都要有系统承载。
十一、一个更工程化的策略示例
下面用伪代码表达一个策略决策逻辑。
package data.authz
default allow = false
# 基础读权限
allow {
input.action == "read"
input.subject.status == "active"
input.resource.level <= input.subject.clearance_level
input.resource.domain in input.subject.allowed_domains
input.context.purpose in input.subject.allowed_purposes
not high_risk
}
# 高敏数据必须有审批单
allow {
input.action == "read"
input.resource.level == "L4"
input.context.ticket.status == "approved"
input.context.ticket.expire_at > input.context.now
input.context.purpose == input.context.ticket.purpose
input.subject.id == input.context.ticket.applicant
not high_risk
}
# 导出必须单独授权
allow {
input.action == "export"
input.context.ticket.status == "approved"
input.context.ticket.allow_export == true
input.resource.level <= "L3"
}
# 风险过高直接拒绝
high_risk {
input.context.risk_score >= 90
}
脱敏策略可以单独返回:
{
"decision": "allow",
"masking": {
"phone": "last4",
"id_card": "deny",
"address": "city_level",
"health_metric": "aggregate_only"
},
"row_filter": "tenant_id = 't_001'",
"audit_level": "high",
"expire_at": "2026-05-15T23:59:59"
}
注意,这里不是简单返回 allow / deny,而是返回一组访问约束:
是否允许
哪些字段要脱敏
哪些行可见
是否允许导出
审计等级是多少
权限什么时候过期
这才适合数据平台。
十二、业内最佳实践:真正成熟的团队通常会做这 10 件事
1. 建立数据 Owner 制度
每张核心表、每个数据产品、每个高敏数据域,都要有 Owner。
Owner 不一定是技术负责人,很多时候应该是业务负责人。因为技术知道数据在哪,业务知道数据该不该用。
2. 用数据产品替代原始表暴露
不要让所有人都直接查底表。
更好的方式是把数据封装成数据产品:
用户增长分析数据集
客户服务画像数据集
设备健康监控数据集
营销触达名单服务
风控特征服务
每个数据产品有清晰的用途、字段、口径、权限、SLA 和审计策略。
3. 高敏字段默认不可见
手机号、身份证、金融账户、精确地址、健康数据、未成年人信息、人脸图像,默认不可见。
需要看时,走审批、限时授权、动态脱敏、高等级审计。
4. 导出权限单独控制
“能查询”不等于“能导出”。
导出是更高风险动作。很多数据泄露不是发生在查询,而是发生在导出后的 Excel、CSV、压缩包、网盘、邮件。
导出至少要控制:
导出人
导出原因
导出字段
导出行数
导出文件水印
下载次数
有效期
是否可转发
是否加密
5. 生产数据不要直接给研发测试
研发排障可以有临时权限,但不能让生产敏感数据长期裸奔到开发环境。
推荐:
开发环境用静态脱敏数据
排障用临时授权 + 动态脱敏
高敏原文访问必须 Break Glass
6. 服务账号权限比人更要管
服务账号经常被忽视,但风险很高。
它们通常权限大、生命周期长、没人复核、密钥到处放。
服务账号必须做到:
绑定负责人
绑定用途
最小权限
密钥轮换
禁止共享
定期复核
异常访问告警
7. 敏感数据用水印和溯源
对导出文件、报表截图、接口返回,可以加可见或不可见水印。
水印不是万能的,但能提升泄露追溯能力。
8. 权限变更要进审计
不仅数据访问要审计,权限变更也要审计。
谁创建了角色?
谁修改了策略?
谁批准了高敏权限?
谁给服务账号加了导出权限?
谁关闭了脱敏规则?
这些操作比普通查询更敏感。
9. 权限和数据血缘联动
上游字段是敏感字段,下游加工后仍可能敏感。
例如:
手机号 -> hash_phone -> 用户唯一标识
身份证 -> 年龄 + 性别 + 地区
位置轨迹 -> 常驻地点 + 出行规律
健康指标 -> 健康风险标签
下游字段不能因为改了名字就降级。要结合血缘、加工逻辑和可识别性重新判断。
10. 把合规要求产品化
不要靠人肉提醒“这个要做 PIA”。
合规触发条件要产品化:
选择敏感个人信息字段 -> 自动触发影响评估
选择导出给第三方 -> 自动触发共享评估
选择境外接收方 -> 自动触发出境评估
选择自动化决策用途 -> 自动触发算法合规评估
系统能自动拦截,才叫落地。
十三、常见坑:这些做法看似安全,其实很危险
坑 1:只做菜单权限
菜单权限只能控制页面入口,控制不了 SQL、API、导出、调度任务、缓存、日志。
坑 2:只在前端脱敏
前端脱敏挡不住接口抓包、SQL 查询、导出任务、后端日志。
坑 3:管理员拥有所有数据原文权限
系统管理权限和数据访问权限必须分离。
坑 4:审批通过后永久有效
权限没有过期时间,就会越积越多。
坑 5:只记录查询,不记录结果规模
查 10 行和查 1000 万行,风险完全不同。审计必须记录返回行数、导出行数、字段列表。
坑 6:忽视下游数据
上游敏感字段加工到下游后,仍然可能敏感。要用血缘传播标签。
坑 7:测试环境没人管
测试环境经常是泄露重灾区。脱敏数据、测试账号、临时文件、日志都要管。
坑 8:AI Agent 没有独立权限
Agent 不能继承用户的全部权限,更不能拿管理员 Token 到处跑。Agent 应该有独立身份、工具白名单、数据权限、调用审计和风险限制。
十四、对业界的影响:数据安全正在从成本中心变成商业能力
过去很多公司把权限和隐私当成成本:合规要求、审计压力、安全部门 KPI。
但现在这个认知要变。
成熟的数据安全治理,至少能带来五类商业价值。
1. 提升数据复用效率
没有治理时,安全团队会倾向于“一刀切”:不给看,不给导,不给接。
有了分类分级、动态脱敏、行列级权限和审计,反而可以让更多人安全地用数据。
安全不是让数据不能用,而是让数据可以被放心使用。
2. 降低客户和监管风险
B2B、B2G、金融、医疗、教育、IoT、智慧城市项目里,客户越来越关心:
数据怎么分级?
权限怎么控制?
是否支持审计?
是否能脱敏?
是否能私有化?
是否满足等保和隐私要求?
是否支持数据出境评估?
这些能力会直接影响中标、续约和客户信任。
GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》是现行国家标准,等保体系仍然是很多企业安全建设和客户验收的重要基础。
3. 支撑 AI 和 Agent 落地
没有权限和隐私治理,企业 AI 很难放心上线。
因为 Agent 会主动调用工具、查数据、生成答案、触发流程。如果没有数据级权限控制,它可能把不该看的数据查出来,把不该说的信息说出去。
未来企业 AI 的核心不是“模型会不会回答”,而是:
模型能不能只看该看的数据?
能不能解释用了哪些数据?
能不能避免泄露敏感信息?
能不能审计每次工具调用?
能不能按业务目的限制回答范围?
Gartner 预测,到 2028 年,50% 的组织会因为未验证 AI 生成数据增长而采用零信任数据治理姿态;同时它也提到主动元数据管理会成为关键能力。
这其实说明了一件事:数据治理和 AI 治理正在合流。
4. 降低内部协作成本
没有统一权限体系时,每次要数据都靠微信群、邮件、口头确认。
有统一流程后:
业务方知道怎么申请
数据 Owner 知道怎么审批
安全团队知道怎么审计
平台团队知道怎么自动执行
管理层知道风险在哪里
协作成本会明显下降。
5. 形成平台产品竞争力
如果你做的是数据平台、IoT 平台、SaaS 平台、行业数字化平台,权限和隐私能力本身就是产品卖点。
客户会为这些能力买单:
多租户隔离
客户级数据权限
字段级脱敏
审计报表
合规证明
私有化部署
数据最小化
安全 API
模型训练数据保护
安全能力越产品化,越容易规模化交付。
十五、未来潜力:从“管访问”走向“管数据生命全周期”
权限和隐私治理未来会继续往几个方向演进。
1. 从静态权限到动态风险权限
未来权限不是配置一次就完,而是实时根据风险调整。
同一个人
同一份数据
白天在公司电脑访问:允许脱敏查询
半夜在陌生 IP 批量导出:拒绝并告警
这需要结合行为分析、设备信任、地理位置、访问历史和数据级别。
2. 从字段脱敏到隐私增强计算
脱敏只能解决一部分问题。对于联合建模、跨机构数据分析、医疗金融等场景,未来会更多使用隐私增强技术。
比如:
差分隐私
联邦学习
安全多方计算
同态加密
可信执行环境
机密计算
NIST 在 2025 年发布的差分隐私指南中提到,差分隐私可以帮助组织在保护个人数据的同时,从数据库中获得有用洞察。
这些技术不会替代权限治理,但会扩展“在不暴露原始数据的情况下使用数据”的能力边界。
3. 从数据治理到 AI 治理
未来数据权限不只控制人,还要控制模型和 Agent。
需要回答:
模型训练能不能用这份数据?
训练后模型是否记住了敏感信息?
Agent 能不能访问这个字段?
Agent 生成答案时是否引用了高敏数据?
提示词里有没有泄露客户数据?
向量库里有没有个人信息?
RAG 检索结果是否经过权限过滤?
这意味着权限系统要进入:
特征库
向量数据库
模型训练平台
Prompt 管理
Agent 工具调用
模型输出审计
4. 从被动审计到主动治理
过去审计是出事后查日志。未来会变成主动治理:
发现某字段被识别为敏感 -> 自动提高级别
发现下游表继承敏感字段 -> 自动加脱敏策略
发现某角色权限长期不用 -> 自动建议回收
发现某 Agent 访问异常 -> 自动阻断
发现某数据产品缺 Owner -> 自动下线风险提示
这就是 Active Metadata,也就是活的元数据。
十六、落地路线:90 天怎么把体系跑起来?
最后给一个比较现实的落地计划。
第 1 阶段:0-30 天,先摸清家底
目标不是做大平台,而是搞清楚风险在哪。
要做:
盘点核心数据源
识别 Top 50 核心表
识别个人信息和敏感字段
建立 L1-L5 分级模型
确定数据 Owner
盘点现有角色和权限
找出高危权限:管理员、导出、生产库直连、服务账号
检查审计日志是否可用
产出:
数据分类分级清单
高敏字段清单
权限风险清单
服务账号清单
审计缺口清单
第一版权限策略
第 2 阶段:30-60 天,先控住高风险
优先处理最容易出事的地方。
要做:
高敏字段动态脱敏
导出权限单独审批
L4 数据访问强审批
生产数据研发访问限时化
服务账号绑定 Owner
敏感访问日志补齐
批量导出告警
离职转岗权限回收
产出:
高敏数据访问流程
字段脱敏规则
导出审批流程
审计报表
风险告警规则
第 3 阶段:60-90 天,体系化和自动化
开始把能力产品化。
要做:
建设数据目录和标签体系
接入元数据和血缘
策略中心统一管理
行级 / 列级权限接入查询引擎
权限申请和审批系统化
季度权限复核机制
PIA / 出境 / 第三方共享流程嵌入需求流程
产出:
统一权限架构
数据标签体系
策略管理平台
合规流程平台
权限复核机制
安全运营看板
90 天后的长期建设
长期方向是:
策略即代码
实时风险评分
数据水印
隐私计算
AI Agent 权限治理
向量库权限过滤
模型训练数据合规
跨租户数据隔离
客户级审计报告
别一上来就追求一步到位。数据安全治理真正有效的路径,是先控高风险,再做自动化,最后做智能化。
十七、最后总结:权限和隐私的本质,是让数据可控地流动
很多人把数据安全理解成“不让用”。
其实不是。
好的数据安全治理,目标不是把数据锁死,而是让数据在可控、可审计、可追责的前提下流动起来。
一句话总结:
数据分类分级决定保护强度,角色权限决定访问边界,字段脱敏降低暴露风险,审计日志提供追责证据,最小权限控制风险半径,合规流程保证业务走得长远。
真正成熟的大数据平台,不是只有算力、存储、实时计算和 BI,而是能回答:
数据从哪里来?
是什么级别?
谁负责?
谁能看?
怎么看?
为什么看?
看了什么?
有没有脱敏?
有没有导出?
出了问题能不能追?
能回答这些问题,数据平台才不是“数据仓库”,而是企业可信的数据底座。
附:一页落地检查清单
| 模块 | 检查项 |
|---|---|
| 分类分级 | 是否有 L1-L5 分级?是否识别个人信息、敏感个人信息、重要数据? |
| 数据目录 | 是否有数据 Owner、字段标签、血缘、使用说明? |
| 角色权限 | 是否区分岗位权限、项目权限、临时权限、服务账号权限? |
| 行列控制 | 是否支持行级过滤、列级授权、字段动态脱敏? |
| 导出控制 | 查询和导出是否分开授权?导出是否审批、限时、水印、审计? |
| 审计日志 | 是否记录人、时间、资源、字段、动作、结果、策略、审批单? |
| 最小权限 | 是否默认拒绝、限时授权、定期复核、自动回收? |
| 合规流程 | 是否支持个人信息影响评估、第三方共享评估、出境评估? |
| 服务账号 | 是否绑定 Owner、用途、过期时间和密钥轮换? |
| AI / Agent | 是否有独立身份、工具白名单、数据权限、调用审计? |
参考资料
- 《中华人民共和国数据安全法》关于数据分类分级保护制度的规定。(国家统计局)
- GB/T 43697-2024《数据安全技术 数据分类分级规则》。(国家标准开放平台)
- GB/T 35273-2020《信息安全技术 个人信息安全规范》。(国家标准开放平台)
- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》。(国家标准开放平台)
- 《中华人民共和国个人信息保护法》关于个人信息处理规则、安全措施、合规审计和影响评估的规定。(国家邮政局)
- 《中华人民共和国网络安全法》关于网络日志留存、数据分类、重要数据备份和加密等要求。(国家市场监督管理总局)
- 《网络数据安全管理条例》,2025 年 1 月 1 日起施行。(民政部)
- 《促进和规范数据跨境流动规定》关于数据出境安全评估、标准合同和认证适用条件。(国家市场监督管理总局)
- NIST SP 800-207 Zero Trust Architecture。(NIST 技术系列出版物)
- OWASP API Security Top 10 2023。(OWASP 基金会)
- Apache Ranger 关于细粒度访问控制、集中审计、标签授权的说明。(Apache Wiki)
- Apache Atlas 关于元数据、分类、血缘和 Ranger 集成的说明。(Apache Atlas)
- Google BigQuery 关于列级数据脱敏、策略标签和最小权限的说明。(Google Cloud Documentation)
- AWS IAM 关于最小权限、访问分析和定期移除无用权限的最佳实践。(AWS文档)
- NIST 关于差分隐私指南和隐私增强技术的说明。(NIST)
- Gartner 关于零信任数据治理和 AI 生成数据风险的趋势预测。(Gartner)