參考鏈接
1. Ranger架構分析:https://www.jianshu.com/p/d0bf6e77bb8f
2. 用戶指南:https://cwiki.apache.org/confluence/display/RANGER/Apache+Ranger+0.5+-+User+Guide
3. Ranger原理:https://blog.csdn.net/qq475781638/article/details/90247153#2Apache_Sentry_48
一、背景
大數據最基本就是數據以及用於計算的資源,需要將相應的數據和資源開放給對應的用戶使用,以防被竊取、被破壞造成損失,這個就涉及大數據安全。 主流的大數據安全組件Kerberos由於使用臨時的用戶驗證機制不適用用戶多的情況、Sentry只適用少部分的Hadoop生態組件應用場景少。
Apache Ranger作爲標準化的訪問控制層,引入統一的權限模型與管理界面,極大地簡化了數據權限的管理,統一的權限管理降低了學習成本,非常易於使用。
Apache Ranger:一個用於在整個Hadoop平臺上使用,用來監視和管理全面的數據安全性的框架。主要是提供一個集中式安全管理框架, 並解決授權和審計問題。
特點:集中式安全管理,可在Web UI或使用REST API管理所有與安全相關的任務;基於策略(Policy-Based)的訪問權限模型 ,易於使用;支持大部分Hadoop生態組件;支持審計(審計主要是日誌審計,主要記錄各個組件資料的訪問信息,也就是從各個組件日誌中抽到相應的登錄訪問信息 );支持用戶與LDAP(Lightweight Directory Access Protocol,輕量目錄訪問協議)、Linux系統的用戶同步
支持的組件:HDFS;YARN;HBase;Hive;Solr;Storm;Sqoop;Kafka;Atlas;Nifi;Knox等。其中HDFS主要是對文件訪問權限進行管理,HBase對應表、列族和列的權限管理,Hive對應表的數據庫、表和列的權限管理、Atlas對應類別、元數據實體、類型、輸入/輸出的權限管理。
優點:提供了細粒度級(例如hive列級別);基於訪問策略的權限模型;權限控制插件式,統一方便的策略管理;支持審計日誌,可記錄各種操作的審計日誌,提供統一的查詢接口和界面;豐富的Hadoop生態組件支持;支持與Kerberos集成;提供REST API可供二次開發
二、基本架構
用戶可通過Ranger提供的Web界面以Admin權限登錄添加權限控制Service服務,在Service中添加授權的策略Policy,系統將Policy存入MySQL數據庫中,並在本地完成備份,當用戶去請求被授權的組件時,對應的組件plugin插件回去admin拉取policy並對應策略內容進行授權管理,符合權限允許操作否則拒絕用戶請求;同時整個過程(用戶登錄、創建服務策略、插件授權管理)都產生審計日誌,並存儲在Solr中。
三、基本組件
Ranger中主要組件:Ranger Admin、Ranger UserSync、Plugin
- Ranger Admin:
職責:提供對策略的增刪改查操作,並提供WebUI和RestAPI接口
組成:Web UI、REST API、數據庫
作用:接收UserSync進程傳過來的用戶、用戶組信息, 並將它們保存到MySql數據庫中。(這些用戶信息在配置權限策略的時候需要使用,即分配策略的對象);提供創建policy的接口;提供外部REST消息的處理接口(界面上的一些CURD操作)
- Ranger UserSync:
職責:定期從LDAP/Unix/File中加載用戶,並同步給Ranger Admin(Ranger的用戶管理並不同步,即在系統添加的用戶並不能立刻同步到ranger中)
- Plugin
職責:以插件的形式集成到各組件中,定期從Ranger Admin拉取策略,並根據用戶訪問執行策略,且定期將審計日誌記錄到Solr。實際上是個線程,會去讀取策略的配置文件 具體的實現接口見下表
組件 | 使用到的組件自帶的擴展接口 | Ranger實現類 |
---|---|---|
HDFS | org.apache.hadoop.hdfs.server.namenode.INodeAttributeProvider | org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer |
HBase | org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface | org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor |
Hive | org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizerFactory | org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory |
Sqoop | org.apache.sqoop.security.AuthorizationValidator | org.apache.ranger.authorization.sqoop.authorizer.RangerSqoopAuthorizer |
Solr | org.apache.solr.security.AuthorizationPlugin | org.apache.ranger.authorization.solr.authorizer.RangerSolrAuthorizer |
Kafka | kafka.security.auth.Authorizer | org.apache.ranger.authorization.kafka.authorizer.RangerKafkaAuthorizer |
Atlas | org.apache.atlas.authorize.AtlasAuthorizer | org.apache.ranger.authorization.atlas.authorizer.RangerAtlasAuthorizer |
其餘組件:Ranger Tagsyncs——定期從標籤源(通常是Atlas),同步標籤信息;Ranger KMS——Ranger Key Management Service,基於Hadoop KMS 封裝的祕鑰管理服務,支持HDFS靜態數據加密。
四、權限模型及實現
權限模型:定義“用戶-權限-資源”,其中用戶使用User/group表達,User表示訪問資源的用戶,Group表示User所屬的用戶組;權限主要由(AllowACL, DenyACL)來表達(Access Control List),類似白名單&黑名單,AllowACL用來描述允許訪問的情況,DenyACL用來描述拒絕訪問的情況,不同的組件對應的權限不一樣;資源對於不同組件對應不同,具體見下表。
插件 | 資源 | 權限項 |
---|---|---|
HDFS | Path | Read Write Execute |
HBase | Table,Column-family,Column | Read Write Create Admin |
Hive | Database,Table,UDF,Column,URL | Select Create Update Drop Alter Index Lock Read Write All |
YARN | Queue | submit-app admin-queue |
Solr | Collection | Query,Update,Others,Solr Admin |
Sqoop | Connector,Link,Job | READ,WRITE |
Kafka | Topic | Publish,Consume,Configure,Describe,Create,Delete,Kafka Admin |
Storm | Topology | Submit Topology,File Upload,File Download,Kill Topology,Rebalance,Activate,Deactivate,Get Topology Conf, Get Topology,Get User Topology,Get Topology Info,Upload New Credential |
Atlas | Type Catagory,Type Name,Entity Type,Entity Classification,Entity ID,Atlas Service | Create Type,UpdateType,Delete Type,Read Entity,Create Entity,Update Entity,Delete Entity,Read Classification,Add Classification,Update Classification,Remove Classification,Admin Export,Admin Import |
權限實現:
- Admin負責指定權限策略分配相應的資源給相應的用戶或組,存儲在MySQL中;
- Plugin負責定期從Ranger Admin拉取策略並根據策略執行訪問決策樹完成授權管理,最後實時記錄訪問審計(實際安裝部署plugin時通過hook方式調用各個組件服務達到權限管理 );
Plugin安裝的節點根據不同的組件有所不同,具體見下表,
組件 | 安裝節點 |
---|---|
HDFS | NameNode |
HBase | Master、RegionServer |
Hive | HiveServer2 |
Solr | ALL/Cluster |
YARN | Resource Manager |
Atlas | ALL/Standalone |
- 策略優先級:黑名單優先於白名單;黑名單排除優先於黑名單;白名單排除優先於白名單;
五、權限管理流程
以Ranger和HDFS集成爲例,
-
Ranger Admin創建服務Service(相當於web服務中的service封裝接口)
-
Ranger Admin通過服務Service創建策略Policy(存儲於mysql數據庫中)
-
HDFS Plugin(提前下載安裝部署完畢的Plugin)插件拉取策略
-
HDFS Plugin插件對用戶訪問請求鑑權(權限類型在mysql數據庫存儲)
-
HDFS Plugin插件記錄審計日誌Audit(存儲在Solr中)
-
Ranger Admin查看審計日誌Audit