写点什么

详解 Apache Sentry->Ranger 平滑升级方案

  • 2023-02-25
    中国香港
  • 本文字数:1051 字

    阅读完需:约 3 分钟

详解Apache Sentry->Ranger平滑升级方案

本文分享自华为云社区《【平滑上云】Apache Sentry->Ranger平滑升级方案》,作者: 啊喔 YeYe 。

背景介绍



CDH 是 Apache Hadoop 和相关项目的最完整、最受测试和最流行的发行版,常常是许多客户建设 IDC 大数据平台中的首选。早期 CDH 版本只提供 sentry 的权限管理方案,后期新版本提供 ranger 作为替换方案,而 CDH 只有商业版本提供 sentry 升级 ranger 的服务,开源社区版并未提供这样的能力。本文主要探讨如何平滑解决 sentry 到 ranger 升级过程中的权限迁移问题。

Sentry 权限介绍


Sentry 是典型的 RABC 权限管理系统,通过用户-用户组-角色关联,最终通过 role 来进行赋权,一般只用于表级授权,存在三种权限类型:select/insert/all(*)。sentry 关键表分析



  • sentry_role: 角色列表

  • sentry_group;用户组列表

  • sentry_role_group_map;角色、用户映射关系表

  • sentry_db_privilege: 表权限信息表

  • sentry_role_db_privilege_map: 权限、角色映射关系表


举例


表 bi_plus.data_xy_b_error_event 赋予了 XX 用户 select 权限,数据模型如下:


Sentry->Ranger 方案分解


Ranger 基于策略 policy 的 PBAC 赋权策略,面向资源授权。转换 sentry 策略我们先需要解决用户、用户组、角色同步问题。


整体迁移策略



用户同步方案


Sentry 不存在用户,一般来自于外部 OpenLdap。Ranger 本身支持外部 LDAP 同步,在华为云MRS 中通过配置 usersync 实例与 LDPA 对接即可实现


用户组同步方案


Sentry 用户组如果来源于外部 Ldap,参考用户同步方案同步用户组即可。如果没有外部 LDAP,通过读取表 sentry_group 获取用户组插入 Ranger 中即可实现。


角色同步方案


角色同步稍比用户、用户组同步复杂需要自行开发工具支持。角色同步时要关联用户、用户组,因此需要先完成用户、用户组同步后再进行角色同步。


策略同步


  1. 分析 sentry 中 hive 表权限,对应每张表生成对应一条 ranger 策略,例如:库表:default.student 生成策略名:default_student。

  2. 根据表权限类型,分解为:select、all(*)、insert 对相关角色 &用户 &用户组进行分组,生成为 ranger 中策略的 Condition 内容


样例


表 bi_plus.data_xy_b_error_event 在 sentry 中实际只有对部分角色用户进行了 select 授权



对应生成的 ranger 策略为: bi_plus_data_xy_b_error_event


FAQ


  1. Sentry 本身不存储用户信息,实际多个客户案例来看一般一个用户对应一个用户组且名称相同,我们基于这个策略进行同步。

  2. Ranger 用户组、用户不区分大小写而 sentry 中如果存在大小写差异的用户组会导致同步失败,这种情况建议改造或者下线其中不规范的用户组命名。


使用华为云大数据产品,提供端到端迁移方案与技术支持。


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
详解Apache Sentry->Ranger平滑升级方案_开发_华为云开发者联盟_InfoQ写作社区