一、基本介紹
1、介紹
Ranger是HDP體系統中安全管理的重要一環。它提供了具體資源(如HBase中的具體表)權限管控、訪問監控、數據加密的功能。
2、組件介紹
Raner是由三個部分組件:Ranger Admin 、Ranger Usersync 與Ranger plugin,它們關系如下:
3、在Ranger的官網中有對於這三個組件的說明
組件名稱 | 說明 |
---|---|
Admin | Ranger Admin Portal是安全管理的中心接口。 用戶可以創建和更新策略,這些策略存儲在策略數據庫中。 每個組件內的Plugins會定期輪詢這些策略。Portal還包括一個審計服務器,它發送從插件收集的審計數據,以便存儲在HDFS或關系數據庫中 |
UserSync | 同步實用工具來從Unix或LDAP或Active Directory中拉取用戶和組。 用戶或組信息存儲在Ranger門戶中,用於策略定義。 |
PlugIn | 插件是嵌入每個集群組件進程的輕量級Java程序。 例如,Apache Hive的Apache Ranger插件嵌入在Hiveserver2中。 這些插件從中央服務器提取策略,並將它們本地存儲在一個文件中。 當用戶請求通過組件時,這些插件攔截請求並根據安全策略進行評估。 插件還可以從用戶請求中收集數據,並按照單獨的線程將此數據發送回審計服務器 |
4、Ranger Admin
Ranger admin它包含三個部分: Web頁面、Rest消息處理服務以及數據庫。 我們可以把它看成一個用來數據集中存儲中心(所有的數據都集中存在這里,但是其它兩個組件也可單獨運行存在)。它的具體作用:
1. 接收UserSync進程傳過來的用戶、組信息。 並將它們保存到MySql數據庫中。 需要注意:這些用戶信息在配置權限策略的時候需要使用。這個很容易理解,就象領物料的時候,管理員需要登記物料的領用人,如果不是本公司的人,肯定就不會讓你領了。
2. 提供創建policy策略的接口
3. 提供外部REST消息的處理接口
5、UserSync
UserSync是Ranger提供的一個用戶信息同步接口,可以用來同步Linux用戶信息與LDAP用戶信息。通過配置項:
SYNC_SOURCE = LDAP/Unix
來確認是LDAP還是Unix, 默認情況是同步Unix信息。
UserSync不是實時同步的
6、Plugin
1)NameNode啟動時候,會創建一個Hdfs Plugin線程, 這個線程啟動后就會讀取配置信息
2)同步完成后,hdfs plugin線程會每隔一段時間(30s)會往ranger admin發送一次消息,同步一次policy信息
二、安裝服務
1、登陸Ambari,通過點擊首頁左下角的Actions按鈕我們會看到新建服務選項
2、點擊新建服務之后會進入新建服務向導頁面。我們勾選Ranger和Ranger KMS這兩個服務並點擊下一步,如下圖所示
3、接着我們會看到一條提示信息,要求我們配置Ambari-Server的JDBC驅動信息,如下圖所示。因為Ranger需要使用關系型數據庫存儲一些元數據信息,這里我們選擇使用MySQL數據庫。將MySQL驅動jar包上傳到Ambari-Server所在的服務器,然后執行以下命令。
4、將3個服務安裝在同一台機器上
5、分配Tagsync,從客戶端和客戶端組件的分配。
6、Ranger Admin的配置
[root@node101 ~]# mysql -uroot -pyinzhengjie Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 71 Server version: 5.6.42 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | ambari | | mysql | | performance_schema | +--------------------+ 4 rows in set (0.00 sec) mysql> CREATE DATABASE ranger; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON ranger.* TO 'ranger'@'%' IDENTIFIED BY 'admin123' WITH GRANT OPTION; Query OK, 0 rows affected (0.01 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> select Host,User,Password from mysql.user where user='ranger'; +----------------------------+--------+-------------------------------------------+ | Host | User | Password | +----------------------------+--------+-------------------------------------------+ | node101.yinzhengjie.org.cn | ranger | *BD0B1F48FDC55BD27555FC2F22FF29A68A25A1D7 | +----------------------------+--------+-------------------------------------------+ 1 row in set (0.00 sec) mysql> quit Bye [root@node101 ~]# [root@node101 ~]# mysql -uroot -pyinzhengjie #登陸mysql進行授權操作 [root@node101 ~]# mysql -h node101.yinzhengjie.org.cn -uranger -pyinzhengjie Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 80 Server version: 5.6.42 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | ranger | +--------------------+ 2 rows in set (0.00 sec) mysql> quit Bye [root@node101 ~]# [root@node101 ~]# mysql -h master -uranger -padmin123 #在mysql服務端授權成功之后,一定要進行測試!驗證是否可以登陸數據庫!
7、Ranger的配置 ,也可以先關閉,等安裝完成了,再去開啟,填入配置
8、配置RangerKMS
[root@node101 ~]# mysql -uroot -pyinzhengjie Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 84 Server version: 5.6.42 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE DATABASE rangerkms; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON rangerkms.* TO 'rangerkms'@'5' IDENTIFIED BY '123456' WITH GRANT OPTION; Query OK, 0 rows affected (0.01 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.01 sec) mysql> select Host,User,Password from mysql.user where user='rangerkms'; +----------------------------+-----------+-------------------------------------------+ | Host | User | Password | +----------------------------+-----------+-------------------------------------------+ | node101.yinzhengjie.org.cn | rangerkms | *BD0B1F48FDC55BD27555FC2F22FF29A68A25A1D7 | +----------------------------+-----------+-------------------------------------------+ 1 row in set (0.00 sec) mysql> quit Bye [root@node101 ~]# [root@node101 ~]# mysql -uroot -pyinzhengjie #數據庫授權 [root@node101 ~]# mysql -h node101.yinzhengjie.org.cn -urangerkms -pyinzhengjie Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 85 Server version: 5.6.42 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | rangerkms | +--------------------+ 2 rows in set (0.00 sec) mysql> quit Bye [root@node101 ~]# [root@node101 ~]# mysql -h master -urangerkms -p123456 #授權成功后,別忘記驗證授權是否生效!
9、接着往下拉,需要你輸入一個密碼,如下圖所示,輸入后點擊下一步:
10、配置完畢后,會彈出一個Dependent Configurations對話框,如下圖所示,點擊OK即可~
11、忽略警告(我的電腦內存有限,分配的少點僅僅用於測試)
12、確認配置無誤后,點擊Depoly按鈕
13、安裝服務成功
14、點擊完成
15、安裝完成后,需要陸續重啟已經部署的服務
三、配置服務
1、安裝完畢之后我們需要配置Ranger以讓它能夠正常工作,通過點擊Configs按鈕來到配置界面。如下圖所示,Ranger到配置項有很多分為了六大類,他們分別是管理員配置,用戶信息配置,插件配置,審計配置,標簽同步配置和高級配置。這里我們主要關注插件配置和審計配置,其他配置項保持默認即可。、
2、對Ranger的插件配置
3、對Ranegr的審計配置
4、點擊ok,保存配置信息
5、如下圖所示,按照提示重啟相應的服務即可
6、重啟相應的服務之后,我們就可以去看看Ranger的Web UI管理控制台啦
7、Ranger功能介紹-查看Ranger用戶
如下圖所示,通過Ambari的Quick Links功能進入Ranger的管理控制台,輸入默認的用戶名和密碼進行登陸(默認的用戶名和密碼均為“admin”)。
8、單擊Settings設置按鈕進入Ranger用戶管理界面
9、如下圖所示,點擊Setting之后,在這里可以看到Ranger的所有用戶。我們發現Ranger已經預建好來一批用戶,這些用戶是不是很眼熟呢?他們是Ambari用戶管理里面的集群組件用戶如出一轍。沒錯,這些用戶就是從Hadoop集群的Linux用戶同步過來的。
10、Ranger將用戶分為兩類來源,內部用戶和外部擴展用戶。
內部用戶: 是指Ranger自己單方面創建的用戶,主要用來做系統內部管理相關工作,與外部用戶沒有關聯。 外部用戶: 是指通過同步程序從集群服務中同步而來的用戶,是Ranger用戶和集群服務用戶的一層映射,主要用於權限策略的分配。如上圖所示,admin用戶屬於內部用戶,而所有同步過來的集群服務用戶均屬於外部擴展用戶。
四、Ranger功能介紹-權限策略
1、現在我們開始介紹如何通過Ranger進行數據授權。如下圖所示,首先單擊“Access Manager”進入服務管理頁面。
2、如下圖所示,我們會看到一個格柵布局的列表,他們是Ranger目前能夠支持的所有子系統。因為在安裝Ranger的時候已經開啟了HDFS的插件,所以我們在HDFS組件下可以看到“hdp_hadoop”服務。它是Ranger根據開啟的插件預建的服務項,以Ambari集群名稱 + 組件名稱的規則命名。
3、點擊上圖中的“hdp_hadoop”進入HDFS的權限策略列表頁面。如下圖所示,這里可以查看,新建,修改根刪除HDFS的權限策略,單擊“Add New Pollicy”進入新建策略頁面:
4、點擊上圖中的“Add New Pollicy”按鈕后,就可以進入下圖的界面,授權策略頁面分為Pollicy Detail和Allow Conditions兩個部分,下圖中針對各個參數都進行了標注
5、如上圖所示,點擊“Add”后我們就會在HDFS的策略界面中看到對應的規則,如下圖所示
6、接下來我們需要驗證下權限策略是否生效,首先通過ssh登陸到集群服務器並切換成ranger用戶。具體操作如下:
[root@master ~]# su ranger [ranger@master root]$ hdfs dfs -ls / 可以查看 Found 9 items drwxrwxrwt - yarn hadoop 0 2020-11-18 14:46 /app-logs drwxr-xr-x - yarn hadoop 0 2020-11-18 14:40 /ats drwxr-xr-x - hdfs hdfs 0 2020-11-18 14:41 /atsv2 drwxr-xr-x - hdfs hdfs 0 2020-11-18 14:40 /hdp drwxr-xr-x - mapred hdfs 0 2020-11-18 14:40 /mapred drwxrwxrwx - mapred hadoop 0 2020-11-18 14:40 /mr-history drwxr-xr-x - hdfs hdfs 0 2020-11-18 14:40 /ranger drwxrwxrwx - hdfs hdfs 0 2020-11-18 14:42 /tmp drwxr-xr-x - hdfs hdfs 0 2020-11-18 14:40 /user [ranger@master root]$ hdfs dfs -mkdir /user/test1 沒有寫的權限 mkdir: Permission denied: user=ranger, access=WRITE, inode="/":hdfs:hdfs:drwxr-xr-x
7、接下來,我們需要編輯咱們之前自定義的策略,修改ranger用戶的權限,如下圖所示,首先點擊編輯:添加上寫的權限
[ranger@master root]$ hdfs dfs -mkdir /user/test1
五、Ranger功能介紹-審計日志
作為一個企業大數據平台,它的基礎服務會被大量上層應用使用(例如HDFS,HBase等)。對平台中基礎組件對操作進行追溯也是一項必不可少對功能,Ranger就能幫助實現審計日志對功能。Ranger為我們提供了四類審計日志功能,即訪問日志,管理員日志,登陸會話日志,插件日志。
1、訪問日志
訪問日志主要記錄對是用戶對資源對訪問情況。還記得剛才使用ranger用戶執行了那些HDFS操作嗎?現在通過Audit審計菜單進入訪問日志頁面。
2、管理員日志
管理員日志主要記錄的是管理員的操作,例如新建用戶,新建或者修權限策略這些操作都會被管理員日志記錄下來。
3、登陸會話日志
登陸會話日志會記錄所有用戶的登陸行為,包括登陸人,登陸方式,登陸時間,登陸人的IP地址等信息。
4、插件日志
Ranger的插件會定期從管理門戶獲取權限策略,插件日志就記錄了這些插件同步策略的軌跡。什么插件在哪個時間點更新何種策略都能清晰的在日志中體現。
推薦:需要租用雲服務器,域名等其他服務的可以掃描下方二維碼,價格優惠,華為雲服務: