本文為您介紹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概述。