详解Apache Sentry->Ranger平滑升级方案
摘要:本文主要探讨如何平滑解决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中即可实现。
角色同步方案
角色同步稍比用户、用户组同步复杂需要自行开发工具支持。角色同步时要关联用户、用户组,因此需要先完成用户、用户组同步后再进行角色同步。
策略同步
- 分析sentry中hive表权限,对应每张表生成对应一条ranger策略,例如:库表:default.student生成策略名:default_student。
- 根据表权限类型,分解为:select、all(*)、insert对相关角色&用户&用户组进行分组,生成为ranger中策略的Condition内容
样例
表bi_plus.data_xy_b_error_event在sentry中实际只有对部分角色用户进行了select授权

对应生成的ranger策略为: bi_plus_data_xy_b_error_event

FAQ
- Sentry本身不存储用户信息,实际多个客户案例来看一般一个用户对应一个用户组且名称相同,我们基于这个策略进行同步。
- Ranger用户组、用户不区分大小写而sentry中如果存在大小写差异的用户组会导致同步失败,这种情况建议改造或者下线其中不规范的用户组命名。
使用华为云大数据产品,提供端到端迁移方案与技术支持。
详解Apache Sentry->Ranger平滑升级方案的更多相关文章
- Nginx版本平滑升级方案
背景:由于负载均衡测试服务器中nginx版本过低,存在安全漏洞,查询相关修复漏洞资料,需要采取nginx版本升级形式对漏洞进行修复. Nginx平滑升级方案 1.案例采用版本介绍 旧版本 nginx- ...
- 详解k8s一个完整的监控方案(Heapster+Grafana+InfluxDB) - kubernetes
1.浅析整个监控流程 heapster以k8s内置的cAdvisor作为数据源收集集群信息,并汇总出有价值的性能数据(Metrics):cpu.内存.网络流量等,然后将这些数据输出到外部存储,如Inf ...
- Sentry-CLI 使用详解(2021 Sentry v21.8.x)
内容源于:https://docs.sentry.io/platforms/javascript/guides/vue/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创 ...
- 分布式ID详解(5种分布式ID生成方案)
分布式架构会涉及到分布式全局唯一ID的生成,今天我就来详解分布式全局唯一ID,以及分布式全局唯一ID的实现方案@mikechen 什么是分布式系统唯一ID 在复杂分布式系统中,往往需要对大量的数据和消 ...
- Sentry For React 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!
内容源于:https://docs.sentry.io/platforms/javascript/guides/react/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - ...
- 详解apache的allow和deny
今天看了一篇关于apache allow,deny的文章收获匪浅,防止被删,我直接摘过来了,原文地址!!! !http://www.cnblogs.com/top5/archive/2009/09/2 ...
- Linux命令详解-Apache网站服务器配置和管理
1.Apache网站服务器配置和管理 1.源码包安装 2.rpm包安装 rpm –a | grep httpd 3.启动服务 service httpd start 4.配置文件: /etc/http ...
- apache配置详解 apache安装路径
http://www.linuxidc.com/Linux/2015-02/113921.htm 不同apache的安装方式 的安装目录示例 http://www.121down.com/articl ...
- 详解Apache服务与高级配置,(主配置文件每行都有描述)
HTTP服务---> http://httpd.apache.org/(官方网站) httpd service :纯粹的web服务器,同时开源(不是GPL). 特性:1.在进程特性上通常是事先 ...
- java架构之路(多线程)synchronized详解以及锁的膨胀升级过程
上几次博客,我们把volatile基本都说完了,剩下的还有我们的synchronized,还有我们的AQS,这次博客我来说一下synchronized的使用和原理. synchronized是jvm内 ...
随机推荐
- 通过Lambda函数的方式获取属性名称
前言: 最近在使用mybatis-plus框架, 常常会使用lambda的方法引用获取实体属性, 避免出现大量的魔法值. public List<User> listBySex() { L ...
- 新手面对安卓6.0以上的版本时出现一个关于文件权限检测的问题,报错为:“无法解析符号 'checkSelfPermission'”,解决办法
[[注意]:这只是笔者在遇到这个问题时的解决方法,如果对您毫无帮助,请自寻他法!!!] 面对新手:在简单做一个音乐播放程序时,如果面对安卓6.0以上的版本,就会出现一个关于文件权限检测的问题,报错为: ...
- Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库
如何将Excel数据插入到MySQL数据库中 在实际应用中,我们可能需要将Excel表格中的数据导入到MySQL数据库中,以便于进行进一步的数据分析和处理.本文将介绍如何使用Python将Excel表 ...
- jenkins实践篇(2)—— 自动打tag的可回滚发布模式
大家好,我是蓝胖子,在上一篇我简单介绍了如何基于特定分支做自动编译和发布,在生产环境中,为了更加安全和快速回滚,我采取的是通过对代码打tag的方式来进行部署,下面我将详细介绍整个发布过程的逻辑. 发布 ...
- 打造我的 Windows 开发环境
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- python中pip下载慢或报错的解决方法
一:问题 python的pip在安装包时,有时会报错超时,排除包名写错的原因,一般这种问题是因为网络下载过慢,导致超时 二:解决方案 我们可以设置pip镜像源下载,能够提升pip下载速度,解决报错问题 ...
- Java+Selenium爬取高德POI边界坐标
一.写在前面 关于爬取高德兴趣点边界坐标网上有几篇文章介绍实现方式,总的来说就是通过https://www.amap.com/detail/get/detail传入POI的ID值获取数据,BUT,如果 ...
- MacOS|matplotlib 无法显示中文 解决办法
matplotlib 无法显示中文 解决办法 画图时,中文无法正常显示,如图 下载字体 点击这里获取字体 提取码: wnby 查看字体路径 在 python 环境中执行以下指令 import matp ...
- [QOJ4815] Flower's Land
简要题意:给出一个 \(n\) 个点的树,对某个点 \(i\) 求包含某一个点的大小为 \(k\) 的权值最大的连通块,一个连通块的权值是其所有点的权值之和. \(n\le 40000,k\le \m ...
- 项目实战接口开发SpringBoot
目录 一.springboot官方demo开发 二.使用SpringBoot开发get方法接口 三.一个要求携带cookie信息访问的get接口开发 四.需要携带参数的get请求两种开发方式 4.1 ...