摘要:本文主要探讨如何平滑解决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中如果存在大小写差异的用户组会导致同步失败,这种情况建议改造或者下线其中不规范的用户组命名。

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

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

详解Apache Sentry->Ranger平滑升级方案的更多相关文章

  1. Nginx版本平滑升级方案

    背景:由于负载均衡测试服务器中nginx版本过低,存在安全漏洞,查询相关修复漏洞资料,需要采取nginx版本升级形式对漏洞进行修复. Nginx平滑升级方案 1.案例采用版本介绍 旧版本 nginx- ...

  2. 详解k8s一个完整的监控方案(Heapster+Grafana+InfluxDB) - kubernetes

    1.浅析整个监控流程 heapster以k8s内置的cAdvisor作为数据源收集集群信息,并汇总出有价值的性能数据(Metrics):cpu.内存.网络流量等,然后将这些数据输出到外部存储,如Inf ...

  3. Sentry-CLI 使用详解(2021 Sentry v21.8.x)

    内容源于:https://docs.sentry.io/platforms/javascript/guides/vue/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创 ...

  4. 分布式ID详解(5种分布式ID生成方案)

    分布式架构会涉及到分布式全局唯一ID的生成,今天我就来详解分布式全局唯一ID,以及分布式全局唯一ID的实现方案@mikechen 什么是分布式系统唯一ID 在复杂分布式系统中,往往需要对大量的数据和消 ...

  5. Sentry For React 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!

    内容源于:https://docs.sentry.io/platforms/javascript/guides/react/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - ...

  6. 详解apache的allow和deny

    今天看了一篇关于apache allow,deny的文章收获匪浅,防止被删,我直接摘过来了,原文地址!!! !http://www.cnblogs.com/top5/archive/2009/09/2 ...

  7. Linux命令详解-Apache网站服务器配置和管理

    1.Apache网站服务器配置和管理 1.源码包安装 2.rpm包安装 rpm –a | grep httpd 3.启动服务 service httpd start 4.配置文件: /etc/http ...

  8. apache配置详解 apache安装路径

    http://www.linuxidc.com/Linux/2015-02/113921.htm 不同apache的安装方式 的安装目录示例 http://www.121down.com/articl ...

  9. 详解Apache服务与高级配置,(主配置文件每行都有描述)

    HTTP服务---> http://httpd.apache.org/(官方网站) httpd  service :纯粹的web服务器,同时开源(不是GPL). 特性:1.在进程特性上通常是事先 ...

  10. java架构之路(多线程)synchronized详解以及锁的膨胀升级过程

    上几次博客,我们把volatile基本都说完了,剩下的还有我们的synchronized,还有我们的AQS,这次博客我来说一下synchronized的使用和原理. synchronized是jvm内 ...

随机推荐

  1. 如何用CRM销售管理系统实现销售目标?

    每个企业的销售业务都要制定目标计划,在制定销售计划时要考虑两个问题,一个是计划是否能够严格执行,另一个是计划是否可控,即明确销售目标后,合理分配时间,运用销售基本工作方法严格把控销售进度.那我们该如何 ...

  2. Subtree 题解

    Subtree 题目大意 给定一颗树,你可以选出一些节点,你需要对于每个点求出在强制选这个点的情况下所有选择的点联通的方案数,对给定模数取模. 思路分析 对于这种求树上每一个点方案数的题目,首先考虑换 ...

  3. 每天5分钟复习OpenStack(六)CPU虚拟化<2>

    OpenStack是 一个IAAS(基础设施即服务)因此免不了会与硬件打交道.下面我介绍下与CPU强关联的一些知识点.1 什么是超配 2 CPU的个数是怎么统计的 3 vCPU的隔离.绑定 1.超配 ...

  4. Godot引擎的一些踩坑记录(不断更新中)

    版本号 Godot 3.1.2 文件夹名称使用小写.编译\导出时有的tscn文件的引用路径, 有可能会变成小写路径(怀疑是bug),导致启动失败. ttc字体(文泉驿微米黑)导出时需要手动设置包含*. ...

  5. arm架构docker安装nacos

    前言 搞了个hk1box,装了armbian系统,想用这个当服务器调试微服务,需要安装nacos.尝试安装非docker版本的nacos,去github下载arm版本的并且放到linux下面,运行的时 ...

  6. EhCache使用详细介绍

    http://hi.baidu.com/yjl_zzh/item/18e6518397cdd1d9d1f8cdfb 2.EhCache的使用注意点    当用Hibernate的方式修改表数据(sav ...

  7. Python Web UI自动化报错 :ResourceWarning: Enable tracemalloc to get the object allocation traceback

    ResourceWarning资源警告解决方案 原因:在执行线性脚本完毕时,没有及时释放相应资源,导致内存堆积,从而造成内存溢出(如关闭浏览器等操作),此时,Python将会做出提醒: 在百度吸取 网 ...

  8. 【Spring】事务实现原理

    在使用事务的时候需要添加@EnableTransactionManagement注解来开启事务,Spring事务底层是通过AOP来实现的,所以启用事务后,同样会向容器中注入一个代理对象创建器,AOP使 ...

  9. 多巴胺所表达的prediction error信号

    Dopamine reward prediction-error signalling: a two-component response (Wolfram Schultz; NATURE REVIE ...

  10. 自定义Graph Component:1.2-其它Tokenizer具体实现

      本文主要介绍了Rasa中相关Tokenizer的具体实现,包括默认Tokenizer和第三方Tokenizer.前者包括JiebaTokenizer.MitieTokenizer.SpacyTok ...