Sun 企業辯證機制使用指南

管理 Kerberos 資料庫

Kerberos 資料庫是 Kerberos 的主幹,必須適當地維護。本節提供您某些管理 Kerberos 資料庫,如備份與恢復資料庫、設定平行傳播、及管理存放檔案等的程序。"如何設置一個主 KDC" 中附有一開始設定資料庫的步驟。

備份與傳播 Kerberos 資料庫

從主 KDC 將 Kerberos 資料庫傳播至從屬 KDC 是最重要的設置工作之一。如果傳播的工作執行得不夠,主 KDC 及從屬 KDC 就彼此錯雜而無法同步,所以若主 KDC 當機的話,從屬 KDC 也沒有最近的資料庫資訊足以取代。同時,如果將一個從屬的 KDC 設置為主 KDC 以均衡載入量,使用該從屬來作為主 KDC 的客戶端便無法擁有最新的資訊。因此,您必須確定定期傳播,依照您多常變更 Kerberos 資料庫而定。

當您設置主 KDC 時,必須在一個 cron 工作中設定 kprop_script 以自動將 Kerberos 資料庫備份至 /var/krb5/slave_datatrans 傾印檔案中,並且將它傳播給從屬 KDC。但是就和任何檔案一樣,Kerberos 資料庫還是有損毀的可能。如果其中一個從屬 KDC 之上發生這種情況,您可能不會注意到,因為下一次資料庫的自動傳播會安裝一個全新的副本。不過如果這是發生在主 KDC 之上的話,損毀的資料庫就會在下一次傳播時被傳給所有的從屬。那麼損毀的備份就會覆寫主 KDC 之上先前未損毀的備份檔案。

因為這時沒有任何“安全”的備份副本,您也應該設定一個 cron 工作,定期將 slave_datatrans傾印檔案複製到另一個位置,或是使用 kdb5_util傾印 指令來建立另一個分開的備份副本。然後若您的資料庫被損毀,您便可以使用 kdb5_utilload 指令來恢復主 KDC 之上最近的備份。

要注意的另一點是,因為資料庫傾印檔案包含主管密鑰,您必須保護檔案不受未授權的使用者存取(根據預設,資料庫傾印檔案只允許 root 身份的讀/寫權限)。其中包括只使用 kprop 指令來傳播負責加密被傳輸資料的資料庫傾印檔案。同時,kprop 只將資料傳播至從屬 KDC,以將不慎把資料庫傾印傳送給未授權的主機的可能性減至最小。


小心 - 小心 -

如果 Kerberos 資料庫是在傳播之後更新而在下一次傳播之前資料庫不慎損毀的話,則從屬不會包含更新﹕更新會被遺失。因為這種狀況,如果您在定期的傳播之前將大量的更新新增至資料庫,應該以手動的方式傳播資料庫以避免資料遺失。


kpropd.acl 檔案

KDC 上的 kpropd.acl 檔案會提供一份主機主管名稱清單,每行一個,指定 KDC 可以透過傳播機制從其中收到一個更新資料庫的系統。如果主 KDC 被用來傳播所有的從屬 KDC,那麼每個從屬之上的 kpropd.acl 檔案便只能包含主 KDC 的主機主管名稱。

不過 SEAM 安裝及本指南後續的設置步驟會指示您把相同的 kpropd.acl 檔案新增至主及從屬 KDC。檔案包含所有的 KDC 主機主管名稱。在傳播 KDC 暫時變得無法使用時,此設置會允許您從任何 KDC 傳播。而且在所有的 KDC 上保留相同的副本也比較容易維護。

kprop_script 指令

kprop_script 指令會使用 kprop 指令來將 Kerberos 資料庫傳播給其他的 KDC。(如果在一個從屬 KDC 之上執行 kprop_script,它會將 Kerberos 資料庫的從屬副本傳播給其他的 KDC。)kprop_script 接受一份引數的主機名稱清單,以空格分開,以代表要傳播的 KDC。

執行 kprop_script 時,它會在 /var/krb5/slave_datatrans 檔案中建立 Kerberos 資料庫的一個備份,然後複製檔案至指定的 KDC。在傳播結束前,Kerberos 資料庫會保持鎖定的狀態。

如何備份 Kerberos 資料庫

  1. 成為主 KDC 之上的超級使用者。

  2. 使用 kdb5_util傾印 指令來備份 Kerberos 資料庫。


    # /usr/krb5/sbin/kdb5_util dump [verbose-] [-d dbname] [filename [principals...]]

    -verbose

    列印所備份的每位主管及每個政策的名稱。 

    dbname

    要備份的資料庫名稱。請注意 ".db" 是被附加在所指定的資料庫名稱之後,而且還可以指定一個檔案的絕對路徑。如果沒有指定 -d 選項,預設的資料庫名稱就是 /var/krb5/principal,實際上會成為 /var/krb5/principal.db

    filename

    要備份資料庫的檔案。可以指定一個檔案的絕對路徑。如果您沒有指定任何檔案,資料庫會被傾印至標準輸出。 

    principal

    要備份的一或多位主管的清單(以空格分開)。您必須使用完全合格的主管名稱。如果您並未指定主管,那麼整個資料庫都會被備份。 

範例 - 備份 Kerberos 資料庫

下列範例可以將 Kerberos 資料庫備份至一個稱為 dumpfile 的檔案中。因為指定了 -verbose 選項,每位主管會在備份時被列印出來。


# kbd5_util dump -verbose dumpfile 
kadmin/kdc1.eng.acme.com@ENG.ACME.COM 
krbtgt/eng.acme.com@ENG.ACME.COM 
kadmin/history@ENG.ACME.COM 
pak/admin@ENG.ACME.COM 
pak@ENG.ACME.COM
changepw/kdc1.eng.acme.com@ENG.ACME.COM
#

下列範例會從 Kerberos 資料庫中備份 pakpak/admin 主管。


# kdb5_util dump -verbose dumpfile pak/admin@ENG.ACME.COM pak@ENG.ACME.COM
pak/admin@ENG.ACME.COM
pak@ENG.ACME.COM
#

如何恢復 Kerberos 資料庫

  1. 成為主 KDC 之上的超級使用者。

  2. 使用 kdb_utilload 指令來恢復 Kerberos 資料庫。


    # /usr/krb5/sbin/kdb5_util load [-verbose] [-d dbname] [-update] [filename] 

    -verbose

    列印每個被恢復的主管及政策名稱。 

    dbname

    要恢復的資料庫名稱。請注意 ".db" 是被附加在所指定的資料庫名稱之後,而且還可以指定一個檔案的絕對路徑。如果沒有指定 -d 選項,預設的資料庫名稱就是 /var/krb5/principal,實際上會成為 /var/krb5/principal.db

    -update

    更新現存的資料庫;否則會建立一個新的資料庫,或是覆寫現存的資料庫。 

    filename

    要從其中恢復資料庫的檔案。可以指定檔案的一個絕對路徑。 

範例 - 恢復 Kerberos 資料庫

下列範例會從 dumpfile 檔案中將稱為 database1.db 的資料庫恢復為目前的目錄。因為 -update 選項並未指定,因此恢復會建立一個新的資料庫。


# kdb5_util load -d database1 dumpfile

如何以手動方式將 Kerberos 資料庫傳播至從屬 KDC

此程序會顯示應如何使用 kprop 指令來傳播 Kerberos 資料庫。如果您必須將一個從屬 KDC 與定期 cron 工作以外的主 KDC 同步化的話,就可以使用此指令。而且不像 kprop_script,您還可以使用 kprop 來傳播目前的資料庫備份,而不需要製作新的資料庫備份。

  1. 成為主 KDC 之上的超級使用者。

  2. (可任選)使用 kdb5_util 指令來備份資料庫。


    # /usr/krb5/sbin/kdb5_util dump /var/krb5/slave_datatrans
    
  3. 使用 kprop 指令來將資料庫傳播至一個從屬 KDC。


    # /usr/krb5/lib/kprop -f /var/krb5/slave_datatrans slave_KDC
    

如果您想要將資料庫備份並且傳播至一個定期 cron 工作以外的從屬 KDC,您也可以使用 kprop_script 指令如下所示來進行﹕


# /usr/krb5/lib/kprop_script slave_KDC

設定平行傳播

在大多數情況下,主 KDC 只是專門用來將其資料庫傳播給從屬 KDC 的。不過如果您的網站有很多的從屬 KDC,您就可以考慮載入分享的傳播過程,即所謂的平行傳播

平行傳播可以讓特定的從屬 KDC 與主 KDC 共享傳播任務。這樣一來傳播就可以更快完成,也可以減輕主 KDC 的負荷。

例如,若您的網站有一個主及六個從屬(如 圖 3-2 中所示),其中 slave-1slave-3 包括一個邏輯群組,而 slave-4slave-6 包括其他群組。要設定平行傳播,您讓主 KDC 將資料庫傳播至 slave-1slave-4,而其他從屬便可再行將資料庫傳播至其群組中的從屬。

圖 3-2 範例平行傳播設置

Graphic

如何設定平行傳播

這並不是一個詳細的逐步程序,只是高階的簡要設置步驟一覽表,用來確保平行傳播的執行。

  1. 在主 KDC 之上,變更其 cron 工作中的 kprop_script 項目,只包括要執行成功傳播的從屬之引數(傳播從屬)。

  2. 在每個傳播從屬之上,將一個 kprop_script 項目新增至其 cron 工作中,其中必須包括要傳播的從屬引數。要成功地平行傳播,cron 工作應該被設定在傳播從屬本身以新的資料庫傳播之後執行。


    註解 -

    決定傳播從屬時所需的時間長短,取決於如網路頻寬及資料庫大小等因素。


  3. 在每個從屬 KDC 之上,設定要傳播的正確權限。請將其傳播 KDC 主機的主管名稱新增至其 kpropd.acl 檔案中來達到此目的。

範例 - 設定平行傳播

使用 圖 3-2 中的範例,主 KDC 的 kprop_script 項目將如下所示﹕

10 3 * * * /usr/krb5/lib/kprop_script slave-1.acme.com slave-4.acme.com

slave-1kprop_script 項目將如下所示(請注意從屬上的傳播會在被主 KCD 傳播的一個小時之後開始)﹕

10 4 * * * /usr/krb5/lib/kprop_script slave-2.acme.com slave-3.acme.com

傳播從屬上的 kpropd.acl 檔案必須包含下列項目﹕

host/master.acme.com@ACME.COM

slave-1 所傳播的從屬上的 kpropd.acl 檔案將會包含下列項目﹕

host/slave-1.acme.com@ACME.COM

管理存放檔案

存放檔案包含 Kerberos 資料庫的主密鑰,在您建立一個 Kerberos 資料庫時會自動建立。如果存放檔案被損毀的話,您可以使用 kdb5_util(1M)stash 指令來取代損毀的檔案。唯一您必須移除一個存放檔案的時候就是以 kdb5_utildestroy 指令來將 Kerberos 資料庫移除之後。因為存放檔案不會自動與資料庫一起移除,您必須將它移除以完成清理的工作。

如何移除一個存放檔案

  1. 成為包含存放檔案的 KDC 之上的超級使用者。

  2. 移除存放檔案。


    # rm stash_file
    

    stash_file

    至存放檔案的路徑。根據預設,存放檔案位於 /var/krb5/.k5。範疇

如果您必須重新建立存放檔案的話,可以使用 kdb5_util 指令的 -f 選項。