权限全靠管理员拍脑袋?聊聊数据平台里的ABAC和RBAC到底该怎么落地

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 权限全靠管理员拍脑袋?聊聊数据平台里的ABAC和RBAC到底该怎么落地

权限全靠管理员拍脑袋?聊聊数据平台里的ABAC和RBAC到底该怎么落地

作者:Echo_Wish

很多企业在建设大数据平台的时候,最容易忽略的一个问题,不是计算性能,也不是存储成本,而是——权限管理

我见过不少公司,数据平台已经上百TB了,Hive、Spark、Flink、ClickHouse、Lakehouse全都上了,结果权限体系还停留在Excel表格管理阶段。

张三离职了权限没收回;

李四调岗了还能看原来的数据;

外包人员居然能访问核心经营数据;

更离谱的是,有些企业数据库账号直接共用。

很多数据泄露事件,并不是黑客有多厉害,而是权限设计从一开始就有问题。

今天我们就聊聊数据平台权限控制领域最经典的两种模型:

  • RBAC(Role-Based Access Control)
  • ABAC(Attribute-Based Access Control)

它们到底有什么区别?

为什么越来越多的大厂开始从RBAC走向ABAC?

又该如何在大数据平台中真正落地?


先说个真实场景

假设你们公司有这样几个部门:

  • 财务部
  • 研发部
  • 运营部
  • 市场部

数据平台中有以下数据:

订单数据
用户数据
员工薪资
运营报表
研发日志

传统做法通常是:

给张三开订单权限
给李四开薪资权限
给王五开报表权限

人数少的时候没问题。

当企业发展到:

500人
2000人
10000人

以后会发生什么?

权限爆炸。

管理员每天干的事情变成:

开权限
删权限
查权限
补权限
改权限

根本停不下来。

于是RBAC诞生了。


RBAC:角色决定权限

RBAC全称:

Role-Based Access Control

基于角色的访问控制。

核心思想特别简单:

用户 -> 角色 -> 权限

而不是:

用户 -> 权限

例如:

角色:
    财务经理
    财务专员
    数据分析师
    运维工程师

权限:
    查看订单
    查看薪资
    查看报表

关系如下:

张三 -> 数据分析师

数据分析师:
    查看订单
    查看运营报表

用代码实现一个简单RBAC

class RBAC:

    def __init__(self):
        self.roles = {
   
            "analyst": ["read_order", "read_report"],
            "finance": ["read_salary", "read_order"],
            "admin": ["*"]
        }

    def has_permission(self, role, permission):

        perms = self.roles.get(role, [])

        return "*" in perms or permission in perms


rbac = RBAC()

print(
    rbac.has_permission(
        "analyst",
        "read_order"
    )
)

print(
    rbac.has_permission(
        "analyst",
        "read_salary"
    )
)

输出:

True
False

逻辑非常清晰。


RBAC为什么受欢迎

原因就两个字:

简单。

例如企业有1000个员工。

实际上可能只有:

10个角色

管理员只需要维护角色。

新员工来了:

赋予角色

员工离职:

移除角色

结束。

运维成本极低。


但RBAC有一个致命问题

现实世界远比角色复杂。

举个例子。

公司有:

华东销售经理
华南销售经理
华北销售经理

要求:

只能看自己区域数据

怎么办?

RBAC通常这样做:

销售经理_华东
销售经理_华南
销售经理_华北

继续增加:

销售经理_华东_一级
销售经理_华东_二级
销售经理_华东_三级

再增加:

白班
夜班
临时工
外包

很快就变成:

几百个角色

这就是著名的:

Role Explosion(角色爆炸)

很多企业做到后期,角色数量比员工还多。

这时候RBAC开始失控。


ABAC登场

ABAC全称:

Attribute-Based Access Control

基于属性的访问控制。

核心思想:

用户属性
+
资源属性
+
环境属性
=
是否允许访问

不再依赖角色。


什么叫属性

用户属性:

{
   
  "department":"sales",
  "region":"east",
  "level":"manager"
}

资源属性:

{
   
  "table":"order",
  "region":"east"
}

环境属性:

{
   
  "time":"09:00",
  "ip":"10.1.1.1"
}

策略:

销售经理
只能访问
自己区域订单

系统自动计算。


一个简单ABAC实现

def check_permission(user, resource):

    if (
        user["department"] == "sales"
        and
        user["region"] == resource["region"]
    ):
        return True

    return False


user = {
   
    "department": "sales",
    "region": "east"
}

resource = {
   
    "table": "order",
    "region": "east"
}

print(
    check_permission(
        user,
        resource
    )
)

输出:

True

ABAC为什么越来越火

因为大数据平台越来越复杂。

以前权限控制的是:

库
表
字段

现在控制的是:

行权限
列权限
数据标签
敏感等级
数据血缘

例如:

普通员工
只能看到手机号后4位

主管
看到完整手机号

运营
只能看自己区域用户

这种需求RBAC几乎无法优雅解决。

ABAC却非常适合。


大数据平台中的典型落地方案

很多企业会采用:

RBAC + ABAC

混合模式。

而不是二选一。

架构通常如下:

用户
 ↓
RBAC角色校验
 ↓
ABAC策略校验
 ↓
数据访问

例如:

角色:
    数据分析师

RBAC负责:
    是否允许访问订单表

ABAC负责:
    是否允许查看华东区域数据

这样就把:

粗粒度控制
+
细粒度控制

结合起来。


Spark中的数据过滤

假设用户访问:

select * from order_info

系统自动改写SQL:

select *
from order_info
where region='east'

对应实现:

def rewrite_sql(user_region):

    sql = f"""
    SELECT *
    FROM order_info
    WHERE region='{user_region}'
    """

    return sql

这就是很多数据平台常见的:

Row Level Security
行级权限

字段脱敏也是ABAC的重要应用

例如手机号。

数据库原始数据:

13812345678

普通员工看到:

138****5678

管理员看到:

13812345678

实现示例:

def mask_phone(phone):

    return (
        phone[:3]
        + "****"
        + phone[-4:]
    )


role = "user"

if role == "user":
    print(mask_phone("13812345678"))
else:
    print("13812345678")

这实际上也是属性驱动的权限控制。


Apache Ranger为什么这么受欢迎

现在很多企业级数据平台都会引入:

Apache Ranger

原因很简单。

它天然支持:

RBAC
ABAC
数据脱敏
审计日志
策略中心

并且能够统一管理:

Hive
HBase
Kafka
Spark
Trino
Presto

对于大型数据平台来说,几乎已经成为标配。


我的一个观点:未来权限管理拼的不是角色,而是标签

过去企业管理权限:

人 -> 角色 -> 权限

未来越来越像:

人标签
+
数据标签
+
环境标签
+
风险标签

例如:

员工等级=L3

数据等级=敏感

访问地点=公司内网

时间=工作时间

满足条件:

允许访问

否则:

拒绝访问

这种模式更符合零信任架构的发展方向。


写在最后

很多团队建设数据平台时,总把精力放在:

计算快不快
存储省不省
查询稳不稳

却忽略了最关键的问题:

谁能看数据?
谁不该看数据?
看到了以后能不能追溯?

事实上,一个真正成熟的数据平台,最核心的能力从来不是算得快,而是管得住

RBAC解决的是:

你是谁

ABAC解决的是:

你在什么情况下可以访问什么数据

前者让权限管理变得简单,后者让权限管理变得智能。

对于今天的大数据平台而言,最合理的选择已经不是RBAC还是ABAC,而是:

用RBAC构建骨架,用ABAC填充血肉。

只有这样,数据才能真正做到“可用、可控、可追溯”,而不是成为企业数字化道路上的定时炸弹。

目录
相关文章
|
2天前
|
人工智能 缓存 弹性计算
阿里云服务器2核4G5M199元解析:独享型u1实例,性能、适用场景、购买和续费规则介绍
阿里云通用算力型u1实例(ecs.u1-c1m2.large)2核4G、5M带宽、80G ESSD Entry云盘,活动特惠价仅199元/年(官网价3498.36元),企业新老用户同享,续费同价至2027年3月31日,每人限购1台。该实例采用独享型架构,搭载Intel至强可扩展处理器,内网带宽1Gbit/s、收发包30万PPS、云盘IOPS 1万,性能稳定,适合企业官网、中小Web应用、轻量数据库及开发测试等场景。
|
2天前
|
人工智能 JSON 定位技术
GEO站内优化深度指南:内容、JSON-LD与知识地图FAQ
本文将围绕于磊老师的这一理论框架,深入探讨GEO站内优化的核心策略,特别是内容设置、JSON-LD应用以及知识地图构建等关键环节,以FAQ形式为读者提供专业、可信、有深度的指导。
114 2
|
1月前
|
Shell API 持续交付
多模型热切换场景下,​D​М‌X​Α‌РΙ调kimi-k2.6
kimi-k2.6 凭借更强代码能力、更稳长程编写与Agent自主执行能力,成为2026年企业级AI落地关键模型。其核心价值在于长任务可执行性与结构化理解力。配合DМXΑРΙ API平台,可实现稳定鉴权、流式响应、上下文治理与多模型热切换,真正支撑生产环境持续交付。(239字)
|
3月前
|
消息中间件 Prometheus 监控
你还在“出问题才查日志”?用 Prometheus + Grafana,把大数据平台变成“会说话”的系统!
你还在“出问题才查日志”?用 Prometheus + Grafana,把大数据平台变成“会说话”的系统!
263 9
|
2月前
|
缓存 监控 前端开发
《爱企查商品详情页前端性能优化实战》
爱企查企业详情页前端性能优化实战:针对数据量大、接口多、渲染复杂等痛点,通过接口聚合与优先级调度、虚拟滚动/懒加载、智能缓存(IndexedDB)、资源瘦身及HTTP/2推送等分层策略,实现FCP↓62%、LCP↓69%、资源减56%,兼顾实时性与体验。
|
29天前
|
SQL 缓存 druid
一次 OOM 线上排查实录
老项目线上 OOM 踩坑实录!Druid 连接池 SQL 缓存泄漏 + 业务 SQL 拼接双重叠加导致内存溢出,通过堆 dump 定位问题,优化 Druid 配置 + 批量插入预防 OOM。
230 2
|
2天前
|
Java Windows
windows版jdk版本管理工具
JC-jEnv 是 Windows 下轻量级 Java 版本管理工具,支持本地 JDK 管理、远程一键安装(如 `jvms install 21.0.4`)、快速切换(`jvms switch`)及项目级版本隔离,操作简洁,无需手动配环境变量。
181 4
|
2天前
|
API
阿里云微服务引擎 MSE 及 API 网关 2026 年 5 月产品动态
阿里云微服务引擎 MSE 及 API 网关 2026 年 5 月产品动态。
141 11
|
26天前
|
JSON 自然语言处理 API
大模型应用:解锁大模型能力边界:Skill 与 Function Call的底层逻辑与实战应用.117
本文深入解析大模型能力扩展核心机制:Skill(技能)与Function Call(函数调用)的关系。Skill是标准化、可复用的能力单元(如计算器、天气查询),定义“能做什么”;Function Call是执行协议,实现“如何调用”。二者结合突破大模型在实时性、准确性、安全性上的局限,推动其从对话工具进化为可执行复杂任务的智能体。
281 6
|
2天前
|
缓存 关系型数据库 MySQL
百万级并发报表查询:阿里云 AnalyticDB MySQL 高并发最佳实践与调优指南
阿里云 AnalyticDB MySQL 版是业界领先的高并发实时数据仓库,原生支持1000+ QPS,百亿数据下亚秒级响应;依托玄武引擎、实时物化视图与资源组硬隔离,专为百万级并发报表系统设计,已广泛应用于电商、游戏、金融等行业。
60 4
百万级并发报表查询:阿里云 AnalyticDB MySQL 高并发最佳实践与调优指南