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大數據挖掘從入門到進階實戰》,喜歡的朋友或同學, 可以在公告欄那里點擊購買鏈接購買博主的書進行學習,在此感謝大家的支持。關注下面公眾號,根據提示,可免費獲取書籍的教學視頻。


免責聲明!

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



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