权限管理Ranger详解

文章目录

  • 一、Ranger概述与安装
    • 1、Ranger概述
      • 1.1 Ranger介绍
      • 1.2 Ranger的目标
      • 1.3 Ranger支持的框架
      • 1.4 Ranger的架构
      • 1.5 Ranger的工作原理
    • 2、Ranger安装
      • 2.1 创建系统用户和Kerberos主体
      • 2.2 数据库环境准备
      • 2.3 安装RangerAdmin
      • 2.4 启动RangerAdmin
  • 二、Ranger简单使用
    • 1、安装 RangerUsersync
      • 1.1 RangerUsersync简介
      • 1.2 RangerUsersync安装
      • 1.3 RangerUsersync启动
    • 2、安装Ranger Hive-plugin
      • 2.1 Ranger Hive-plugin简介
      • 2.2 Ranger Hive-plugin安装
      • 2.3 在ranger admin上配置hive插件
    • 3、使用Ranger对Hive进行权限管理
      • 3.1 权限控制初体验
      • 3.2 Ranger授权模型

一、Ranger概述与安装

1、Ranger概述

1.1 Ranger介绍

Ranger的官网:https://ranger.apache.org/

Apache Ranger是一个Hadoop平台上的全方位数据安全管理框架,它可以为整个Hadoop生态系统提供全面的安全管理。

随着企业业务的拓展,企业可能在多用户环境中运行多个工作任务,这就需要一个可以对安全策略进行集中管理,配置和监控用户访问的框架。Ranger由此产生

1.2 Ranger的目标

  • 允许用户使用UI或REST API对所有和安全相关的任务进行集中化的管理
  • 允许用户使用一个管理工具对操作Hadoop体系中的组件和工具的行为进行细粒度的授权
  • 支持Hadoop体系中各个组件的授权认证标准
  • 增强了对不同业务场景需求的授权方法支持,例如基于角色的授权或基于属性的授权
  • 支持对Hadoop组件所有涉及安全的审计行为的集中化管理

1.3 Ranger支持的框架

  • Apache Hadoop
  • Apache Hive
  • Apache HBase
  • Apache Storm
  • Apache Knox
  • Apache Solr
  • Apache Kafka
  • YARN
  • NIFI

1.4 Ranger的架构

1.5 Ranger的工作原理

Ranager的核心是Web应用程序,也称为RangerAdmin模块,此模块由管理策略,审计日志和报告等三部分组成。

管理员角色的用户可以通过RangerAdmin提供的web界面或REST APIS来定制安全策略。这些策略会由Ranger提供的轻量级的针对不同Hadoop体系中组件的插件来执行。插件会在Hadoop的不同组件的核心进程启动后,启动对应的插件进程来进行安全管理

2、Ranger安装

Ranger2.0要求对应的Hadoop为3.x以上,Hive为3.x以上版本,JDK为1.8以上版本。Hadoop及Hive等需开启用户认证功能,本文基于开启Kerberos安全认证的Hadoop和Hive环境。注:本文中所涉及的Ranger相关组件均安装在hadoop102节点

2.1 创建系统用户和Kerberos主体

Ranger的启动和运行需使用特定的用户,故须在Ranger所在节点创建所需系统用户并在Kerberos中创建所需主体

# 创建ranger系统用户
useradd  ranger -G hadoop
echo ranger | passwd --stdin ranger# 检查HTTP主体是否正常(该主体在Hadoop开启Kerberos时已创建)
# 使用keytab文件认证HTTP主体
kinit -kt /etc/security/keytab/spnego.service.keytab HTTP/hadoop102@EXAMPLE.COM
# 查看认证状态
klist
kdestroy # 创建rangeradmin主体
kadmin -padmin/admin -wadmin -q"addprinc -randkey rangeradmin/hadoop102"
kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/rangeradmin.keytab rangeradmin/hadoop102"
chown ranger:ranger /etc/security/keytab/rangeradmin.keytab
# 创建rangerlookup主体
kadmin -padmin/admin -wadmin -q"addprinc -randkey rangerlookup/hadoop102"
kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/rangerlookup.keytab rangerlookup/hadoop102"
chown ranger:ranger /etc/security/keytab/rangerlookup.keytab
# 创建rangerusersync主体
kadmin -padmin/admin -wadmin -q"addprinc -randkey rangerusersync/hadoop102"
kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/rangerusersync.keytab rangerusersync/hadoop102"
chown ranger:ranger /etc/security/keytab/rangerusersync.keytab

2.2 数据库环境准备

mysql -uroot -p123456
# 在MySQL数据库中创建Ranger存储数据的数据库
create database ranger;
# 更改mysql密码策略,为了可以采用比较简单的密码
set global validate_password_length=4;
set global validate_password_policy=0;
# 创建用户
grant all privileges on ranger.* to ranger@'%'  identified by 'ranger';

2.3 安装RangerAdmin

# 官网:https://ranger.apache.org/
# 在hadoop102的/opt/module路径上创建一个ranger
# https://www.apache.org/dyn/closer.lua/ranger/2.0.0/apache-ranger-2.0.0.tar.gz
# 使用Maven命令编译,注意需要python,maven,git,java环境
# 具体编译可以参考:https://blog.csdn.net/weixin_38586230/article/details/105725346
mvn -DskipTests=true clean package
# 资源获取:https://download.csdn.net/download/lemon_TT/87961006
mkdir /opt/module/ranger
tar -zxvf ranger-2.0.0-admin.tar.gz -C /opt/module/ranger
# 进入/opt/module/ranger/ranger-2.0.0-admin路径,对install.properties配置
vim install.properties
# ===================================================
# 修改以下配置内容:
#mysql驱动
SQL_CONNECTOR_JAR=/opt/software/mysql-connector-java-5.1.37.jar#mysql的主机名和root用户的用户名密码
db_root_user=root
db_root_password=123456
db_host=hadoop102#ranger需要的数据库名和用户信息,和2.2.1创建的信息要一一对应
db_name=ranger
db_user=ranger
db_password=ranger#Ranger各组件的admin用户密码
rangerAdmin_password=atguigu123
rangerTagsync_password=atguigu123
rangerUsersync_password=atguigu123
keyadmin_password=atguigu123#ranger存储审计日志的路径,默认为solr,这里为了方便暂不设置
audit_store=#策略管理器的url,rangeradmin安装在哪台机器,主机名就为对应的主机名
policymgr_external_url=http://hadoop102:6080#启动ranger admin进程的linux用户信息
unix_user=ranger
unix_user_pwd=ranger
unix_group=ranger#Kerberos相关配置
spnego_principal=HTTP/hadoop102@EXAMPLE.COM
spnego_keytab=/etc/security/keytab/spnego.service.keytab
admin_principal=rangeradmin/hadoop102@EXAMPLE.COM
admin_keytab=/etc/security/keytab/rangeradmin.keytab
lookup_principal=rangerlookup/hadoop102@EXAMPLE.COM
lookup_keytab=/etc/security/keytab/rangerlookup.keytab
hadoop_conf=/opt/module/hadoop-3.1.3/etc/hadoop# ===================================================# 在/opt/module/ranger/ranger-2.0.0-admin目录下执行安装脚本
./setup.sh
# 若安装过程中发现Error executing: CREATE FUNCTION `getXportalUIdByLoginId`(input_val VARCHAR(100)) RETURNS int(11) BEGIN DECLARE myid INT; SELECT x_portal_user.id into myid FROM x_portal_user WHERE x_portal_user.login_id = input_val; RETURN myid; END
# 导入失败,log_bin_trust_function_creators 为 OFF
# 进入mysql进行设置
show variables like '%func%';
set global log_bin_trust_function_creators=1;
drop database ranger;
create database ranger;
# 最后重新安装# 修改/opt/module/ranger/ranger-2.0.0-admin/conf/ranger-admin-site.xml配置文件中的以下属性
vim /opt/module/ranger/ranger-2.0.0-admin/conf/ranger-admin-site.xml

修改如下参数

<property><name>ranger.jpa.jdbc.password</name><value>ranger</value><description />
</property><property><name>ranger.service.host</name><value>hadoop102</value>
</property>

2.4 启动RangerAdmin

# 启动ranger-admin(以ranger用户启动)
sudo -i -u ranger ranger-admin start
# ranger-admin在安装时已经配设置为开机自启动,因此之后无需再手动启动
jps
# 进程名字为EmbeddedServer
# 访问Ranger的WebUI,地址为:http://hadoop102:6080,账号密码admin/atguigu123
# 停止ranger(此处不用执行)
sudo -i -u ranger ranger-admin stop

二、Ranger简单使用

https://cwiki.apache.org/confluence/display/RANGER/Row-level+filtering+and+column-masking+using+Apache+Ranger+policies+in+Apache+Hive

1、安装 RangerUsersync

1.1 RangerUsersync简介

RangerUsersync作为Ranger提供的一个管理模块,可以将Linux机器上的用户和组信息同步到RangerAdmin的数据库中进行管理

1.2 RangerUsersync安装

# 解压
tar -zxvf ranger-2.0.0-usersync.tar.gz -C /opt/module/ranger/
# 在/opt/module/ranger/ranger-2.0.0-usersync目录下修改以下文件
vim install.properties
# ================================
#rangeradmin的url
POLICY_MGR_URL =http://hadoop102:6080#同步间隔时间,单位(分钟)
SYNC_INTERVAL = 1#运行此进程的linux用户
unix_user=ranger
unix_group=ranger#rangerUserSync用户的密码,参考rangeradmin中install.properties的配置
rangerUsersync_password=atguigu123#Kerberos相关配置
usersync_principal=rangerusersync/hadoop102@EXAMPLE.COM
usersync_keytab=/etc/security/keytab/rangerusersync.keytab
hadoop_conf=/opt/module/hadoop-3.1.3/etc/hadoop# ================================# 在/opt/module/ranger/ranger-2.0.0-usersync目录下执行安装脚本
./setup.sh
# 修改/opt/module/ranger/ranger-2.0.0-usersync/conf/ranger-ugsync-site.xml配置文件中的以下参数
<property><name>ranger.usersync.enabled</name><value>true</value>
</property>

1.3 RangerUsersync启动

# 启动之前,在ranger admin的web-UI界面,http://hadoop102:6080/index.html#!/users/usertab
# 启动RangerUserSync(使用ranger用户启动)
sudo -i -u ranger ranger-usersync start
# 启动后,再次查看用户信息
# 说明ranger-usersync工作正常!
# ranger-usersync服务也是开机自启动的,因此之后不需要手动启动

2、安装Ranger Hive-plugin

2.1 Ranger Hive-plugin简介

Ranger Hive-plugin是Ranger对hive进行权限管理的插件。需要注意的是,Ranger Hive-plugin只能对使用jdbc方式访问hive的请求进行权限管理,hive-cli并不受限制

2.2 Ranger Hive-plugin安装

# 解压软件
tar -zxvf ranger-2.0.0-hive-plugin.tar.gz -C /opt/module/ranger/
# 配置软件
vim install.properties
# 修改以下内容
# ===================================
#策略管理器的url地址
POLICY_MGR_URL=http://hadoop102:6080#组件名称
REPOSITORY_NAME=hive#hive的安装目录
COMPONENT_INSTALL_DIR_NAME=/opt/module/hive#hive组件的启动用户
CUSTOM_USER=hive#hive组件启动用户所属组
CUSTOM_GROUP=hadoop
# =====================================
# 启用Ranger Hive-plugin,在/opt/module/ranger/ranger-2.0.0-hive-plugin下执行以下命令
./enable-hive-plugin.sh
# 查看$HIVE_HOME/conf目录是否出现以下配置文件,如出现则表示Hive插件启用成功。
ls $HIVE_HOME/conf | grep -E hiveserver2\|ranger
# 重启Hiveserver2,需使用hive用户启动
sudo -i -u hive hiveserver2

2.3 在ranger admin上配置hive插件

谁启动hiveserver2谁设置为admin角色,我这里hive启动,将角色设置为Admin

配置Hive插件,点击Access Manager,添加Hive Manager,配置服务详情

Service Name:hive
Username:rangerlookup
Password:rangerlookup
jdbc.driverClassName:org.apache.hive.jdbc.HiveDriver
jdbc.url:jdbc:hive2://hadoop102:10000/;principal=hive/hadoop102@EXAMPLE.COM

先进行add,如何在编辑进行测试,可以发现成功连接了

3、使用Ranger对Hive进行权限管理

3.1 权限控制初体验

查看默认的访问策略,此时只有rangerlookup用户拥有对所有库、表和函数的访问权限,故理论上其余用户是不能访问任何Hive资源的

# 验证:使用atguigu用户尝试进行认证,认证成功后,使用beeline客户端连接Hiveserver2
# 首先进行认证
kinit atguigu
beeline -u "jdbc:hive2://hadoop102:10000/;principal=hive/hadoop102@EXAMPLE.COM"
# 执行以下sql语句,验证当前用户为atguigu
select current_user();
# 执行use gmall语句,结果atguigu用户没有对gmall库的使用权限
use gmall;
# 赋予atguigu用户对gmall数据库的访问权限
# 点击hive->点击Add New Policy
# 配置授权策略,将gmall库的所有表的所有权限均授予给了atguigu用户

等待片刻,在回到beeline客户端,重新执行use gmall语句,此时atguigu用户已经能够使用gmall库,并且可访问gmall库下的所有表了

3.2 Ranger授权模型

Ranger所采用的权限管理模型可归类为RBAC(Role-Based Access Control )基于角色的访问控制。基础的RBAC模型共包含三个实体,分别是用户(user)、角色(role)和权限(permission)。用户需划分为某个角色,权限的授予对象也是角色,例如用户张三为管理角色,那他就拥有了管理员角色的所有权限。

Ranger的权限管理模型比基础的RBAC模型要更加灵活,以下是Ranger的权限管理模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/821987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java NIO】那NIO为什么速度快?

Java IO在工作中其实不常用到&#xff0c;更别提NIO了。但NIO却是高效操作I/O流的必备技能&#xff0c;如顶级开源项目Kafka、Netty、RocketMQ等都采用了NIO技术&#xff0c;NIO也是大多数面试官必考的体系知识。虽然骨头有点难啃&#xff0c;但还是要慢慢消耗知识、学以致用哈…

# RAG | Langchain # Langchain RAG:打造Markdown文件的结构化分割解决方案

【文章简介】 在信息技术的现代背景下&#xff0c;高效地处理和分析文本数据对于知识获取和决策支持至关重要。Markdown文件因其易读性和高效性&#xff0c;在文档编写和知识共享中占据了重要地位。然而&#xff0c;传统的文本处理方法往往忽视了Markdown的结构化特性&#xff…

KNIME 国际化支持投票

你的投票也许能让 KNIME 中文化快一点点。 i18n 是个很搞笑的单词&#xff0c;它是英文 internationalization 国际化的缩写。18 指的是首字母i和末字母n中间有18个字母。另外还有什么 K8s 也是一样&#xff0c;中间省去了8个字母 ... 真是懒的可以。指北君还想起一个类似的笑话…

数字革命的先锋:Web3对社会的影响

引言 在信息技术飞速发展的当下&#xff0c;Web3作为一个新兴的互联网模式&#xff0c;正在逐渐改变我们的生活方式、商业模式和社会结构。本文将深入探讨Web3的核心特点、它在各个领域中的应用以及对社会产生的深远影响。 1. Web3的核心特点 1.1 去中心化 Web3强调去中心化…

记【k8s】:访问 Prometheus UI界面:kubernetes-etcd (0/1 up) Error : out of bounds

记【k8s】&#xff1a;访问 Prometheus UI界面&#xff1a;kubernetes-etcd &#xff08;0/1 up&#xff09; Error &#xff1a; out of bounds 1、报错详情2、解决方法 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 出现 “out of bound…

Synchronized锁详解(全网最细)

目录 以下知识基于HotSpot虚拟机实现 1.前置知识 1.1 锁的作用 1.2 Java中常见的锁类型 1.3 锁的重入 2.使用场景 2.1 修饰实例方法 2.1.1 用法 2.1.2 原理 2.1.3 特点 2.2 修饰静态方法 2.2.1 用法 2.2.2 原理 2.3 修饰代码块 2.3.1 用法 3.原理 3.1 对象锁 …

数字电路(四,五章总结)

四.组合逻辑电路设计 由波形图列真值表&#xff0c;之 后画出卡诺图&#xff0c;写出最简逻辑表达式。 卡诺图化简的时候圈住的部分如果某个字母有0又有1的话这个字母删掉&#xff0c;写出其他两个字母。 如下图中黄圈A有0又有1则删除A&#xff0c;这样黄圈代表BC;同理绿圈代…

SpringBoot项目基于java的教学辅助平台

采用技术 SpringBoot项目基于java的教学辅助平台的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 学生信息管理 教师信息管理 课程信息管理 科目分类管…

Pytorch入门实战 P06-调用vgg16模型,进行人脸预测

目录 1、本文内容&#xff1a; 1、内容&#xff1a; 2、简单介绍下VGG16&#xff1a; 3、相关其他模型也可以调用&#xff1a; 2、代码展示&#xff1a; 3、训练结果&#xff1a; 1、不同优化器&#xff1a; ①【使用SGD优化器】 ②【使用Adam优化器】 ③Adam 动态学…

(BERT蒸馏)TinyBERT: Distilling BERT for Natural Language Understanding

文章链接&#xff1a;https://arxiv.org/abs/1909.10351 背景 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;预训练语言模型&#xff08;如BERT&#xff09;通过大规模的数据训练&#xff0c;已在多种NLP任务中取得了卓越的性能。尽管BERT模型在语言理解和生成…

深度学习 Lecture 7 迁移学习、精确率、召回率和F1评分

一、迁移学习&#xff08;Transfer learning) 用来自不同任务的数据来帮助我解决当前任务。 场景&#xff1a;比如现在我想要识别从0到9度手写数字&#xff0c;但是我没有那么多手写数字的带标签数据。我可以找到一个很大的数据集&#xff0c;比如有一百万张图片的猫、狗、汽…

论文笔记:(INTHE)WILDCHAT:570K CHATGPT INTERACTION LOGS IN THE WILD

iclr 2024 spotlight reviewer 评分 5668 1 intro 由大型语言模型驱动的对话代理&#xff08;ChatGPT&#xff0c;Claude 2&#xff0c;Bard&#xff0c;Bing Chat&#xff09; 他们的开发流程通常包括三个主要阶段 预训练语言模型在被称为“指令调优”数据集上进行微调&…

JDK5.0新特性

目录 1、JDK5特性 1.1、静态导入 1.2 增强for循环 1.3 可变参数 1.4 自动装箱/拆箱 1.4.1 基本数据类型包装类 1.5 枚举类 1.6 泛型 1.6.1 泛型方法 1.6.2 泛型类 1.6.3 泛型接口 1.6.4 泛型通配符 1、JDK5特性 JDK5中新增了很多新的java特性&#xff0c;利用这些新…

v-for中涉及的key

一、为什么要用key&#xff1f; key可以标识列表中每个元素的唯一性&#xff0c;方便Vue高效地更新虚拟DOM&#xff1b;key主要用于dom diff算法&#xff0c;diff算法是同级比较&#xff0c;比较当前标签上的key和标签名&#xff0c;如果都一样&#xff0c;就只移动元素&#…

【刷题笔记】第七天

文章目录 [924. 尽量减少恶意软件的传播](https://leetcode.cn/problems/minimize-malware-spread/)方法一&#xff0c;并查集方法二&#xff0c;dfs [GCD and LCM ](https://vjudge.net.cn/problem/HDU-4497#authorKING_LRL) 924. 尽量减少恶意软件的传播 如果移除一个感染节…

上海计算机学会 2023年10月月赛 乙组T4 树的覆盖(树、最小点覆盖、树形dp)

第四题&#xff1a;T4树的覆盖 标签&#xff1a;树、最小点覆盖、树形 d p dp dp题意&#xff1a;求树的最小点覆盖集的大小和对应的数量&#xff0c;数量对 1 , 000 , 000 , 007 1,000,000,007 1,000,000,007取余数。所谓覆盖集&#xff0c;是该树的点构成的集合&#xff0c;…

docker 环境变量设置实现方式

1、前言 docker在当前运用的越来广泛&#xff0c;很多应用或者很多中间软件都有很多docker镜像资源&#xff0c;运行docker run 启动镜像资源即可应用。但是很多应用或者中间件有很多配置参数。这些参数在运用过程怎么设置给docker 容器呢&#xff1f;下面介绍几种方式 2 、do…

无线网络安全之WiFi Pineapple初探

背景 WiFi Pineapple&#xff08;大菠萝&#xff09;是由国外无线安全审计公司Hak5开发并售卖的一款无线安全测试神器。集合了一些功能强大的模块&#xff0c;基本可以还原钓鱼攻击的全过程。在学习无线安全时也是一个不错的工具&#xff0c;本文主要讲WiFi Pineapple基础配置…

和鲸科技将参与第五届空间数据智能学术会议并于应急减灾与可持续发展专题论坛做报告分享

ACM SIGSPATIAL中国分会致力于推动空间数据的研究范式及空间智能理论与技术在时空大数据、智慧城市、交通科学、社会治理等领域的创新与应用。ACM SIGSPATIAL中国分会创办了空间数据智能学术会议&#xff08;SpatialDI&#xff09;&#xff0c;分会将于2024年4月25日-27日在南京…

javaWeb项目-快捷酒店管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、Spring Boot框架 …