• Apache Ranger安装部署


    1.概述

    Apache Ranger提供了一个集中式的安全管理框架,用户可以通过操作Ranger Admin页面来配置各种策略,从而实现对Hadoop生成组件,比如HDFS、YARN、Hive、HBase、Kafka等进行细粒度的数据访问控制。本篇博客,笔者将为大家介绍如何Apache Ranger的安装部署、以及使用。

    2.内容

    Apache Ranger提供以下核心功能,它们分别是:

    • 通过统一的中心化管理界面或者REST接口来管理所有安全任务,从而实现集中化的安全管理;
    • 通过统一的中心化管理界面,对Hadoop生态圈组件或者工具的操作进行更加细粒度级别的控制;
    • 提供了统一的、标准化的授权方式;
    • 支持基于角色的访问控制,基于属性的访问控制等多种访问控制手段;
    • 支持对用户访问和管理操作的集中审计。

    2.1 架构

    Ranger的主要由以下几个核心模块组成,它们分别是:

    • Ranger Admin:该模块是Ranger的核心,它内置了一个Web管理界面,用户可以通过这个Web管理界面或者REST接口来制定安全策略;
    • Agent Plugin:该模块是嵌入到Hadoop生态圈组件的插件,它定期从Ranger Admin拉取策略并执行,同时记录操作以供审计使用;
    • User Sync:该模块是将操作系统用户/组的权限数据同步到Ranger数据库中。

    它们之间的流程关系,如下图所示:

     2.2 工作流程

    Ranger Admin是Apache Ranger和用户交互的主要界面,用户登录Ranger Admin时,可以针对不同的Hadoop组件定制不同的安全策略,当策略制定并保存后,Agent Plugin会定期从Ranger Admin拉取该组件配置的所有策略,并缓存到本地。

    这样,当有用户来请求Hadoop组件的数据服务时,Agent Plugin就提供鉴权服务,并将鉴权结果反馈给相应的组件,从而实现了数据服务的权限控制功能。当用户在Ranger Admin中修改了配置策略后,Agent Plugin会拉取新策略并更新,如果用户在Ranger Admin中删除了配置策略,那么Agent Plugin的鉴权服务也无法继续使用。

    以Hive为例子,具体流程如下所示:

    3.安装部署

    3.1 基础环境准备

     3.2 下载源代码

    下载源代码地址渠道,如下所示:

    • 官网:https://ranger.apache.org/download.html
    • Github:https://github.com/apache/ranger

    3.3 编译源代码

    Apache Ranger源代码使用Java语言开发,编译时需要使用Java环境,这里我们使用Maven命令来进行编译。Apache Ranger存储数据库支持MySQL数据库,我们直接使用MySQL数据库来作为Apache Ranger系统的存储数据库即可。

    # 使用Maven命令编译
    mvn -DskipTests=true clean package

    编译成功后,会出现如下所示的截图:

    3.4 安装Ranger Admin

    编辑install.properties文件,具体内容如下所示:

    # 指明使用数据库类型
    DB_FLAVOR=MYSQL 
    # 数据库连接驱动
    SQL_CONNECTOR_JAR=/appcom/ranger-admin/jars/mysql-connector-java-5.1.32-bin.jar
    # 数据库root用户名
    db_root_user=root
    # 数据库密码
    db_root_password=Hive123@
    # 数据库主机
    db_host=nns:3306 
    
    # 以下三个属性是用于设置ranger数据库的
    #数据库名
    db_name=ranger
    # 管理该数据库用户        
    db_user=root
    # 管理该数据库密码
    db_password=Hive123@
    
    # 不需要保存,为空,否则生成的数据库密码为'_'
    cred_keystore_filename=
    
    # 审计日志,如果没有安装solr,对应的属性值为空即可
    audit_store=
    
    audit_solr_urls=
    audit_solr_user=
    audit_solr_password=
    audit_solr_zookeepers=
    
    # 策略管理配置,配置ip和端口,默认即可
    policymgr_external_url=http://nna:6080
    
    # 配置hadoop集群的core-site.xml文件,把core-site.xml文件拷贝到该目录
    hadoop_conf=/data/soft/new/hadoop-conf
    
    # rangerAdmin、rangerTagSync、rangerUsersync、keyadmin密码配置。
    # 默认为空,可以不配,对应的内部组件该属性也要为空
    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”,成功进入主界面,如下图所示:

     3.5 安装ranger-usersync

    编辑install.properties文件,具体内容如下所示:

    # 配置ranger admin的地址
    POLICY_MGR_URL = http://nna:6080
    
    # 同步源系统类型
    SYNC_SOURCE = unix
    
    # 同步间隔时间,1分钟
    SYNC_INTERVAL = 1
    
    # usersync程序运行的用户和用户组
    unix_user=ranger
    unix_group=ranger
    
    # 修改rangerusersync用户的密码。注意,此密码应与ranger-admin中
    # install.properties的rangerusersync_password相同。
    # 此处可以为空,同样ranger-admin的也要为空
    rangerUsersync_password=ranger123
    
    # 配置hadoop的core-site.xml路径
    hadoop_conf=/data/soft/new/hadoop-config
    
    # 配置usersync的log路径
    logdir=logs

    执行setup.sh脚本命令后,如果成功,会出现如图所示的结果:

     在Ranger Admin管理界面,出现如下所示的截图,表名安装成功。

    4.配置Hive插件

    4.1 启动插件

    编辑install.properties文件,具体内容如下所示:

    # 配置ranger admin的地址
    POLICY_MGR_URL = http://nna:6080
    
    # 配置hive的仓库名
    REPOSITORY_NAME=hive-ranger
    
    # 配置hive组件的HIVE_HOME
    COMPONENT_INSTALL_DIR_NAME=/data/soft/new/hive
    
    # 配置ranger-hive-plugin的所属用户、用户组
    CUSTOM_USER=hadoop
    CUSTOM_GROUP=hadoop

    执行enable-hive-plugin.sh脚本命令,使HDFS插件生效。结果如下图所示:

    4.2 创建新用户

    在一台Hadoop的Client节点上创建一个新用户(hduser1024),具体操作命令如下所示:

    # 新增一个用户
    [hadoop@nna ~]$ adduser hduser1024
    # 将新增的用户添加到已有的hadoop组中
    [hadoop@nna ~]$ usermod -a -G hadoop hduser1024
    # 复制hadoop用户下的环境变量
    [hadoop@nna ~]$ cp /home/hadoop/.bash_profile /home/hduser1024/

    进入Ranger Admin管理界面添加新用户,如下图所示:

    4.3 配置Hive策略

     在Ranger Admin中选择Hive策略模块,配置内容如下图所示:

     这里策略名称、用户名和密码可以任意填写,JDBC驱动类和URL地址填写内容如下所示:

    # 驱动类
    org.apache.hive.jdbc.HiveDriver
    
    # URL地址,使用Zookeeper模式连接方式
    jdbc:hive2://dn1:2181,dn2:2181,dn3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2

    接着,进入到具体的数据库、表以及列的权限设置页面,如下图所示:

    4.4 Hive表权限验证

    设置数据库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字段则会抛出权限异常的错误。

    5.总结

    综合考虑,Apache Ranger能够很好的和现有系统集成,比如:

    • 支持多组件,比如HDFS、Hive、Kafka等,基本能覆盖现有大数据组件;
    • 支持日志审计,便于问题排查;
    • 用于自己的用户管理体系,方便和其他系统集成。

    6.结束语

    这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

    另外,博主出书了《Kafka并不难学》和《Hadoop大数据挖掘从入门到进阶实战》,喜欢的朋友或同学, 可以在公告栏那里点击购买链接购买博主的书进行学习,在此感谢大家的支持。关注下面公众号,根据提示,可免费获取书籍的教学视频。

  • 相关阅读:
    软件架构模式
    经济学基础
    使用vue-cli3新建一个项目,并写好基本配置
    vue+iview+less实现主题切换功能
    ivew table组件二次封装,解决slot-scope跨组件传递的问题
    vue-cli3使用less全局变量,不用每个组件引入less文件(亲测有效)
    vscode开发vue项目使用eslint+prettier格式化:保存时自动执行lint进行修复(升级篇,保存时可格式化模板和css)
    切换子路由时,父路由的组件会重新渲染
    更换路由时页面实现左右滑动的效果
    div设置为inline-block后,两个div之间有空隙
  • 原文地址:https://www.cnblogs.com/smartloli/p/16062683.html
Copyright © 2020-2023  润新知