Apache Ranger、业务背景、现状与需求、大数据安全组件介绍与对别、系统架构及实践、ranger admin、UserSync、plugin、权限模型、权限实现等
26.2.1業務背景
26.2.1.1現狀&&需求
26.2.2大數據安全組件介紹與對比
26.2.2.2 Apache Sentry
26.2.2.3 Apache Ranger
26.2.3 Knox,ranger,Kerveros,LDAP整合
26.2.3.1Kerberos與Ranger
26.3Apache Ranger系統架構及實踐
26.3.2組件介紹
26.3.2.1整體說明
26.3.2.2 Ranger Admin
26.3.2.3UserSync
26.3.2.4 Service Plugin
26.3.2.5 Ranger-SDK
26.3.3 權限模型
26.3.4 權限實現
26.3.4.1 Hdfs實現原理
26.3.4.2 Hbase實現原理
26.3.4.3 Hive實現原理
26.3.4.4 Yarn實現原理
26.2Apache ranger原理與應用實踐
轉載博文:https://blog.csdn.net/qq475781638/article/details/90247153
26.2.1業務背景
大數據集群最基本的就是數據以及用于計算的資源,是一個公司的寶貴財富,我們需要將它們很好管理起來,將相應的數據和資源開放給對應的用戶使用,防止被竊取、被破壞等,這就涉及到大數據安全。
26.2.1.1現狀&&需求
目前我們大數據集群的現狀是處于裸奔狀態,只要可以登錄linux機器即可對集群繼續相關操作
所以集群安全對于我們來說迫在眉睫,主要需求有以下幾個方面:
?支持多組件,最好能支持當前公司技術棧的主要組件,HDFS、HBASE、HIVE、YARN、STORM、KAFKA等
?支持細粒度的權限控制,可以達到HIVE列,HDFS目錄,HBASE列,YARN隊列,STORM拓撲,KAKFA的TOPIC
?開源,社區活躍,按照現有的集群改情況造改動盡可能的小,而且要符合業界的趨勢。
26.2.2大數據安全組件介紹與對比
目前比較常見的安全方案主要有三種:
Kerberos(業界比較常用的方案)
Apache Sentry(Cloudera選用的方案,cdh版本中集成)
Apache Ranger(Hortonworks選用的方案,hdp發行版中集成)
26.2.2.1Kerberos
Kerberos是一種基于對稱密鑰的身份認證協議,它作為一個獨立的第三方的身份認證服務,可以為其它服務提供身份認證功能,且支持SSO(即客戶端身份認證后,可以訪問多個服務如HBase/HDFS等)。
| KDC | Kerberos的服務端程序,用于驗證各個模塊 |
| Client | 需要訪問服務的用戶,KDC和Service會對用戶的身份進行認證。 |
| Service | 即集成了Kerberos的服務,如HDFS/YARN/HBASE等。 |
Kerberos協議過程主要有三個階段,第一個階段Client向KDC申請TGT,第二階段Client通過獲得的TGT向KDC申請用于訪問Service的Ticket,第三個階段是Client用返回的Ticket訪問Service。
優點:
?服務認證,防止broker datanode regionserver等組件冒充加入集群
?解決了服務端到服務端的認證,也解決了客戶端到服務端的認證
缺點:
?kerberos為了安全性使用臨時ticket,認證信息會失效,用戶多的情況下重新認證繁瑣
?kerberos只能控制你訪問或者拒絕訪問一個服務,不能控制到很細的粒度,比如hdfs的某一個路徑,hive的某一個表,對用戶級別上的認證并沒有實現(需要配合LDAP)
26.2.2.2 Apache Sentry
Apache Sentry是Cloudera公司發布的一個Hadoop安全開源組件,它提供了細粒度級、基于角色的授權.
優點:
?Sentry支持細粒度的hdfs元數據訪問控制,對hive支持列級別的訪問控制
?Sentry通過基于角色的授權簡化了管理,將訪問同一數據集的不同特權級別授予多個角色
?Sentry提供了一個統一平臺方便管理
?Sentry支持集成Kerberos
缺點:
?組件只支持hive,hdfs,impala 不支持hbase,yarn,kafka,storm等
26.2.2.3 Apache Ranger
Apache Ranger是Hortonworks公司發布的一個Hadoop安全組件開源組件
優點:
?提供了細粒度級(hive列級別)
?基于訪問策略的權限模型
?權限控制插件式,統一方便的策略管理
?支持審計日志,可以記錄各種操作的審計日志,提供統一的查詢接口和界面
?豐富的組件支持(HDFS,HBASE,HIVE,YARN,KAFKA,STORM)
?支持和kerberos的集成
?提供了Rest接口供二次開發
26.2.3 Knox,ranger,Kerveros,LDAP整合
26.2.3.1Kerberos與Ranger
Kerberos與Ranger都是Hadoop安全體系中的兩個部分,但是它們分工是不同的。可以聯系我們每天上班然后坐到辦公室的過程
某個人員進入公司之前,保安需要檢查它是否有工卡,如果沒有工卡,保安GG就會認為你不是公司員工,而不允許你進入到公司園區。 當你進入公司園區之后,這個時候你想到某個倉庫去看一下,倉庫大門就會檢查一下你有沒有門禁,有門禁才會讓你進入到倉庫中。
我們可以把公司園區類比成大數據集群平臺,工卡就要相當于你的Kerberos權限認證,而倉庫就對應著具體的hdfs文件路徑。
26.3Apache Ranger系統架構及實踐
26.3.1架構介紹
26.3.2組件介紹
26.3.2.1整體說明
Ranger是由三個部分組件:Ranger Admin,Ranger Usersync與Ranger Plugin,它們關系如下:
在Ranger的官網中有對于這三個組件的說明:
| Admin | Ranger Admin Portal是安全管理的中心接口。 用戶可以創建和更新策略,這些策略存儲在策略數據庫中。 每個組件內的Plugins會定期輪詢這些策略。Portal還包括一個審計服務器,它發送從插件收集的審計數據,以便存儲在HDFS或關系數據庫中。 |
| UserSync | 同步實用工具來從Unix或LDAP或Active Directory中拉取用戶和組。 用戶或組信息存儲在Ranger門戶中,用于策略定義。 |
| Plugin | 插件是嵌入每個集群組件進程的輕量級Java程序。 例如,Apache Hive的Apache Ranger插件嵌入在Hiveserver2中。 這些插件從中央服務器提取策略,并將它們本地存儲在一個文件中。 當用戶請求通過組件時,這些插件攔截請求并根據安全策略進行評估。 插件還可以從用戶請求中收集數據,并按照單獨的線程將此數據發送回審計服務器。 |
26.3.2.2 Ranger Admin
Ranger admin它包含三個部分: Web頁面、Rest消息處理服務以及數據庫。 我們可以把它看成一個用來數據集中存儲中心(所有的數據都集中存在這里,但是其它兩個組件也可單獨運行存在)。它的具體作用:
26.3.2.3UserSync
UserSync是Ranger提供的一個用戶信息同步接口,可以用來同步Linux用戶信息與LDAP用戶信息。通過配置項:SYNC_SOURCE = LDAP/UNIX來確認是LDAP還是UNIX,默認情況是同步Unix信息。對于UserSync有三點需要說明:
1、這個同步是單向的。
就是說它只管從Unix上面的本地用戶信息讀取出來,然后上傳到Ranger Admin上面。
2、UserSync不是同時同步的
如果用戶新創建一個用戶,但是這個用戶無法立即同步到Ranger中
3、不支持刪除用戶
Ranger暫時不支持通過同步或者代碼的方式直接刪除用戶
26.3.2.4 Service Plugin
嵌入到各系統執行流程中,定期從RangerAdmin拉取策略,根據策略執行訪問決策樹,并且記錄訪問審計
| Hdfs-Plugin | NameNode |
| Hbase-Plugin | HMaster+HRegionServer |
| Hive-Plugin | HiveServer2 |
| Yarn-Plugin | ResourceManager |
26.3.2.5 Ranger-SDK
對接開放平臺,實現對用戶、組、策略的管理
26.3.3 權限模型
訪問權限無非是定義了”用戶-資源-權限“這三者間的關系,Ranger基于策略來抽象這種關系,進而延伸出自己的權限模型。”用戶-資源-權限”的含義詳解:
?用戶
由User或Group來表達,User代表訪問資源的用戶,Group代表用戶所屬的用戶組。
?資源
不同的組件對應的業務資源是不一樣的,比如:
HDFS的FilePath
HBase的Table,Column-family,Column
Hive的Database,Table,Column
Yarn的對應的是Queue
?權限
由(AllowACL, DenyACL)來表達,類似白名單和黑名單機制,AllowACL用來描述允許訪問的情況,DenyACL用來描述拒絕訪問的情況,不同的組件對應的權限也是不一樣的。
| Hdfs | Read Write Execute |
| Hbase | Read Write Create Admin |
| Hive | Select Create Update Drop Alter Index Lock Read Write All |
| Yarn | submit-app admin-queue |
26.3.4 權限實現
Ranger-Admin職責:
?管理員對于各服務策略進行規劃,分配相應的資源給相應的用戶或組,存儲在db中。
Service Plugin職責:
?定期從RangerAdmin拉取策略。
?根據策略執行訪問決策樹。
?實時記錄訪問審計
策略執行過程:
策略優先級:
?黑名單優先級高于白名單
?黑名單排除優先級高于黑名單
?白名單排除優先高于白名單
決策下放:
如果沒有policy能決策訪問,一般情況是認為沒有權限拒絕訪問,然而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 |
| YARN | org.apache.hadoop.yarn.security.YarnAuthorizationProvider | org.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer |
ranger通過實現各組件擴展的權限接口,進行權限驗證
26.3.4.1 Hdfs實現原理
hdfs-site.xml會修改如下配置:
<property><name>dfs.permissions.enabled</name><value>true</value> </property> <property><name>dfs.permissions</name><value>true</value> </property> <property><name>dfs.namenode.inode.attributes.provider.class</name><value>org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer</value> </property>加載過程:
26.3.4.2 Hbase實現原理
在安裝完hbase插件后,hbase-site.xml會修改如下配置:
<property><name>hbase.security.authorization</name><value>true</value> </property> <property><name>hbase.coprocessor.master.classes</name><value>org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor</value> </property> <property><name>hbase.coprocessor.region.classes</name><value>org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor</value> </property>加載過程:
26.3.4.3 Hive實現原理
hiveserver2-site.xml
<property><name>hive.security.authorization.enabled</name><value>true</value> </property> <property><name>hive.security.authorization.manager</name><value>org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory</value> </property>加載過程:
26.3.4.4 Yarn實現原理
yarn-site.xml
<property><name>yarn.acl.enable</name><value>true</value> </property> <property><name>yarn.authorization-provider</name><value>org.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer</value> </property>加載過程:
總結
以上是生活随笔為你收集整理的Apache Ranger、业务背景、现状与需求、大数据安全组件介绍与对别、系统架构及实践、ranger admin、UserSync、plugin、权限模型、权限实现等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: M4“谢尔曼”中型战车
- 下一篇: 民航空防安全包括哪些方面内容?