kerberos 管理伺服器可以在與 KDC 不同的機器上嗎?
我目前正在學習 Kerberos,但有些東西我不太明白: 看起來,管理伺服器:
kadmind
- 不必在與 KDC 相同的機器上執行。但這聽起來很奇怪——因為kadmind
通過直接訪問數據庫文件principal
或principal.ok
(不確定究竟是哪個做了什麼,但總的來說它們是保存數據庫本身的那些)對數據庫進行了更改。所以我可以理解我可以使用其他機器執行管理任務
kadmin
- kadmin util 只是與kadmind
主 KDC 機器上的執行通信。但是它自己怎麼可能kadmind
在另一台機器上執行呢?
嗯,一種可能性是機器
kadmind
可以擁有自己的數據庫副本,即主副本,並且所有 KDC 都只有它的副本。MIT Krb5 和 Heimdal Kerberos 都有複製工具,例如
kpropd
,用於建構冗餘 KDC 集群。因此,在最簡單的情況下,您可以擁有三個 KDC,但其中只有一個執行 kadmind,kprop
用於傳輸更改。(KDC 本身不會進行永久性數據庫更新,除了可選地跟踪“最後登錄”時間,因此複製可以是單向的。)以同樣的方式,您還可以在 DNS 中進行類似於“隱形主機”的設置,其中主要副本由不暴露給客戶端的機器管理,所有更改都通過 kprop(或 rsync,或基本通過 SSH 轉儲 + 載入)。
另一種可能性是 KDC 一開始就沒有使用基於文件的 BerkeleyDB 儲存。MIT Kerberos 和 Heimdal 實際上都可以使用LDAP 伺服器作為 KDC 數據庫,一旦你有了它,
kadmind
程序就可以遠端連接到 LDAP 伺服器——根本就沒有principal
文件。(一些 LDAP 伺服器也支持多主複製,可用於使所有副本可寫,例如,您可以有 3 台機器執行 OpenLDAP + KDC + kadmind,它們都同樣“主要”。
實際上,如果您查看 Microsoft 的 Active Directory,它完全基於一個 LDAP 目錄,該目錄包含所有資訊——包括 KDC 和 DNS 數據——並且所有 DC 都在各個方向複製更改。它沒有單獨的“kadmin”程序;相反,Kerberos 主體是通過 LDAP 作為整體使用者或 mcahine 帳戶的一部分創建的,您可以在任何您喜歡的 DC 上創建該條目。)