数据平台权限的几个层次

几乎每家公司都有自己的大数据平台, 数据平台的权限管理是个要想清楚的事情, 在确定好权限管理的策略前, 可以先聊聊权限管理可以从哪里入手, 这个东西也是分成几个层的.

权限的分层

文件系统层面

类似 Hive 这样的数据平台, 所有的数据都存储在分布式文件系统上(例如 HDFS 或者 类似 AWS S3 的对象存储系统), 那么我们就可以在这个层面进行权限的控制, 例如使用 HDFS 的文件权限模型, 或者使用 AWS IAM 的权限进行控制. 但这种方式有几点不足:

  1. 权限只有在执行数据读取或者写入的阶段才会告知用户没有权限而报错, 用户体验不好
  2. 用户是可以看到数据的 Meta 信息的, 例如 Table 的 column 信息等.
  3. AWS EMR 中不支持一个 EMR cluster 中使用多个 InstanceProfile, 因此无法做到一个集群中执行计算的不同用户能够使用不同的 AWS Credential, 进而无法从这个层面控制权限. 一种解决方案是针对不同的用户使用不同的 EMR 集群提交计算任务, 这种方式会导致集群利用率低; 另一种解决方式就是在 EMR 中使用自己开发的 CredentialProvider 调用 AWS 的 STS 服务获取不同的 Credential 实现权限控制. 这个一句话两句话说不清楚, 改天可以单独写一篇: 如何在一个 EMR 集群中实现多租户的权限控制

数据库层面

文件系统之上就是数据库层面. 几乎所有的数据库都有自己的权限控制系统, Hive 也不例外. 业界可选的方案也很多. 基本上是可以控制表级别的权限: 用户对某个表是否有 CRUD 的权限.

如果觉得现有的方案不能满足需求, 定制化开发也相对容易, 只需要通过解析 SQL 获取到 SQL 代码中想要 CRUD 操作的 Table 的列表, 再请求权限系统看用户是否有对应的权限即可.

Apache Sentry 中权限

在数据库层面控制权限也有缺点: 太粗犷. 例如 SELECT 权限仅仅限制到 Table 一层, 用户一旦有了权限就可以查询全表数据, 就要求 Table 中的数据必须是严格控制的; 如果想控制用户仅仅查询 Table 中数据的子集, 最简单的解决办法是通过 View 的方式实现, 但如果用户多了这个方案就不现实. 业界已有的方案例如 Apache Sentry 和 Apache Ranger 也非常值得考虑或者借鉴.

应用层面

还好, 我们还有应用层. 应用层是指在数据库层面之上构建的数据应用, 最直观的例子就是报表. 在应用层面我们就可以更精细化的控制权限, 例如一个用户仅仅能查询到自己所在部门的业绩, 只需做一个他们部门的报表即可, 查询中写死了他所所在部门的 ID 就控制好权限.

三个层面的权限控制对比如下:

对比项/权限层面 文件系统层 数据库层 应用层
实现方式 通过文件系统控制权限 通过数据库权限控制表级别权限 根据业务需求实现应用层面的权限控制
权限控制粒度 文件级别, 粗犷 Table级别, 粗犷 按需控制, 细致
实现难度 简单 简单 复杂, 需要业务开发
优点 容易兼容多中计算引擎 现有成熟方案实现较多 按需细粒度控制
缺点 AWS EMR 单集群不支持多租户权限 多种计算引擎整合麻烦, 例如 Spark 和 Hive 需要开发

选择原则

总结几个原则, 欢迎吐槽:

Least Privilege Principle

权限一律给到最小, 最容易犯的错误就是只读权限: 如果只有只读权限, 那就一定不会给写权限, 避免误操作的发生.

只读权限尽量贯彻到文件系统层

一般数据平台都会有只读权限的需求, 例如 Presto 集群作为 ad-hoc 查询, 基本上不会写 ETL 后的数据库, 那么从文件系统上限制 Presto 集群只有只读权限就非常合适, 确保一定不会有人写入数据到线上库

保留所有的访问日志

无论哪种方式的访问, 必须保留访问日志, 方便后续定位问题. 这一点在 AWS S3 上就很容实现, 直接通过 Access Log 功能即可保留访问日志.

-- EOF --

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 118,387评论 1 239
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 51,599评论 1 200
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 73,683评论 0 167
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 36,160评论 0 127
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 42,971评论 1 205
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 35,672评论 1 124
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 27,638评论 2 206
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 26,785评论 0 119
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 25,740评论 5 172
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 29,822评论 0 178
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 27,043评论 1 168
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 28,308评论 1 178
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 22,618评论 0 25
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 25,218评论 2 164
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 29,065评论 3 172
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 24,062评论 0 4
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 24,108评论 0 113
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 30,260评论 2 188
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 30,690评论 2 188

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,637评论 2 89
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 4,811评论 0 9
  • 滴滴答答的背景音乐里 整个舞台都是颠倒的 我的春风正站在舞台中央 并肩站在他身侧的是他的春风 我站在昏暗的角落里 ...
    zero007阅读 293评论 8 9
  • 【日精进打卡第171天】 【知~学习】 《六项精进》大纲2遍 共176遍 《大学》大纲2遍 共176遍 【经典名句...
    _哆啦阅读 74评论 0 0
  • 意外和死亡,不知道哪一个先来临。今天突然想,如果我还可以活100天,我该如何度过。 有了这个想法,但是没有想得太多...
    liang敏敏阅读 809评论 0 2