Apache Ranger提供了一个集中式的安全管理框架,用户可以通过操作Ranger Admin页面来配置各种策略,从而实现对Hadoop生成组件,比如HDFS、YARN、Hive、HBase、Kafka等进行细粒度的数据访问控制。本篇博客,笔者将为大家介绍如何Apache Ranger的安装部署、以及使用。
Apache Ranger提供以下核心功能,它们分别是:
Ranger的主要由以下几个核心模块组成,它们分别是:
它们之间的流程关系,如下图所示:
Ranger Admin是Apache Ranger和用户交互的主要界面,用户登录Ranger Admin时,可以针对不同的Hadoop组件定制不同的安全策略,当策略制定并保存后,Agent Plugin会定期从Ranger Admin拉取该组件配置的所有策略,并缓存到本地。
这样,当有用户来请求Hadoop组件的数据服务时,Agent Plugin就提供鉴权服务,并将鉴权结果反馈给相应的组件,从而实现了数据服务的权限控制功能。当用户在Ranger Admin中修改了配置策略后,Agent Plugin会拉取新策略并更新,如果用户在Ranger Admin中删除了配置策略,那么Agent Plugin的鉴权服务也无法继续使用。
以Hive为例子,具体流程如下所示:
下载源代码地址渠道,如下所示:
Apache Ranger源代码使用Java语言开发,编译时需要使用Java环境,这里我们使用Maven命令来进行编译。Apache Ranger存储数据库支持MySQL数据库,我们直接使用MySQL数据库来作为Apache Ranger系统的存储数据库即可。
# 使用Maven命令编译
mvn -DskipTests=true clean package
编译成功后,会出现如下所示的截图:
编辑install.properties文件,具体内容如下所示:
# 指明使用数据库类型
DB_FLAVOR=MYSQL
SQL_CONNECTOR_JAR=/appcom/jars/mysql-connector-java-5.1.32-bin.jar
db_root_user=root
db_root_password=Hive123@
db_host=nns:3306
#数据库名
db_name=ranger
db_user=root
db_password=Hive123@
cred_keystore_filename=
audit_store=
audit_solr_urls=
audit_solr_user=
audit_solr_password=
audit_solr_zookeepers=
policymgr_external_url=http://nna:6080
hadoop_conf=/data/soft/new/hadoop-conf
rangerAdmin_password=ranger123
rangerTagsync_password=ranger123
rangerUsersync_password=ranger123
keyadmin_password=ranger123
执行setup.sh脚本命令后,如果成功,会出现如图所示的结果:
然后,执行set_globals.sh脚本命令,会出现如下所示的结果。
[root@nna ranger-admin]# ./set_globals.sh
usermod: no changes
[2022/03/26 21:45:26]: [I] Soft linking /etc/ranger/admin/conf
to ews/webapp/WEB-INF/classes/conf
[root@nna ranger-admin]#
然后,在登录界面输入“admin/ranger123”,成功进入主界面,如下图所示:
编辑install.properties文件,具体内容如下所示:
# 配置ranger admin的地址
POLICY_MGR_URL = http://nna:6080
SYNC_SOURCE = unix
SYNC_INTERVAL = 1
unix_user=ranger
unix_group=ranger
rangerUsersync_password=ranger123
hadoop_conf=/data/soft/new/hadoop-config
logdir=logs
执行setup.sh脚本命令后,如果成功,会出现如图所示的结果:
在Ranger Admin管理界面,出现如下所示的截图,表名安装成功。
编辑install.properties文件,具体内容如下所示:
# 配置ranger admin的地址
POLICY_MGR_URL = http://nna:6080
REPOSITORY_NAME=hive-ranger
COMPONENT_INSTALL_DIR_NAME=/data/soft/new/hive
CUSTOM_USER=hadoop
CUSTOM_GROUP=hadoop
执行enable-hive-plugin.sh脚本命令,使HDFS插件生效。结果如下图所示:
在一台Hadoop的Client节点上创建一个新用户(hduser1024),具体操作命令如下所示:
# 新增一个用户
[hadoop@nna ~]$ adduser hduser1024
[hadoop@nna ~]$ usermod -a -G hadoop hduser1024
[hadoop@nna ~]$ cp /home/hadoop/.bash_profile /home/hduser1024/
进入Ranger Admin管理界面添加新用户,如下图所示:
在Ranger Admin中选择Hive策略模块,配置内容如下图所示:
这里策略名称、用户名和密码可以任意填写,JDBC驱动类和URL地址填写内容如下所示:
# 驱动类
org.apache.hive.jdbc.HiveDriver
jdbc:hive2://dn1:2181,dn2:2181,dn3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
接着,进入到具体的数据库、表以及列的权限设置页面,如下图所示:
设置数据库game_user_db,选择表user_visit_pv,然后指定该表下的所有列(使用*号)授予hduser1024用户拥有查询权限(select)。接着,我们可以在Hive的客户端中执行查询语句验证权限:
# 进入到Hive客户端,并切换到指定数据库
hive> use game_user_db;
hive> select * from user_visit_pv limit 2;
结果如下所示:
然后,我们进入到Hive策略中,修改只授予hduser1024用户读取uid字段的权限:
接着,我们可以在Hive的客户端中执行查询语句验证权限:
# 进入到Hive客户端,并切换到指定数据库
hive> use game_user_db;
hive> select uid from user_visit_pv limit 2;
hive> select uid,pv from user_visit_pv limit 2;
结果如下图所示:
可以看到hduser1024用户只拥有读取uid字段的权限,读取pv字段则会抛出权限异常的错误。
综合考虑,Apache Ranger能够很好的和现有系统集成,比如:
这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!
另外,博主出书了《Kafka并不难学》和《Hadoop大数据挖掘从入门到进阶实战》,喜欢的朋友或同学, 可以在公告栏那里点击购买链接购买博主的书进行学习,在此感谢大家的支持。关注下面公众号,根据提示,可免费获取书籍的教学视频。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章