Sentry深入


Sentry的架構

內部架構

 

核心就是規則引擎以及Metadata Store;記錄格式有兩種,一種policy file記錄授權內容,另外一種是通過命令方式進行授權;前者記錄在策略文件中,保存形式是hdfs的一個文件;后者則是記錄在數據庫中,保存在關系型數據庫中(通常和hive的metadata保存在一個MySQL實例中)。

 

調用模型

 

 

Sentry Server對外公開PRC端口以及Web 服務兩種接口(以PRC為主),供外界調用;在通過cloudera安裝sentry的時候,其實已經把Sentry Server以及Sentry Client安裝好了(測試集群只是有hive,默認hive在安裝完了sentry之后即和sentry綁定);

Sentry Client

Client種類

 

 

 

Sentry的Hadoop ACL Sync

這些客戶端中,HDFS的client比較特殊;因為已經在hive中設置了sentry權限,hive本身就是訪問hdfs文件,為什么還要在hdfs層再做權限控制呢?這是因為除了hive可以直接訪問hdfs的文件之外,還有Map-Reduce程序,pig,spark等可以訪問hdfs,所以只是在hive層面去做是不夠的;

在cloudera中可以通過配置hdfs的Enable Sentry Synchronization選項來實現hive權限直接下放;比如你在hive中配置了bd這個用戶可以訪問sentry_test這個表;那么用bd這個用戶在命令行中就可以訪問/user/hive/warehouse/sentry_test目錄;但是不能訪問同級的其他目錄以及上級目錄。

Hdfs在這里的權限控制是在首先是走sentry的權限控制,如果Sentry中沒有配置,才是走文件的權限控制。

1.1.1.1 

Sentry權限控制

Sentry的用戶映射源

三種:

  1. Kerberos;
  2. LDAP;
  3. Linux User/Group;官網文檔描述的第三種是和hadoop的用戶對應;但是真實測試中發現如果是一個hadoop存在但是Linux系統中不存在的用戶,無法授權成功;所以這里我認為還是Linux自己的用戶和組;

Sentry的授權

是標准的基於角色的授權(Role Base Access Control, RBAC)。

  1. 資源和權限綁定,權限在Sentry中分為三種:Select,Insert,ALL;
  2. 權限和角色綁定;
  3. 角色和用戶綁定(用戶來自於上面提到的三種);

 

Sentry權限控制的實現

 

在Build和Plan之間,添加鈎子,來進行權限驗證。

 

參考文檔:

https://cwiki.apache.org/confluence/display/SENTRY/Documentation

https://cwiki.apache.org/confluence/display/SENTRY/Sentry+Architecture+Overview?preview=/68718662/68718661/Sentry%20Architectures.pdf

 


免責聲明!

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



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