近些年來大數據所用到的的安全方案主要有如下三種
- Kerberos(業界常用的服務認證)
- Sentry(Cloudera選用的方案,cdh版本集成)
- Ranger(Hortonworks選用的方案,hdp發行版集成)
Kerberos
Kerberos只能控制你是否能訪問服務,不能控制到很細的粒度
比如說,它可以控制你訪問hive與否,但是對於hive的表沒有用戶級別的權限控制沒有實現(需要集成LDAP一起使用纔行)
kerberos的主要構成部分爲Client,KDC,Service
構成 | 作用 |
---|---|
KDC | Kerberos的服務端程序,用來驗證各個模塊 |
Client | 需要訪問服務的用戶,KDC與Service會對用戶的身份進行驗證 |
Service | 集成了Kerberos的服務,如Hbase,Hdfs,Hive等 |
Kerberos協議過程
- Client向KDC申請TGT
- Client通過獲得的TGT向KDC申請用於訪問的Service的Ticket
- Client用KDC返回的Ticket訪問Service
可以用遊樂園的思想來類比:
將KDC比作遊樂園,Client比作遊客,Service比作遊樂園的各種活動項目
首先遊客(Client)進入遊樂園(KDC)需要遊樂園的門票(TGT),玩耍各類項目需要對應項目的票據(ticket),比如玩耍摩天輪(Hbase)需要摩天輪的專屬票據(ticket)
優點:
- 服務認證,防止broker datanode regionserver等組件冒充加入集羣
- 解決了服務端到服務端的認證,也解決了客戶端到服務端的認證
缺點
- kerberos爲了安全性使用臨時ticket,認證信息會失效,用戶多的情況下重新認證繁瑣
- kerberos只能控制你訪問或者拒絕訪問一個服務,不能控制到很細的粒度,比如hdfs的某一個路徑,hive的某一個表,對用戶級別上的認證並沒有實現(需要配合LDAP)
Apache Sentry
Apache Sentry是Cloudera公司發佈的一個Hadoop安全開源組件,它提供了細粒度級、基於角色的授權.
優點:
- Sentry支持細粒度的hdfs元數據訪問控制,對hive支持列級別的訪問控制
- Sentry通過基於角色的授權簡化了管理,將訪問同一數據集的不同特權級別授予多個角色
- Sentry提供了一個統一平臺方便管理
- Sentry支持集成Kerberos
缺點:
- 組件只支持hive,hdfs,impala 不支持hbase,yarn,kafka,storm等
Apache Ranger
Apache Ranger是Hortonworks公司發佈的一個Hadoop安全開源組件
優點:
- 提供了細粒度級(hive列級別)
- 基於訪問策略的權限模型
- 權限控制插件式,統一方便的策略管理
- 支持審計日誌,可以記錄各種操作的審計日誌,提供統一的查詢接口和界面
- 豐富的組件支持(HDFS,HBASE,HIVE,YARN,KAFKA,STORM)
- 支持和kerberos的集成
- 提供了Rest接口供二次開發
選擇Ranger的原因
多組件支持(HDFS,HBASE,HIVE,YARN,KAFKA,STORM),基本覆蓋我們現有技術棧的組件
支持審計日誌,可以很好的查找到哪個用戶在哪臺機器上提交的任務明細,方便問題排查反饋
擁有自己的用戶體系,可以去除kerberos用戶體系,方便和其他系統集成,同時提供各類接口可以調用