权限管理-Ranger的介绍和使用(集成Hive)
作者:mmseoamin日期:2024-04-29

文章目录

    • 概述
      • 介绍
      • 目标
      • 支持的框架
      • 权限模型
      • 架构
      • 系统插件
      • 安装
        • 环境说明
        • 创建系统用户和Kerberos主体
        • 安装RangerAdmin
          • 数据库环境准备
          • 安装RangerAdmin
          • 启动RangerAdmin
          • 登录Ranger
          • 安装 RangerUsersync
            • RangerUsersync简介
            • RangerUsersync安装
            • RangerUsersync启动
            • 安装Ranger Hive-plugin
              • Ranger Hive-plugin简介
              • Ranger Hive-plugin安装
              • 在ranger admin上配置hive插件
              • 使用Ranger对Hive进行权限管理
                • 权限控制初体验
                • Ranger授权模型
                • 官网其他权限配置

                  概述

                  介绍

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

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

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

                  目标

                  • 允许用户使用UI或REST API对所有和安全相关的任务进行集中化的管理

                  • 允许用户使用一个管理工具对操作Hadoop体系中的组件和工具的行为进行细粒度的授权

                  • 支持Hadoop体系中各个组件的授权认证标准

                  • 增强了对不同业务场景需求的授权方法支持,例如基于角色的授权或基于属性的授权

                  • 支持对Hadoop组件所有涉及安全的审计行为的集中化管理

                    支持的框架

                    • Apache Hadoop

                    • Apache Hive

                    • Apache HBase

                    • Apache Storm

                    • Apache Knox

                    • Apache Solr

                    • Apache Kafka

                    • YARN

                    • NIFI

                    • Atlas

                    • Knox

                      权限模型

                      Ranger的权限模型一条条的权限策略组成的,权限策略主要由3个方面组成,即用户、资源、权限。

                      权限管理-Ranger的介绍和使用(集成Hive),第1张

                      • 用户:由User或Group来表达,User代表访问资源的用户,Group代表用户所属的用户组。
                      • 资源:由Resource来表达,不同的组件对应的业务资源是不一样的,比如HDFS的File Path,HBase的Table。
                      • 权限:ranger可以对各个资源的读、写、访问进行限制。由(AllowACL, DenyACL)来表达,类似白名单和黑名单机制,AllowACL用来描述允许访问的情况,DenyACL用来描述拒绝访问的情况。不同的组件对应的权限也是不一样的。

                        Ranger中的访问权限模型可以用下面的表达式来描述,从而抽象出了”用户-资源-权限“这三者间的关系:

                        Service = List
                        Policy =  List + AllowACL + DenyACL
                        AllowACL = List allow + List allowException
                        DenyACL = List deny + List denyException
                        AccessItem = List + List
                        

                        当用户要请求某个资源时,会先获取和这个资源有关联的所有配置的策略,之后遍历这些策略,然后根据黑白名单判断该用户是否有权限访问该资源。从上面的流程图可以看出,黑名单、黑名单排除、白名单、白名单排除匹配的优先级如下:

                        1. 黑名单优先级高于白名单
                        2. 黑名单排除的优先级高于黑名单
                        3. 白名单排除的优先级高于白名单

                        决策下放:如果没有policy能决策访问,一般情况是认为没有权限拒绝访问,然而Ranger还可以选择将决策下放给系统自身的访问控制层,比如HDFS的ACL,这个和每个Ranger插件以及应用系统自己的实现有关。

                        访问决策树可以用以下流程图来描述:

                        权限管理-Ranger的介绍和使用(集成Hive),第2张

                        下表列出了Ranger支持的所有系统的模型实体枚举值:

                        ServiceResourceAccess Type
                        HDFSPathRead,Write,Execute
                        HBaseTable,Column-family,ColumnRead,Write,Create,Admin
                        HiveDatabase,Table,UDF,Column,URLSelect,Update,Create,Drop,Alter,Index,Lock,Write,Read,ALL
                        SqoopConnector,Link,JobREAD,WRITE
                        StormTopologySubmit Topology,File Upload,File Download,Kill Topology,Rebalance,Activate,Deactivate,Get Topology Conf, Get Topology,Get User Topology,Get Topology Info,Upload New Credential
                        SolrCollectionQuery,Update,Others,Solr Admin
                        KafkaTopicPublish,Consume,Configure,Describe,Create,Delete,Kafka Admin
                        KnoxTopology,ServiceAllow
                        KylinProjectQUERY,OPERATION,MANAGEMENT,ADMIN
                        YARNQueuesubmit-app,admin-queue
                        AtlasType Catagory,Type Name,Entity Type,Entity Classification,Entity ID,Atlas ServiceCreate Type,UpdateType,Delete Type,Read Entity,Create Entity,Update Entity,Delete Entity,Read Classification,Add Classification,Update Classification,Remove Classification,Admin Export,Admin Import
                        NifiNiFi ResourceRead,Write

                        架构

                        权限管理-Ranger的介绍和使用(集成Hive),第3张

                        权限管理-Ranger的介绍和使用(集成Hive),第4张

                        Ranger主要由以下三个组件构成:

                        • RangerAdmin: 以RESTFUL形式提供策略的增删改查接口,同时内置一个Web管理页面。管理员角色的用户可以通过RangerAdmin提供的web界面或REST APIS来定制安全策略。这些策略被存储在数据库中。

                        • AgentPlugin: 嵌入到各系统执行流程中,是一个轻量级的Java程序(例如,Ranger对Hive的组件,就被嵌入在Hiveserver2里)。

                          定期从RangerAdmin拉取策略,根据策略执行访问决策树,并且记录访问审计。

                          当接收到来自组件的用户请求时,对应组件的Plugin会拦截该请求,并根据安全策略对其进行评估。

                        • UserSync: 定期从LDAP/Unix/File中加载用户,上报给RangerAdmin。

                          Ranger的其他架构简要说明:

                          • KMS: Hadoop透明加密,Hadoop Key Management Server(KMS)是一个基于HadoopKeyProvider API编写的密钥管理服务器。RangerKMS就是对KMS的策略管理和秘钥管理,使用keyadmin用户登陆。
                          • TAG: 基于标签的权限管理,当一个用户的请求涉及到多个应用系统中的多个资源的权限时,可以通过只配置这些资源的tag方便快速的授权。

                            权限管理流程,以Sqoop2插件的权限控制为例:

                            • RangerAdmin创建服务Service
                            • RangerAdmin创建策略Policy
                            • SqoopPlugin插件拉取策略
                            • SqoopPlugin对用户访问请求鉴权:show connector
                            • SqoopPlugin插件记录审计日志Audit
                            • RangerAdmin查看审计日志Audit

                              系统插件

                              系统插件主要负责三件事:

                              • 定期从RangerAdmin拉取策略
                              • 根据策略执行访问决策树
                              • 实时记录访问审计

                                以上执行逻辑是通用的,可由所有系统插件引用,因此剩下的问题是如何把这些逻辑嵌入到各个系统的访问决策流程中去。

                                实现可扩展接口:多数的系统在实现时都有考虑功能扩展性的问题,一般会为核心的模块暴露出可扩展的接口,访问控制模块也不例外。Ranger通过实现访问控制接口,将自己的逻辑嵌入各个系统。

                                下表列出了Ranger插件对所有支持的系统的扩展接口:

                                ServiceExtensible InterfaceRanger Implement Class
                                HDFSorg.apache.hadoop.hdfs.server.namenode.INodeAttributeProviderorg.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer
                                HBaseorg.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interfaceorg.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor
                                Hiveorg.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizerFactoryorg.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory
                                Sqooporg.apache.sqoop.security.AuthorizationValidatororg.apache.ranger.authorization.sqoop.authorizer.RangerSqoopAuthorizer
                                Stormorg.apache.storm.security.auth.IAuthorizerorg.apache.ranger.authorization.storm.authorizer.RangerStormAuthorizer
                                Solrorg.apache.solr.security.AuthorizationPluginorg.apache.ranger.authorization.solr.authorizer.RangerSolrAuthorizer
                                Kafkakafka.security.auth.Authorizerorg.apache.ranger.authorization.kafka.authorizer.RangerKafkaAuthorizer
                                Knoxorg.apache.knox.gateway.deploy.ProviderDeploymentContributorBaseorg.apache.ranger.authorization.knox.deploy.RangerPDPKnoxDeploymentContributor
                                Kylinorg.apache.kylin.rest.security.ExternalAclProviderorg.apache.ranger.authorization.kylin.authorizer.RangerKylinAuthorizer
                                YARNorg.apache.hadoop.yarn.security.YarnAuthorizationProviderorg.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer
                                Atlasorg.apache.atlas.authorize.AtlasAuthorizerorg.apache.ranger.authorization.atlas.authorizer.RangerAtlasAuthorizer
                                NifiNANA

                                各个系统插件安装节点:

                                ServiceInstall Node
                                HDFSName Node
                                HBaseMaster,Regional Server
                                HiveHiveServer2
                                SqoopALL/Stand-alone
                                StormALL/Cluster
                                SolrALL/Cluster
                                KafkaALL/Cluster
                                KnoxKnox gateway
                                KylinALL/Stand-alone
                                YARNResource Manager
                                AtlasALL/Stand-alone
                                NifiNA

                                系统插件拉取策略:

                                • 主动到RangerAdmin拉取策略,而非RangerAdmin把策略下发给各个插件;
                                • 策略有变化,拉取新的策略更新内存中鉴权引擎,同时保存一份备份文件在本地,RangerAdmin挂掉后,组件也重启时,可以使用本地的备份继续鉴权;
                                • 删除RangerAdmin上面的service,会使插件鉴权不可用。

                                  权限管理-Ranger的介绍和使用(集成Hive),第5张

                                  以Hive为例,RangerHiveAuthorizer在初始化时会启动一个PolicyRefresher线程定时的从Ranger-admin拉取所有的策略,然后缓存到本地,之后当需要授权时直接根据这些策略进行授权。PolicyRefresher默认是每隔30s拉取一次。

                                  安装

                                  环境说明

                                  Ranger2.0要求对应的Hadoop为3.x以上,Hive为3.x以上版本,JDK为1.8以上版本。Hadoop及Hive等需开启用户认证功能,本文基于开启Kerberos安全认证的Hadoop和Hive环境。

                                  注:本文中所涉及的Ranger相关组件均安装在hadoop102节点。

                                  创建系统用户和Kerberos主体

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

                                  (1)创建ranger系统用户

                                  [root@hadoop102 ~]# useradd  ranger -G hadoop
                                  [root@hadoop102 ~]# echo ranger | passwd --stdin ranger
                                  

                                  (2)检查HTTP主体是否正常(该主体在Hadoop开启Kerberos时已创建)

                                  • 使用keytab文件认证HTTP主体

                                    [root@hadoop102 ~]# kinit -kt /etc/security/keytab/spnego.service.keytab HTTP/hadoop102@EXAMPLE.COM
                                    
                                  • 查看认证状态,如下图所示,即为正常

                                    [root@hadoop102 ~]# klist
                                    

                                    权限管理-Ranger的介绍和使用(集成Hive),第6张

                                    • 注销认证

                                      [root@hadoop102 ~]# kdestroy 
                                      

                                      (3)创建rangeradmin主体

                                      • 创建主体

                                        [root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey rangeradmin/hadoop102"
                                        
                                      • 生成keytab文件

                                        [root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/rangeradmin.keytab rangeradmin/hadoop102"
                                        
                                      • 修改keytab文件所有者

                                        [root@hadoop102 ~]# chown ranger:ranger /etc/security/keytab/rangeradmin.keytab
                                        

                                        (4)创建rangerlookup主体

                                        • 创建主体

                                          [root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey rangerlookup/hadoop102"
                                          
                                        • 生成keytab文件

                                          [root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/rangerlookup.keytab rangerlookup/hadoop102"
                                          
                                        • 修改keytab文件所有者

                                          [root@hadoop102 ~]# chown ranger:ranger /etc/security/keytab/rangerlookup.keytab
                                          

                                          (5)创建rangerusersync主体

                                          • 创建主体

                                            [root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey rangerusersync/hadoop102"
                                            
                                          • 生成keytab文件

                                            [root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/rangerusersync.keytab rangerusersync/hadoop102"
                                            
                                          • 修改keytab文件所有者

                                            [root@hadoop102 ~]# chown ranger:ranger /etc/security/keytab/rangerusersync.keytab
                                            

                                            安装RangerAdmin

                                            数据库环境准备

                                            (1)登录MySQL

                                            [root@hadoop102 ~]# mysql -uroot -p000000
                                            

                                            (2)在MySQL数据库中创建Ranger存储数据的数据库

                                            mysql> create database ranger;
                                            

                                            (3)更改mysql密码策略,为了可以采用比较简单的密码

                                            mysql> set global validate_password_length=4;
                                            mysql> set global validate_password_policy=0;
                                            

                                            (4)创建用户

                                            mysql> grant all privileges on ranger.* to ranger@'%'  identified by 'ranger';
                                            
                                            安装RangerAdmin

                                            (1)在hadoop102的/opt/module路径上创建一个ranger

                                            [root@hadoop102 ~]# mkdir /opt/module/ranger
                                            

                                            (2)解压软件

                                            [root@hadoop102 software]# tar -zxvf ranger-2.0.0-admin.tar.gz -C /opt/module/ranger
                                            

                                            (3)进入/opt/module/ranger/ranger-2.0.0-admin路径,对install.properties配置:

                                            [root@hadoop102 ranger-2.0.0-admin]# vim install.properties
                                            

                                            修改以下配置内容:

                                            #mysql驱动
                                            SQL_CONNECTOR_JAR=/opt/software/mysql-connector-java-5.1.48.jar
                                            #mysql的主机名和root用户的用户名密码
                                            db_root_user=root
                                            db_root_password=000000
                                            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
                                            

                                            (4)在/opt/module/ranger/ranger-2.0.0-admin目录下执行安装脚本

                                            [root@hadoop102 ranger-2.0.0-admin]# ./setup.sh
                                            

                                            出现以下信息,说明安装完成:

                                            2020-04-30 13:58:18,051  [I] Ranger all admins default password change request processed successfully..
                                            Installation of Ranger PolicyManager Web Application is completed.
                                            

                                            (5)修改/opt/module/ranger/ranger-2.0.0-admin/conf/ranger-admin-site.xml配置文件中的以下属性。

                                            [root@hadoop102 ranger-2.0.0-admin]# vim /opt/module/ranger/ranger-2.0.0-admin/conf/ranger-admin-site.xml
                                            

                                            增加如下参数:

                                            
                                                ranger.jpa.jdbc.password
                                                ranger
                                                
                                            
                                            
                                                ranger.service.host
                                                hadoop102
                                            
                                            
                                            启动RangerAdmin

                                            (1)启动ranger-admin(以ranger用户启动)

                                            [root@hadoop102 ranger-2.0.0-admin]# sudo -i -u ranger ranger-admin start
                                            Starting Apache Ranger Admin Service
                                            Apache Ranger Admin Service with pid 7058 has started.
                                            

                                            ranger-admin在安装时已经配设置为开机自启动,因此之后无需再手动启动!

                                            (2)查看启动后的进程

                                            [root@hadoop102 ranger-2.0.0-admin]# jps
                                            7058 EmbeddedServer
                                            8132 Jps
                                            

                                            (3)访问Ranger的WebUI,地址为:http://hadoop102:6080

                                            权限管理-Ranger的介绍和使用(集成Hive),第7张

                                            (4)停止ranger(此处不用执行)

                                            [root@hadoop102 ranger-2.0.0-admin]# sudo -i -u ranger ranger-admin stop
                                            
                                            登录Ranger

                                            默认可以使用用户名:admin,密码为之前配置的atguigu123进行登录!登录后界面如下:

                                            权限管理-Ranger的介绍和使用(集成Hive),第8张

                                            安装 RangerUsersync

                                            RangerUsersync简介

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

                                            RangerUsersync安装

                                            (1)解压软件

                                            [root@hadoop102 software]# tar -zxvf ranger-2.0.0-usersync.tar.gz -C /opt/module/ranger/
                                            

                                            (2)配置软件

                                            在/opt/module/ranger/ranger-2.0.0-usersync目录下修改以下文件:

                                            [root@hadoop102 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
                                            

                                            (3)在/opt/module/ranger/ranger-2.0.0-usersync目录下执行安装脚本:

                                            [root@hadoop102 ranger-2.0.0-usersync]# ./setup.sh
                                            

                                            出现以下信息,说明安装完成:

                                            ranger.usersync.policymgr.password has been successfully created.
                                            Provider jceks://file/etc/ranger/usersync/conf/rangerusersync.jceks was updated.
                                            [I] Successfully updated password of rangerusersync user
                                            

                                            (4)修改/opt/module/ranger/ranger-2.0.0-usersync/conf/ranger-ugsync-site.xml配置文件中的以下参数:

                                            
                                                ranger.usersync.enabled
                                                true
                                            
                                            

                                            RangerUsersync启动

                                            (1)启动之前,在ranger admin的web-UI界面,查看用户信息如下:

                                            权限管理-Ranger的介绍和使用(集成Hive),第9张

                                            (2)启动RangerUserSync(使用ranger用户启动)

                                            [root@hadoop102 ranger-2.0.0-usersync]# sudo -i -u ranger ranger-usersync start
                                            Starting Apache Ranger Usersync Service
                                            Apache Ranger Usersync Service with pid 7510 has started.
                                            

                                            (3)启动后,再次查看用户信息:

                                            权限管理-Ranger的介绍和使用(集成Hive),第10张

                                            说明ranger-usersync工作正常!

                                            ranger-usersync服务也是开机自启动的,因此之后不需要手动启动!

                                            安装Ranger Hive-plugin

                                            Ranger Hive-plugin简介

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

                                            Ranger Hive-plugin安装

                                            (1)解压软件

                                            [root@hadoop102 software]# tar -zxvf ranger-2.0.0-hive-plugin.tar.gz -C /opt/module/ranger/
                                            

                                            (2)配置软件

                                            [root@hadoop102 ranger-2.0.0-hive-plugin]# 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
                                            

                                            (3)启用Ranger Hive-plugin,在/opt/module/ranger/ranger-2.0.0-hive-plugin下执行以下命令

                                            [root@hadoop102 ranger-2.0.0-hive-plugin]# ./enable-hive-plugin.sh
                                            

                                            查看$HIVE_HOME/conf目录是否出现以下配置文件,如出现则表示Hive插件启用成功。

                                            [root@hadoop102 ranger-2.0.0-hive-plugin]# ls $HIVE_HOME/conf | grep -E hiveserver2\|ranger
                                            hiveserver2-site.xml
                                            ranger-hive-audit.xml
                                            ranger-hive-security.xml
                                            ranger-policymgr-ssl.xml
                                            ranger-security.xml
                                            

                                            (4)重启Hiveserver2,需使用hive用户启动。

                                            [root@hadoop102 ~]# sudo -i -u hive hiveserver2
                                            

                                            在ranger admin上配置hive插件

                                            (1)授予hive用户在Ranger中的Admin角色

                                            • 点击hive用户

                                              权限管理-Ranger的介绍和使用(集成Hive),第11张

                                            • 将角色设置为Admin

                                              权限管理-Ranger的介绍和使用(集成Hive),第12张

                                              (2)配置Hive插件

                                              • 点击Access Manager,添加Hive Manager。

                                                权限管理-Ranger的介绍和使用(集成Hive),第13张

                                              • 配置服务详情

                                                权限管理-Ranger的介绍和使用(集成Hive),第14张

                                                注:

                                                • 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

                                                  (3)测试连接

                                                  点击测试连接:

                                                  权限管理-Ranger的介绍和使用(集成Hive),第15张

                                                  点击测试连接后会提示连接失败,具体原因是rangerlookup用户没有访问hive表的权限,这是因为到目前为止,我们还未使用Ranger向任何用户赋予任何权限,故此时连接失败为正常现象。

                                                  权限管理-Ranger的介绍和使用(集成Hive),第16张

                                                  (4)保存Hive Manager

                                                  • 点击Add按钮

                                                    权限管理-Ranger的介绍和使用(集成Hive),第17张

                                                  • 点击下图所示hive按钮

                                                    权限管理-Ranger的介绍和使用(集成Hive),第18张

                                                    下图内容表示,目前rangerlookup用户已经拥有了Hive所有资源的所有权限。

                                                    权限管理-Ranger的介绍和使用(集成Hive),第19张

                                                    (5)重新测试连接

                                                    • 点击下图编辑按钮

                                                      权限管理-Ranger的介绍和使用(集成Hive),第20张

                                                    • 重新点击Test Connection

                                                      权限管理-Ranger的介绍和使用(集成Hive),第21张

                                                    • 连接成功

                                                      权限管理-Ranger的介绍和使用(集成Hive),第22张

                                                      使用Ranger对Hive进行权限管理

                                                      权限控制初体验

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

                                                      权限管理-Ranger的介绍和使用(集成Hive),第23张

                                                      (2)验证:使用atguigu用户尝试进行认证,认证成功后,使用beeline客户端连接Hiveserver2

                                                      • 使用atguigu用户认证,并按照提示输入密码

                                                        [atguigu@hadoop102 ~]$ kinit atguigu
                                                        
                                                      • 登录beeline客户端

                                                        [atguigu@hadoop102 ~]$ beeline -u "jdbc:hive2://hadoop102:10000/;principal=hive/hadoop102@EXAMPLE.COM"
                                                        

                                                        (3)执行以下sql语句,验证当前用户为atguigu

                                                        权限管理-Ranger的介绍和使用(集成Hive),第24张

                                                        (4)执行use gmall语句,结果如图所示,atguigu用户没有对gmall库的使用权限

                                                        权限管理-Ranger的介绍和使用(集成Hive),第25张

                                                        (5)赋予atguigu用户对gmall数据库的访问权限

                                                        • 点击Add New Policy

                                                          权限管理-Ranger的介绍和使用(集成Hive),第26张

                                                        • 配置授权策略

                                                          如下图所示,将gmall库的所有表的所有权限均授予给了atguigu用户。

                                                          权限管理-Ranger的介绍和使用(集成Hive),第27张

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

                                                          Ranger授权模型

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

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

                                                          权限管理-Ranger的介绍和使用(集成Hive),第28张

                                                          官网其他权限配置

                                                          更多配置,可以参考官网介绍:https://cwiki.apache.org/confluence/display/RANGER/Row-level+filtering+and+column-masking+using+Apache+Ranger+policies+in+Apache+Hive