详解Apache Sentry->Ranger平滑升级方案
摘要:本文主要探讨如何平滑解决sentry到ranger升级过程中的权限迁移问题。
本文分享自华为云社区《【平滑上云】Apache Sentry->Ranger平滑升级方案》,作者: 啊喔YeYe 。
背景介绍
![](https://pic2.zhimg.com/80/v2-3625e50e5f1ff471f7ce99a7d72a668d_720w.webp)
CDH是Apache Hadoop和相关项目的最完整、最受测试和最流行的发行版,常常是许多客户建设IDC大数据平台中的首选。早期CDH版本只提供sentry的权限管理方案,后期新版本提供ranger作为替换方案,而CDH只有商业版本提供sentry升级ranger的服务,开源社区版并未提供这样的能力。本文主要探讨如何平滑解决sentry到ranger升级过程中的权限迁移问题。
Sentry权限介绍
Sentry是典型的RABC权限管理系统,通过用户-用户组-角色关联,最终通过role来进行赋权,一般只用于表级授权,存在三种权限类型:select/insert/all(*)。
sentry关键表分析
![](https://pic2.zhimg.com/80/v2-35731a10bbd57c8dcde6d4a9763f0021_720w.webp)
- 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权限,数据模型如下:
![](https://pic1.zhimg.com/80/v2-06456323f53b9b0fcfb1f17856e1e3c8_720w.webp)
Sentry->Ranger方案分解
Ranger基于策略policy的PBAC赋权策略,面向资源授权。转换sentry策略我们先需要解决用户、用户组、角色同步问题。
整体迁移策略
![](https://pic1.zhimg.com/80/v2-dad4f8fba05eb60f92d51e6ed35a7df8_720w.webp)
用户同步方案
Sentry不存在用户,一般来自于外部OpenLdap。Ranger本身支持外部LDAP同步,在华为云MRS 中通过配置usersync实例与LDPA对接即可实现
用户组同步方案
Sentry用户组如果来源于外部Ldap,参考用户同步方案同步用户组即可。如果没有外部LDAP,通过读取表sentry_group获取用户组插入Ranger中即可实现。
角色同步方案
角色同步稍比用户、用户组同步复杂需要自行开发工具支持。角色同步时要关联用户、用户组,因此需要先完成用户、用户组同步后再进行角色同步。
策略同步
- 分析sentry中hive表权限,对应每张表生成对应一条ranger策略,例如:库表:default.student生成策略名:default_student。
- 根据表权限类型,分解为:select、all(*)、insert对相关角色&用户&用户组进行分组,生成为ranger中策略的Condition内容
样例
表bi_plus.data_xy_b_error_event在sentry中实际只有对部分角色用户进行了select授权
![](https://pic1.zhimg.com/80/v2-e5812c80ec7c2665d816d4add5f046fc_720w.webp)
对应生成的ranger策略为: bi_plus_data_xy_b_error_event
![](https://pic3.zhimg.com/80/v2-2f34355f8105b6fd2c7329d159f31c8a_720w.webp)
FAQ
- Sentry本身不存储用户信息,实际多个客户案例来看一般一个用户对应一个用户组且名称相同,我们基于这个策略进行同步。
- Ranger用户组、用户不区分大小写而sentry中如果存在大小写差异的用户组会导致同步失败,这种情况建议改造或者下线其中不规范的用户组命名。
使用华为云大数据产品,提供端到端迁移方案与技术支持。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击