本文為您介紹如何實(shí)現(xiàn)Kerberos的跨域互信(Cross Realm),即不同Kerberos集群之間的互相訪問。

操作步驟

本文以Cluster-A跨域訪問Cluster-B中的服務(wù)為例介紹實(shí)現(xiàn)跨域互信的操作步驟。配置完成后,Cluster-A在獲取到本集群KDC授予的TGT(Ticket Granting Ticket)后,能夠跨域訪問Cluster-B中的服務(wù)。本文配置的跨域互信是單向的,即Cluster-B無(wú)法跨域訪問Cluster-A上的服務(wù),如果需要實(shí)現(xiàn)雙向跨域互信,按照同樣的方法交換配置即可。

步驟一:工作準(zhǔn)備

分別進(jìn)入Cluster-A和Cluster-B的集群服務(wù)中的Kerberos配置頁(yè)面,從krb5.conf中獲取kdc_hostsrealm。本文使用的兩個(gè)集群信息示例如下:
  • Cluster-A的相關(guān)信息:
    • hostname:master-1-1.1234.cn-hangzhou.emr.aliyuncs.com
    • realm:EMR.1234.COM
  • Cluster-B的相關(guān)信息:
    • hostname:master-1-1.6789.cn-hangzhou.emr.aliyuncs.com
    • realm:EMR.6789.COM

步驟二:添加跨域認(rèn)證Principal

  1. 使用SSH方式登錄集群Cluster-A的master-1-1節(jié)點(diǎn)。
  2. 使用root用戶執(zhí)行以下命令。
    kadmin.local -q "addprinc -pw 123456 krbtgt/EMR.6789.COM@EMR.1234.COM"
    示例中各參數(shù)說明如下:
    • 123456:初始密碼,可以自定義。
    • EMR.1234.COM:Cluster-A的realm。
    • EMR.6789.COM:Cluster-B的realm。
  3. 登錄集群Cluster-B的master-1-1節(jié)點(diǎn),重復(fù)上述步驟1和步驟2,添加跨域認(rèn)證Principal。

步驟三:配置Cluster-A的krb5.conf

進(jìn)入Cluster-A的集群服務(wù)中的Kerberos配置頁(yè)面,修改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 = .
    }
修改完成后,點(diǎn)擊下方的保存,然后單擊部署客戶端配置
說明 如果在Cluster-A上需要運(yùn)行作業(yè)訪問Cluster-B,則還需要重啟Cluster-B的YARN。

步驟四:訪問Cluster-B服務(wù)

此時(shí),在Cluster-A上,您可以使用Cluster-A的Kerberos Ticket,訪問Cluster-B的服務(wù)。
  1. 創(chuàng)建測(cè)試需要的Principal,并生成Ticket。
    kadmin.local -q  "addprinc -pw 123456 test"
    kinit test
  2. 訪問Cluster-B的HDFS服務(wù)。
    hdfs dfs -ls hdfs://master-1-1.6789.cn-hangzhou.emr.aliyuncs.com:9000/