hbase 整合ranger


一、安裝hbase插件

1、解壓安裝插件

target目錄下拷貝ranger-2.1.0-SNAPSHOT-hbase-plugin.tar.gzhbase集群,你的這個包的版本可能跟我不一致。

 

hbase集群解壓hbase插件包

# tar zxvf ranger-2.1.0-SNAPSHOT-hbase-plugin.tar.gz -C /data1/hadoop

2、配置install.properties文件

修改如下配置:

POLICY_MGR_URL=http://192.168.4.50:6080

REPOSITORY_NAME=hivedev

COMPONENT_INSTALL_DIR_NAME=/data1/hadoop/hbase   #hbase安裝目錄

XAAUDIT.SOLR.ENABLE=true

XAAUDIT.SOLR.URL=http://192.168.4.50:6083/solr/ranger_audits

CUSTOM_USER=hduser   

CUSTOM_GROUP=hduser

3、啟動插件(root權限)

#sudo /data1/hadoop/ranger-2.1.0-hbase-plugin/enable-hbase-plugin.sh

啟動插件以后,在hbase-site.xml文件的最后默認會添加如下配置:

<property>

    <name>hbase.security.authorization</name>

    <value>true</value>

</property>

<property>

    <name>hbase.coprocessor.master.classes</name>

   <value>org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor</value>

</property>

<property>

    <name>hbase.coprocessor.region.classes</name>

    <value>org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor</value>

</property>

4、啟動hbase

# start-hbase.sh

5、前台配置

(1) 添加服務

 

 

 

 

 

 

點擊+號按鈕,添加服務,服務名需要與install.properties文件里面配置REPOSITORY_NAME屬性值的一致

服務添加完成以后,默認的hduser用戶擁有全部權限。

6、測試

(1) 使用hduser操作

使用hduser用戶,進入到hase客戶端,創建數據庫,表,插入數據

hbase(main):015:0> create 'test','f1'

 

hbase(main):016:0> list

TABLE                                                                                                                                                                                                                                                                         

test                                                                                                                                                                                                                                                                          

1 row(s)

Took 0.0123 seconds                                                                                                                                                                                                                                                           

=> ["test"]

 

hbase(main):017:0> put 'test','r1','f1:c1','yjt'

                                                                                                                                                                                                                                                         

hbase(main):018:0> get 'test','r1'

COLUMN                                                               CELL                                                                                                                                                                                                     

 f1:c1                                                               timestamp=1573457130189, value=yjt                                                                                                                                                                       

1 row(s)

Took 0.0700 seconds  

 

(2) 使用yjl用戶,測試是否擁有權限

 

 

 

說明當前的這個用戶是擁有權限的。

                                                                                                                                                                                                          

前台配置策略,限制yjl這個用戶對test表的讀取權限

 

 

 

右上角點擊添加策略

 

 

 

添加deny 權限

 

 

 

(3) 測試yjl用戶是否有讀取權限

 

 

 

從上可以看出來,權限被拒絕。

(4) 測試write權限

 

 

 

寫數據到test表,寫入拒絕。

在剛才的策略中為yjl這個用戶添加write權限,如下:

 

 

 

 

保存,客戶端測試yjl這個用戶是否有寫入權限:

 

 

說明配置成功。

這里有三點需要注意:

  1. 版本是否匹配?

ranger2.x里面使用的hbase版本是2.0.2,所以一開始我在使用hbase1.3.x或者1.4.x的時候,在啟動hbase時,報找不到類錯誤,如下:

2019-11-11 13:50:11,621 FATAL [yjt:16000.activeMasterManager] master.HMaster: The coprocessor org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor threw java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/coprocessor/RegionCoprocessor

java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/coprocessor/RegionCoprocessor

解決辦法就是更換hbase版本,換到2.x,或者降低ranger版本

  1. Hbase2.x版本的問題

在更換2.x版本以后,在啟動hbase的時候,繼續報錯,報錯如下:

2019-11-11 14:53:57,504 ERROR [Thread-14] master.HMaster: ***** ABORTING master yjt,16000,1573455225686: Unhandled exception. Starting shutdown. *****

java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so. Please check the config value of 'hbase.procedure.store.wal.use.hsync' to set the desired level of robustness and ensure the config value of 'hbase.wal.dir' points to a FileSystem mount that can provide it.

解決辦法:

hbase-site.xml配置文件添加如下配置:

<property>

  <name>hbase.unsafe.stream.capability.enforce</name>

  <value>false</value>

</property>

 

  1. Ranger-admin版本與hbase或者其他插件版本不一致可能導致問題。

Ranger-admib我使用的版本是2.1.0,而我在測試hbase的時候,hbase ranger插件我使用的是2.0.0,在啟動hbase的時候,包如下錯誤:

2019-11-11 14:31:28,206 WARN  [PEWorker-15] procedure.CreateTableProcedure: Retriable error trying to create table=hbase:namespace state=CREATE_TABLE_ADD_TO_META

org.apache.hadoop.hbase.security.AccessDeniedException: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user hduser',action: put, tableName:hbase:meta, family:info, column: state

        at org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor.requirePermission(RangerAuthorizationCoprocessor.java:589)

 

這樣會導致權限控制失敗,所以ranger-admin與各插件直接需要版本一致,不要給自己找太多麻煩。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM