全部產品
Search
文件中心

E-MapReduce:跨域互信

更新時間:Feb 12, 2025

本文為您介紹如何?Kerberos的跨域互信(Cross Realm),即不同Kerberos叢集之間的互相訪問。

操作步驟

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

步驟一:工作準備

分別進入Cluster-A和Cluster-B的叢集服務中的Kerberos配置頁面,從krb5.conf中擷取kdc_hostsrealm。本文使用的兩個叢集資訊樣本如下:

  • 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

  1. 使用SSH方式登入叢集Cluster-A的master-1-1節點。

  2. 使用root使用者執行以下命令。

    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。

  3. 登入叢集Cluster-B的master-1-1節點,重複上述步驟1和步驟2,添加跨域認證Principal。

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

通過SSH方式依次串連到Cluster-A叢集內的所有節點,並在每個節點上修改/etc/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上需要運行作業訪問Cluster-B,則還需要重啟Cluster-B的YARN。

步驟四:訪問Cluster-B服務

此時,在Cluster-A上,您可以使用Cluster-A的Kerberos Ticket,訪問Cluster-B的服務。

  1. 建立測試需要的Principal,並產生Ticket。

    kadmin.local -q  "addprinc -pw 123456 test"
    kinit test
  2. 訪問Cluster-B的HDFS服務。

    hdfs dfs -ls hdfs://master-1-1.6789.cn-hangzhou.emr.aliyuncs.com:9000/