大數據運維---Ranger權限管理


一、基本介紹

  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的插件會定期從管理門戶獲取權限策略,插件日志就記錄了這些插件同步策略的軌跡。什么插件在哪個時間點更新何種策略都能清晰的在日志中體現。

  

  推薦:需要租用雲服務器,域名等其他服務的可以掃描下方二維碼,價格優惠,華為雲服務:

        

 


免責聲明!

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



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