本文為您介紹如何實現(xiàn)Kerberos的跨域互信(Cross Realm),即不同Kerberos集群之間的互相訪問。
操作步驟
本文以Cluster-A跨域訪問Cluster-B中的服務為例介紹實現(xiàn)跨域互信的操作步驟。配置完成后,Cluster-A在獲取到本集群KDC授予的TGT(Ticket Granting Ticket)后,能夠跨域訪問Cluster-B中的服務。本文配置的跨域互信是單向的,即Cluster-B無法跨域訪問Cluster-A上的服務,如果需要實現(xiàn)雙向跨域互信,按照同樣的方法交換配置即可。
步驟一:工作準備
分別進入Cluster-A和Cluster-B的集群服務中的Kerberos配置頁面,從krb5.conf中獲取kdc_hosts和realm。本文使用的兩個集群信息示例如下:
- Cluster-A的相關信息:
- hostname:master-1-1.1234.cn-hangzhou.emr.aliyuncs.com
- realm:EMR.1234.COM
- Cluster-B的相關信息:
- hostname:master-1-1.6789.cn-hangzhou.emr.aliyuncs.com
- realm:EMR.6789.COM
步驟二:添加跨域認證Principal
- 使用SSH方式登錄集群Cluster-A的master-1-1節(jié)點。
- 使用root用戶執(zhí)行以下命令。
示例中各參數(shù)說明如下:kadmin.local -q "addprinc -pw 123456 krbtgt/EMR.6789.COM@EMR.1234.COM"
123456
:初始密碼,可以自定義。EMR.1234.COM
:Cluster-A的realm。EMR.6789.COM
:Cluster-B的realm。
- 登錄集群Cluster-B的master-1-1節(jié)點,重復上述步驟1和步驟2,添加跨域認證Principal。
步驟三:配置Cluster-A的krb5.conf
進入Cluster-A的集群服務中的Kerberos配置頁面,修改krb5.conf的配置:
- other_realms
EMR.C-BE49B6BBAEEA****.COM = { kdc = 192.168.xx.xx:88 admin_server = 192.168.xx.xx:749 }
- domains
.1234.cn-hangzhou.emr.aliyuncs.com = EMR.1234.COM .6789.cn-hangzhou.emr.aliyuncs.com = EMR.6789.COM
- capaths
EMR.1234.COM = { EMR.6789.COM = . } EMR.6789.COM = { EMR.1234.COM = . }
說明 如果在Cluster-A上需要運行作業(yè)訪問Cluster-B,則還需要重啟Cluster-B的YARN。
步驟四:訪問Cluster-B服務
此時,在Cluster-A上,您可以使用Cluster-A的Kerberos Ticket,訪問Cluster-B的服務。
- 創(chuàng)建測試需要的Principal,并生成Ticket。
kadmin.local -q "addprinc -pw 123456 test" kinit test
- 訪問Cluster-B的HDFS服務。
hdfs dfs -ls hdfs://master-1-1.6789.cn-hangzhou.emr.aliyuncs.com:9000/