Sun Java System Directory Server Enterprise Edition 6.2 管理指南

第 4 章 目錄伺服器項目

本章將討論如何管理您目錄中的資料項目。其中也將說明如何設定參照以及進行屬性值的加密。

規劃目錄部署時,您必須分門別類目錄所將包含的資料類型。建立項目及修改預設模式之前,請先閱讀「Sun Java System Directory Server Enterprise Edition 6.2 Deployment Planning Guide」中的相關章節。

您必須先定義適當的存取控制指令 (ACI),才能修改您的目錄。如需詳細資訊,請參閱第 6 章, 目錄伺服器存取控制

本章包含下列主題:

管理項目

管理項目的最佳方式需視環境而定:

使用 DSCC 管理項目

DSCC 可讓您檢視項目所有可讀取的屬性並編輯其可寫入的屬性。它也可讓您增加及移除屬性、設定多值屬性,以及管理項目的物件類別。如需有關如何使用 DSCC 管理項目的更多資訊,請參閱 DSCC 線上說明。如需有關 DSCC 的更多一般資訊,請參閱目錄服務控制中心介面

使用目錄編輯器管理項目

目錄編輯器是一項易於使用的目錄編輯工具,可供管理員與一般使用者搜尋、建立與編輯資料。這項資料採用使用者、群組與容器的形式。

使用 ldapmodifyldapdelete 管理項目

ldapmodifyldapdelete 指令行公用程式提供完整的功能,可增加、編輯與刪除目錄內容。使用這些公用程式,可讓您管理伺服器的配置項目與使用者項目中的資料。這些公用程式亦可用以寫入程序檔,以執行一或多個目錄的大量管理。

本書中的多項程序皆會用到 ldapmodifyldapdelete 指令。以下幾節將說明執行程序時所需進行的基本作業。如需有關 ldapmodifyldapdelete 指令的更多資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Reference」

指令行公用程式的輸入一律用於 LDIF 中,可直接從指令行提供,也可以透過輸入檔提供。下節將提供 LDIF 輸入的相關資訊,而後續幾節將說明每個修改類型的 LDIF 輸入。

如需有關正確格式化 LDIF 輸入的資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Reference」中的「Guidelines for Providing LDIF Input」

以下幾節將說明這些基本作業:

使用 ldapmodify 增加項目

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

您可以使用 ldapmodify-a 選項,將一或多個項目增加至目錄。下列範例將建立包含使用者的結構項目,再建立使用者項目:


$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: ou=People,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: People
description: Container for user entries

dn: uid=bjensen,ou=People,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
uid: bjensen
givenName: Barbara
sn: Jensen
cn: Babs Jensen
telephoneNumber: (408) 555-3922
facsimileTelephoneNumber: (408) 555-4000
mail: bjensen@example.com
userPassword: secret

-D-w 選項分別可為有權建立這些項目的使用者指定連結 DN 與密碼。-a 選項可指定將增加 LDIF 內的所有項目。接著,每個項目會依其 DN 與屬性值列出,每個項目皆會以空行隔開。每個項目在輸入後即由 ldapmodify 公用程式予以建立,且公用程式會報告任何發生的錯誤。

    依慣例,項目的 LDIF 會列出下列屬性:

  1. 項目的 DN。

  2. 物件類別清單。

  3. 一或多個命名屬性。此為 DN 中所使用的屬性,並不一定是必要屬性之一。

  4. 所有物件類別的必要屬性清單。

  5. 您所要納入的任何允許的屬性。

鍵入 userPassword 屬性的值時,請提供純文字形式的密碼。伺服器將為此值加密,並只會儲存加密值。請確實限制讀取權限,以保護 LDIF 檔案中所出現的純文字密碼。

您也可以使用不需在指令行上加入 -a 選項的替代形式 LDIF。此形式的好處是,您可以合併項目增加陳述式與項目修改陳述式,如下範例所示。


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password: 
dn: ou=People,dc=example,dc=com
changetype: add
objectclass: top
objectclass: organizationalUnit
ou: People
description: Container for user entries

dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: add
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
uid: bjensen
givenName: Barbara
sn: Jensen
cn: Barbara Jensen
telephoneNumber: (408) 555-3922
facsimileTelephoneNumber: (408) 555-4000
mail: bjensen@example.com
userPassword: secret

changetype: add 關鍵字表示,具有指定 DN 的項目應以所有後續的屬性建立。其他所有的選項與 LDIF 慣例皆與本節稍早的說明相同。

在這兩個範例中,您都可以使用 -f filename 選項從檔案讀取 LDIF,而不需從終端機輸入讀取。LDIF 檔案所含的格式必須與用於終端機輸入的格式相同,視 -a 選項的使用情形而定。

使用 ldapmodify 修改項目

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

使用 changetype: modify 關鍵字增加、取代或移除屬性及其位於現有項目中的值。當您指定 changetype: modify 時,必須同時提供一或多個變更作業,以指定項目的修改方式。可用的三個 LDIF 變更作業如下範例所示:


dn: entryDN
changetype: modify
add: attribute 
attribute: value...
-
replace: attribute 
attribute: newValue...
-
delete: attribute 
[attribute: value]
...

請使用連字符 (-) 隔開同一行中相同項目的作業,並使用空行隔開不同項目的作業群組。您也可以為每個作業指定數個 attribute: value 對。

增加屬性值

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

下列範例將說明如何使用相同的 add LDIF 語法在現有的多值屬性中增加值,以及在尚不存在的屬性中增加值:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: cn
cn: Babs Jensen
-
add: mobile
mobile: (408) 555-7844

若有下列任一情況,此作業即可能失敗,而伺服器將傳回錯誤:

使用二進位屬性子類型

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

attribute;binary 子類型表示不論屬性值的實際語法為何,這些屬性值皆必須透過 LDAP 以二進位資料傳輸。此子類型適用於不具 LDAP 字串表示法的複雜語法,如 userCertificate。除此用途之外,均不應使用二進位子類型。

ldapmodify 指令搭配使用時,可在任何 LDIF 陳述式的屬性名稱中增加適當的子類型。

輸入二進位值時,可以直接以 LDIF 文字鍵入,或從其他檔案中加以讀取。下列範例說明從檔案中加以讀取的 LDIF 語法:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
version: 1
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: userCertificate;binary
userCertificate;binary:< file:///local/cert-file

若要以 :< 語法指定檔案名稱,必須以行 version:1 做為 LDIF 陳述式的開頭。ldapmodify 在處理此陳述式時,會將屬性設為從指定檔案的所有內容讀取出來的值。

以語言子類型增加屬性

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

屬性的語言與發音子類型會指定本土化的值。當您指定屬性的語言子類型時,該子類型會以下列形式增加到屬性名稱中:


attribute;lang-CC

其中,attribute 是現有的屬性類型,而 cc 是用以指定語言的雙字母國碼 (地區碼)。您可以選擇性地增加發音子類型到語言子類型中,以指定音譯的本土化值。此案例中的屬性名稱如下:


attribute;lang-CC;phonetic

若要對具有子類型的屬性執行作業,必須明確符合其子類型。例如,若要修改具有 lang-fr 語言子類型的屬性值,必須在修改作業中納入 lang-fr,如下所示:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: homePostalAddress;lang-fr
homePostalAddress;lang-fr: 34, rue de la Paix

備註 –

若屬性值含有非 ASCII 字元,則必須以 UTF-8 編碼這些字元。


修改屬性值

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

下列範例說明如何使用 LDIF 中的 replace 語法變更屬性的值:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
replace: sn
sn: Morris
-
replace: cn
cn: Barbara Morris
cn: Babs Morris

指定屬性目前所有的值均會遭移除,而加入所有指定的值。

變更屬性值後,可以使用 ldapsearch 指令驗證變更。

屬性值的空格結尾

修改屬性值時,請勿不慎在值的結尾留下空格。空格結尾可能會致使值以 base-64 編碼 (如 34xy57eg) 顯示。

屬性值的結尾若為空格,則會將此空格編碼為屬性值的一部分。當您使用 DSCC 或 ldapsearch 指令驗證變更時,所看見的值可能會是純文字,但也可能以 base-64 編碼文字呈現。這取決於您所使用的是哪個目錄伺服器用戶端。

刪除屬性值

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

下列範例將說明如何徹底刪除屬性,以及如何僅刪除多值屬性的某個值:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
delete: facsimileTelephoneNumber
-
delete: cn
cn: Babs Morris

僅使用 delete 語法而未指定 attribute: value 對時,屬性中所有的值皆會遭移除。若您指定了 attribute: value 對,則只會移除該值。

修改多值屬性的某個值

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

若要以 ldapmodify 指令修改多值屬性的某個值,必須執行兩項作業,如下範例所示:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
delete: mobile
mobile: (408) 555-7845
-
add: mobile
mobile: (408) 555-5487

使用 ldapdelete 刪除項目

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

請使用 ldapdelete 指令行公用程式從目錄中刪除項目。此公用程式可連結至目錄伺服器,並根據項目的 DN 刪除一或多個項目。您必須提供有權刪除指定項目的連結 DN。

您無法刪除具有子項的項目。LDAP 協定不允許子項目無父系的情形。例如,在您刪除所有屬於組織單位的項目之前,都無法刪除組織單位項目。

下列範例將說明組織單位中的一個項目。此項目及其父系項目可依序刪除。


$ ldapdelete -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
uid=bjensen,ou=People,dc=example,dc=com
ou=People,dc=example,dc=com

使用 ldapmodify 刪除項目

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

使用 ldapmodify 公用程式時,也可以使用 changetype: delete 關鍵字刪除項目。使用 ldapdelete 時的所有限制於此時同樣適用,如上一節所述。使用 LDIF 語法刪除項目的好處在於,您可以同一個 LDIF 檔案中執行多種不同的作業。

下列範例將執行與前一範例相同的刪除作業:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: delete

dn: ou=People,dc=example,dc=com
changetype: delete

使用 ldapsearch 搜尋項目

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

您可以使用 ldapsearch 指令行公用程式尋找並擷取目錄項目。請注意,ldapsearch 公用程式不是 Solaris 平台提供的公用程式,而是 Directory Server Resource Kit 的一部份。

如需有關使用 ldapsearch、常用 ldapsearch 選項、已接受的格式及範例的更多資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Reference」

Procedure使用 ldapmodify 移動項目或為其重新命名

此程序會使用修改 DN 作業。執行此作業前,請確定您已熟悉使用修改 DN 作業的指示與限制一節。

針對此程序的某些部分,您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。此程序的其他部分只能使用指令行完成。


備註 –

修改屬於群組 uniquemember 的項目 DN 時,必須啟用參照完整性外掛程式。參照完整性可確保群組成員會隨著項目移動而調整。如需有關如何啟用及配置參照完整性外掛程式的資訊,請參閱配置參照完整性外掛程式


  1. 若要將項目從某父系移至另一個父系,請先擴充父系項目的 ACI 權限。

    • 請在要移動之項目的目前父系項目上使用 allow (export ...) 語法,以確定 ACI 允許 export 作業

    • 請在要移動之項目的未來父系項目上使用 allow (import ...) 語法,以確定 ACI 允許 import 作業

    如需有關使用 ACI 的資訊,請參閱第 6 章, 目錄伺服器存取控制

  2. 請確定修改 DN 作業已全域啟用,或至少已針對將受移動作業影響的一或多個尾碼啟用。

    為確保與舊目錄伺服器發行版本的相容性,修改 DN 作業預設為不啟用。

    若您先前已啟用修改 DN 作業,請跳至下個步驟。

    若要全域啟用伺服器的修改 DN 作業,請使用此指令:


    $ dsconf set-server-prop -h host -p port moddn-enabled:on
  3. 執行 ldapmodify 指令。

    此步驟會使用修改 DN 作業。請執行下列其中一項動作:

    • 移動項目。

      例如,下列指令會將項目 uid=bjensen 從包商的子樹狀結構 ou=Contractors,dc=example,dc=com,移至員工的子樹狀結構 ou=People,dc=example,dc=com


      $ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
      Enter bind password:
      dn: uid=bjensen,ou=Contractors,dc=example,dc=com
      changetype: modrdn
      newrdn: uid=bjensen
      deleteoldrdn: 0
      newsuperior: ou=People,dc=example,dc=com
    • 為項目重新命名。

      例如,下列指令會將項目 uid=bbjensen 重新命名為 uid=bjensen


      $ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
      Enter bind password:
      dn: uid=bbjensen,ou=People,dc=example,dc=com
      changetype: modrdn
      newrdn: uid=bjensen
      deleteoldrdn: 1

    撰寫 LDIF 陳述式時,請留意下列屬性:

    • dn - 指定要重新命名或移動的項目。

    • changetype: modrdn - 指定要使用修改 DN 作業。

    • newrdn - 指定新命名的屬性。

    • deleteoldrdn - 指定先前的命名屬性是否應從項目中移除 (1 表示是,0 表示否)。

      請注意,命名屬性若為項目定義中的必要屬性,即無法從項目中移除。

    • newsuperior - 指定項目的新上層屬性。

    如需有關 ldapmodify 指令及其選項的資訊,請參閱 ldapmodify(1) 線上手冊。

  4. 若在移動或重新命名含有大量項目的子樹狀結構時發生資源限制錯誤,請增加資料庫所能使用的鎖定數。


    $ dsconf set-server-prop -h host -p port db-lock-count:value
    

    修改此特性後必須重新啟動伺服器,變更方能生效。

使用修改 DN 作業的指示與限制

如上一節所述,在使用修改 DN 作業時,請遵循以下幾節所說明的指示。

使用修改 DN 作業的一般指示

搭配使用修改 DN 作業與複寫的指示


注意 – 注意 –

使用修改 DN 作業時若未符合下列需求,將可能導致複寫中斷,而使目錄服務失效。


設定參照

若用戶端應用程式在本機無法得知所應連絡的伺服器,您可以使用參照予以告知。參照是目錄伺服器傳回用戶端以替代結果之遠端尾碼或項目的指標。用戶端必須接著在參照中所命名的遠端伺服器上再次執行此作業。

有三種情況下會執行重新導向:

在任何情況下,參照皆是含有主機名稱、連接埠號與其他伺服器之 DN (選用) 的 LDAP URL。例如,ldap://east.example.com:389

如需有關如何在目錄部署中使用參照的概念性資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Deployment Planning Guide」

以下幾節將說明設定目錄預設參照以及建立與定義智慧型參照的程序。

設定預設參照

若是用戶端應用程式提交作業所在的 DN 不在目錄伺服器所維護的尾碼上,則會傳回預設參照給用戶端應用程式。伺服器會傳回所有定義的參照,但不會定義其傳回順序。

Procedure設定預設參照

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 使用 dsconf 指令行公用程式可設定一或多個預設參照。


    $ dsconf set-server-prop -h host -p port suffix-DN referral-url:referral-URL
    

    例如:


    $ dsconf set-server-prop -h host1 -p 1389 dc=example,dc=com \
     referral-url:ldap://east.example.com:1389

設定智慧型參照

智慧型參照可讓您將目錄項目或目錄樹狀結構對映至特定的 LDAP URL。使用智慧型參照,可讓您將用戶端應用程式納入特定的伺服器或特定伺服器上特定項目的參照。

智慧型參照通常會指向另一部伺服器上具有相同 DN 的實際項目。但您仍可定義相同或不同伺服器上任意項目的智慧型參照。例如,您可以將具有下列 DN 的項目定義為智慧型參照:


uid=bjensen,ou=People,dc=example,dc=com

智慧型參照會指向伺服器 east.example.com 上的另一個項目:


cn=Babs Jensen,ou=Sales,o=east,dc=example,dc=com

目錄使用智慧型參照的方式會遵循 RFC 4511 之 4.1.10 小節中所指定的標準 (http://www.ietf.org/rfc/rfc4511.txt)。

Procedure建立及修改智慧型參照

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 若要建立智慧型參照,請使用 referralextensibleObject 物件類別建立項目。

    referral 物件類別可讓預期的 ref 屬性包含 LDAP URL。extensibleObject 物件類別可讓您將任何模式屬性用為命名屬性,以符合目標項目。

    例如,若要定義下列可傳回智慧型參照的項目,而非項目 uid=bjensen,請使用此指令:


    $ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
    Enter bind password:
    dn: uid=bjensen,ou=People,dc=example,dc=com
    objectclass: top
    objectclass: extensibleObject
    objectclass: referral
    uid: bjensen
    ref: ldap://east.example.com/cn=Babs%20Jensen,ou=Sales,o=east,dc=example,dc=com

    備註 –

    LDAP URL 中任何位於空格之後的資訊均會遭伺服器忽略。因此,在您打算做為參照的任何 LDAP URL 中,所有空格都必須以 %20 取代。其他特殊字元則必須加上引號。


    在您定義智慧型參照後,uid=bjensen 項目的修改實際上將對其他伺服器的 cn=Babs Jensen 項目執行。ldapmodify 指令會自動追蹤參照,例如:


    $ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
    Enter bind password:
    dn: uid=bjensen,ou=People,dc=example,dc=com
    changetype: replace
    replace: telephoneNumber
    telephoneNumber: (408) 555-1234
  2. (可選擇) 若要修改智慧型參照項目,請使用 ldapmodify-M 選項:


    $ ldapmodify -M -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
    Enter bind password:
    dn: uid=bjensen,ou=People,dc=example,dc=com
    changetype: replace
    replace: ref
    ref: ldap://east.example.com/cn=Babs%20Jensen,ou=Marketing,o=east,dc=example,dc=com

檢查有效屬性語法

目錄伺服器可讓您在執行下列作業時檢查屬性的完整性:

檢查可確保屬性值符合 IETF 的建議。所有不符的屬性皆會遭到拒絕,並記錄於錯誤記錄中。記錄訊息包含連線與作業 ID (若適用)。

伺服器預設會自動檢查前述作業的語法。若您關閉語法檢查,請執行下列程序。


備註 –

語法檢查與模式檢查不同。如需有關模式檢查的資訊,請參閱管理模式檢查


Procedure關閉自動語法檢查

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 若要關閉自動語法檢查,請使用此指令:


    $ dsconf set-server-prop -h host -p port check-syntax-enabled:off

追蹤目錄項目的修改

伺服器預設會保存新建或已修改之項目的特殊屬性,如 LDAP v3 規格中所指定。這些特殊屬性會儲存在尾碼的項目上,並且包含:

Procedure關閉項目修改追蹤

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。


注意 – 注意 –

關閉項目修改追蹤會導致不相符的資料。由於有多項應用程式皆依賴這些屬性,且停用此功能後效能只會略為提昇,因此建議您不要關閉項目修改追蹤。


  1. 關閉伺服器的項目修改追蹤。


    $ dsconf set-server-prop -h host -p port suffix-DN mod-tracking-enabled:off

為屬性值加密

屬性加密可保護目錄中所儲存之機密資料的安全性。屬性加密可讓您指定項目的某些屬性必須以加密格式儲存。如此可防止儲存在資料庫檔案、備份檔案與匯出的 LDIF 檔案中的資料遭讀取。

使用此功能時,屬性值在儲存至目錄伺服器資料庫之前會先進行加密,並在傳回至用戶端之前解密回原始值。您必須使用存取控制以防止用戶端在無權限的情況下存取此類屬性,並在屬性值傳輸於用戶端與目錄伺服器之間時,使用 SSL 為屬性值加密。如需資料安全性的一般架構性簡介與屬性加密的特定架構性簡介,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Reference」

必須在伺服器上配置 SSL 並加以啟用,屬性加密方可運作。但依預設所有屬性皆不會加密。屬性加密配置於尾碼層級,這表示屬性會在尾碼中含有該屬性的每個項目中加密。若要為整個目錄中的某一屬性加密,您必須在每個尾碼中啟用該屬性的加密。


注意 – 注意 –

屬性加密會影響所有與尾碼相關的資料及索引檔案。若要修改現有尾碼的加密配置,您必須先匯出其內容,並在變更配置後重新匯入內容。DSCC 可協助您執行這些步驟。如需有關使用 DSCC 的更多資訊,請參閱目錄服務控制中心介面

為進一步確保安全性,只要您開啟屬性加密,即應手動刪除仍可能含有未加密值的資料庫快取檔案與資料庫記錄檔。如需刪除這些檔案的程序,請參閱配置屬性加密

您應在載入或建立新尾碼中的資料之前啟用加密屬性。


若您選擇加密被某些項目做為命名屬性的屬性,DN 中所出現的值將不會加密。儲存於項目中的值將會加密。

雖然您在配置加密時可以選取 userPassword 屬性,但除非遇到密碼必須以純文字格式儲存的情況,否則安全性並不會因此有任何提昇。DIGEST-MD5 SASL 認證也是如此。若密碼已在其密碼策略中定義了加密機制,則進一步的加密所增添的安全性將極其有限,且反而會影響每個連結作業的效能。

在儲存時,加密屬性的開頭會加上密碼標記,表示其使用了加密演算法。使用 DES 加密演算法的加密屬性將如下所示:


{CKM_DES_CBC}3hakc&jla+=snda%

當您從線上匯入資料而在檢視時為資料加密後,您即已提供對伺服器進行認證的金鑰資料庫密碼,往後將不會再出現此提示。若您進行離線資料匯入,目錄伺服器則會先提示您提供密碼,始允許您為匯入的資料加密。為資料解密時 (此作業需要更高的安全性),無論此匯出作業是線上或是離線,目錄伺服器都會自動提示您提供金鑰資料庫密碼。如此將可進一步確保安全性。


備註 –

只要憑證或私密金鑰未變更,伺服器就會繼續產生相同的金鑰。因此,只要兩個伺服器實例使用相同的憑證,資料即可從一個伺服器實例傳輸 (匯出並匯入) 至另一個實例。


屬性加密與效能

屬性加密雖然可提昇資料安全性,但也會影響系統效能。請仔細評估哪些屬性需要加密,而僅就您認為特別機密的屬性進行加密。

由於機密資料可透過索引檔案直接存取,因此對應於加密屬性的索引鍵必須進行加密,使屬性受到完整的保護。在索引已對目錄伺服器效能造成影響 (尚未納入索引鍵加密所造成的影響) 的情況下,請在首次將資料匯入或增加到資料庫之前,先配置屬性加密。此程序可確保加密屬性的索引具有先佔性。

屬性加密用法注意事項

實作屬性加密功能時,請考量下列事項:

Procedure配置屬性加密

您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 如果要配置屬性加密的尾碼中含有任何項目,即須先將該尾碼的內容匯出至 LDIF 檔案。

    若尾碼中含有加密屬性,而您想要使用匯出的 LDIF 檔案重新初始化尾碼,可以讓屬性以匯出的 LDIF 保持加密形式。

  2. 若要啟用屬性加密,請使用此指令:


    $ dsconf create-encrypted-attr -h host -p port suffix-DN attr-name cipher-name
    

    其中 cipher-name 為下列其中一項:

    • des - DES 區塊密碼

    • des3 - Triple-DES 區塊密碼

    • rc2 - RC2 區塊密碼

    • rc4 - RC4 串流密碼

    例如:


    $ dsconf create-encrypted-attr -h host1 -p 1389 dc=example,dc=com uid rc4
  3. 若要將加密屬性回復為其原始狀態,請使用此指令:


    $ dsconf delete-encrypted-attr -h host -p port suffix-DN attr-name
    
  4. 若您變更了配置而為一或多個屬性加密,且這些屬性在匯入作業之前即有值,請清除資料庫快取並移除記錄。

    在資料庫快取與資料庫記錄中,不會顯示任何未加密的值。


    備註 –

    若是刪除這些檔案,則會遺失某些追蹤資訊。此外,當您刪除這些檔案後,伺服器將處於回復模式,而需要很長的時間才能重新啟動。


    若要清除資料庫快取及移除記錄,請執行以下作業:

    1. 停止目錄伺服器,如啟動、停止與重新啟動目錄伺服器實例中所述。

    2. 以超級使用者或具有管理員權限的使用者身份,從檔案系統中刪除資料庫快取檔案。


      # rm instance-path/db/__db.*
    3. 從檔案系統中刪除資料庫記錄檔。


      # rm instance-path/db/log.0000000001
    4. 重新啟動目錄伺服器。

      伺服器會自動建立新的資料庫快取檔案。在重新填入快取前,此尾碼中的作業效能可能會略受影響。

  5. 以 LDIF 檔案初始化尾碼,如初始化尾碼中所述。

    載入檔案且建立對應的索引時,指定屬性的所有值均將加密。