Apache Ranger安裝部署

哥不是小蘿莉發表於2022-03-27

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大資料探勘從入門到進階實戰》,喜歡的朋友或同學, 可以在公告欄那裡點選購買連結購買博主的書進行學習,在此感謝大家的支援。關注下面公眾號,根據提示,可免費獲取書籍的教學視訊。

相關文章