本文為您介紹Kerberos的配置與基礎操作,其中涵蓋了核心設定檔krb5.conf和kdc.conf,詳細說明了服務端如何使用KDC管理工具進行Principal管理及Keytab維護,以及用戶端Ticket生命週期管理涉及的相關命令。
前提條件
設定檔
-
krb5.conf:Kerberos的用戶端設定檔。
用於配置KDC服務的位置、realms名稱、以及主機名稱到Kerberos realms的映射等資訊。該檔案位於每個EMR節點下,具體路徑為/etc/krb5.conf。
-
kdc.conf:Kerberos的服務端設定檔,是對krb5.conf的補充。
用於配置KDC相關服務,例如krb5kdc、kadmind以及kdb5_util。該檔案僅存在於KDC所在節點,具體路徑為/var/kerberos/krb5kdc/kdc.conf。
krb5.conf和kdc.conf設定檔不支援直接在本地自訂修改,需要在E-MapReduce控制台中Kerberos服務的配置頁面進行修改,並且僅支援部分欄位的修改。
基礎操作
服務端
-
進入admin工具
-
如果您是使用root使用者,登入KDC(Kerberos的服務端程式)所在的master-1-1節點,則可以執行以下命令,直接進入admin工具。
kadmin.local -
如果您登入的是其他節點或者使用GateWay時,則可以通過填以下命令進入admin工具。
kadmin -p <admin-user> -w <admin-password>說明如果您使用的是EMR內建的KDC,則參數:
-
<admin-user>:固定值為root/admin。 -
<admin-password>:您可以在E-MapReduce控制台,Kerberos服務的配置頁面,擷取admin_pwd的參數值。
-
-
-
Principal維護
Principal是用於Kerberos認證並分配憑證的唯一身份。
-
建立Principal
addprinc -pw <principal-password> <principal-name>參數含義如下:
-
<principal-password>:建立的Principal的密碼。 -
<principal-name>:建立的Principal的名稱,服務類Principal的格式一般為username/hostname@realm,使用者類Principal的格式一般為username@realm。
-
-
刪除Principal
delprinc <principal-name> -
修改Principal密碼
change_password <principal-name> -
查看所有Principal
listprincs
-
-
Keytab維護
Keytab記憶體儲了一個或多個Principal的密鑰,利用這些密鑰可以擷取相應的Ticket。如需匯出Keytab檔案,請執行以下命令。
ktadd -k <keytab-path> <principal-name>參數含義如下:
-
<keytab-path>:目標Keytab檔案的儲存路徑。 -
<principal-name>:Principal的名稱。
警告在EMR中,每個服務都維護了自己的Principal(例如spark/hostname@realm)和對應的Keytab檔案,用於服務內部的認證和授權。如果修改或匯出該類Principal對應的Keytab檔案,將會導致原有的Keytab檔案失效,從而影響服務的正常工作。因此,請勿修改該類Principal,並禁止匯出Keytab檔案。
-
用戶端
Ticket是Kerberos認證協議的一部分,承載著用於驗證使用者身份的加密資訊。Ticket維護的相關命令如下。
-
產生Ticket
kinit -kt <keytab-path> <principal-name> -
查看Ticket
klist -
銷毀Ticket
kdestroy
相關文檔
如需瞭解Kerberos相關的基礎概念及認證原理,請參見Kerberos。