cdh版本的hadoop在對資料安全上的處理採用了kerberos+sentry的結構。
kerberos主要負責平台使用者的許可權管理,sentry則負責資料的許可權管理。
下面我們來依次了解一下:
kerberos包含乙個中心節點和若干從節點,所有節點的kerberos認證資訊都要與中心節點的規則配置檔案/etc/krb5.conf保持一致。安全認證均需通過中心節點,配置了安全認證的使用者可以登入到集群內的 機器。
kerberos的配置檔案有兩個:
1、/var/kerberos/krb5kdc/kdc.conf:包括kdc的配置資訊。預設放在 /usr/local/var/krb5kdc。或者通過覆蓋krb5_kdc_profile環境變數修改配置檔案位置。
2、/etc/krb5.conf:包含kerberos的配置資訊
kerberos的管理物件稱為principal(規則), 與hdfs中的使用者一一對應。一般我們將hdfs設定為principal的管理員,它可以建立刪除其他的principal,還可以生成其他成員的keytab。keytab是每個principal對應的金鑰檔案,當kerberos認證使用keytab時,可以不需要輸入密碼,類似於ssh的信任機制。
當我們配置kerberos的時候,系統會預設生成使用者,格式一般為【使用者名稱/hostname@domain_name】,一般情況下我們使用自己定義的使用者,不要對系統生成的使用者加以修改。
輸入kadmin.local 進入kerberos的互動命令列。
生成keytab: xst –k testuser.keytab [email protected],將對應的keytab拷貝至其他位置或伺服器,則相應的節點則可以通過testuser的principal連線進hdfs.
登入到管理員賬戶: 如果在本機上,可以通過kadmin.local直接登入。其它機器的,先使用kinit進行驗證。
kadmin.local
kinit admin/adminkadmin
增刪改查賬戶:在管理員的狀態下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。
kamdin:addprinc -randkey hdfs/hadoop1kamdin:delprinc hdfs/hadoop1kamdin:listprincs命令
生成keytab:使用xst命令或者ktadd命令
kadmin:xst -k /***/***/kerberos.keytab hdfs/hadoop1
建立乙個新的principal: addprinc [email protected],並輸入密碼
使用者操作
檢視當前的認證使用者:klist
認證使用者:kinit -kt /xx/xx/kerberos.keytab hdfs/hadoop1
刪除當前的認證的快取: kdestroy
apache sentry的目標是實現授權管理,它是乙個策略引擎,被資料處理工具用來驗證訪問許可權。它也是乙個高度擴充套件的模組,可以支援任何的資料模型。當前,它支援apache hive和cloudera impala的關係資料模型,對hue的資料許可權控制也有應用。
sentry的管理物件有三個,資料庫,角色,和組。資料庫是在hive中建立的資料庫,角色在impala中建立,而組是作業系統的使用者組。
sentry的許可權管理操作,都通過impala語句完成。只有啟動了sentry服務,impala服務才能正常執行。
使用impala-shell進入互動終端:
show roles列出所有的角色
show databases列出所有的資料庫
create role test_role建立角色
drop role test_role刪除角色
可以直接輸入show命令會提示可以跟接的關鍵字
grant all on database ana_clientact to role admin_role 將乙個資料庫賦權給乙個角色
revoke all on database from role admin_role取消許可權
如果資料庫中的是外部表,需要同時給角色賦予uri許可權:
grant all on uri 'hdfs:' to role admin_role
列出某角色的許可權:show grant role admin_role
將角色賦給乙個組:grant role admin_role to group hive
完成以上操作以後,使用者組即具有了相應資料庫的操作許可權。此時需要執行invalidate metadata操作,才會生效。
當乙個新的作業系統使用者加入這個使用者組,使用者即具有對應的資料庫許可權。反之,將使用者從這個組中去掉,使用者對資料庫的操作許可權即消失。
新建使用者組時要保證集群內組和使用者保持一致。
在hue中配置許可權
在hue中,使用者的許可權是分為兩個層次實現的,乙個層次是hue平台各模組的許可權,這個通過hue中組和許可權實現的,另乙個層次是hue訪問hive,impala資料庫的許可權,這個和sentry是統一的,hue中的使用者和作業系統中的使用者一一對映,hue通過尋找相同使用者名稱的作業系統使用者來確定對應的sentry許可權。
這裡需要注意一點,hue中的組和作業系統的組沒有關係,hue中的組只繫結hue平台自己的許可權。
微服務安全認證概覽
cors 跨域資源共享 springsecurity 服務安全 組成作用 內容示例 header 頭 記錄令牌型別 簽名的演算法等 payload 有效載荷 攜帶一些使用者資訊 signature 簽名 防止token被篡改 確保安全性 計算出來的簽名,乙個字串 token base64 heade...
Eureka安全認證
註冊中心的管理介面以及服務註冊時,沒有任何認證機制,安全性比較差,如果其它服務惡意註冊乙個同名服務,但是實現不同,可能就有風險了,可以參考下面的配置改進 首先在新增springsecurity依賴 org.springframework.cloud spring cloud starter eure...
cxf安全認證
我們在使用web service的過程中,很多情況是需要對web service請求做認證的,特別涉及到外部系統的呼叫,那麼cxf 的認證就顯得的特別的重要。cxf的認證大致可以分為 soapheader認證,ws security 校驗等等。a cxf中的soapheader認證。基本的原理 客戶...