Sun Java System Web Server 7.0 管理員指南

第 8 章 管理使用者和群組

本章說明如何增加、刪除和編輯可存取 Sun Java System Web Server 的使用者和群組。

存取關於使用者和群組的資訊

使用 Administration Server 可以存取關於使用者帳號、群組清單、存取權限 (ACL)、組織單位以及其他使用者和群組特定資訊的應用程式資料。

使用者和群組資訊以文字格式儲存在平面檔案中,或儲存在目錄伺服器 (例如 Sun Java System Directory Server) 中,支援 簡易目錄存取協定 (LDAP)。LDAP 是透過 TCP/IP 執行的開放式目錄存取協定,可延伸至全域大小和數百萬個項目。

關於目錄服務

目錄伺服器 (如 Sun Java System Directory Server) 允許您管理來自單一應用程式的所有使用者資訊。您也可以將目錄伺服器配置為允許您的使用者從多個易存取的網路位置擷取目錄資訊。

在 Web Server 7.0 中,您可以配置三種不同類型的目錄服務以對使用者和群組進行認證與授權。如果未配置任何其他目錄服務,則不管新建的目錄服務為何類型,均會將其設定為值 default

當您建立目錄服務時,將會使用目錄服務詳細資訊更新 server.xml 檔案。

目錄服務類型

Web Server 7.0 支援的不同目錄服務類型包括:


備註 –

如果您要設定分散式管理,則預設目錄服務必須是基於 LDAP 的目錄服務。


瞭解辨別名稱 (DN)

使用者是您 LDAP 資料庫中的個人,例如您公司的員工。群組是共用某個一般屬性的兩個或多個使用者。組織單位是公司內的部門。

企業中每個使用者和群組將由辨別名稱 (DN) 屬性來表示。DN 屬性是一個包含關聯使用者、群組或物件之識別資訊的文字字串。每當您變更使用者或群組目錄項目時,就要使用 DN。例如,每當建立或修改目錄項目、設定存取控制以及為應用程式 (例如,郵件或發佈) 設定使用者帳號時,您都需要指定 DN 資訊。

Sun Java System Web Server 7.0

上圖是 DN 表示的範例。以下範例表示 Sun Microsystems 公司某位員工的典型 DN:

uid=doe,e=doe@sun.com,cn=John Doe,o=Sun Microsystems Inc.,c=US

此範例中每個等號前縮寫的涵義如下:

DN 可能包含各種「名稱-值」對。它們用於在支援 LDAP 的目錄中識別憑證主體和項目。

使用 LDIF

如果您目前沒有目錄,或者您想將新的子樹增加至現有目錄中,則可以使用 Directory Server 的 Administration Server LDIF 匯入功能。此功能接受包含 LDIF 的檔案,並且會嘗試從 LDIF 項目建立目錄或新子樹。您還可以使用 Directory Server 的 LDIF 匯出功能,將目前目錄匯出至 LDIF。此功能會建立一個代表您目錄的 LDIF 格式的檔案。可以使用 ldapmodify 指令和適當的 LDIF 更新描述來增加或編輯項目。

若要使用 LDIF 將項目增加至資料庫中,請先定義 LDIF 檔案中的項目,然後從 Directory Server 匯入 LDIF 檔案。

使用認證資料庫

認證資料庫也稱為 auth-db,代表已知使用者的資料庫,認證用戶端請求的機制就是以該資料庫為基礎。伺服器可同時配置擁有多個同一類型的 auth-db 項目。auth-db 使用者資料庫由 ACL 處理模組使用。

伺服器支援以下認證資料庫:

  1. LDAP —使用者資料儲存在 LDAP 目錄伺服器 (例如 Sun Java System Directory Server) 中。

  2. 檔案 — 使用者資料儲存在磁碟檔案中。對於不使用 (或不需要) 集中使用者管理的開發或小型部署來說,此 auth-db 尤其方便。檔案 auth-db 支援數種不同的檔案格式︰

    1. keyfile — keyfile 格式可儲存使用者 (以及每個使用者的可選群組成員) 清單。密碼儲存為單向 (不可回復的) 雜湊。這是預設格式。

    2. digestfile — digestfile 與 keyfile 非常類似,並且也支援 HTTP 摘要認證方法。

    3. htaccess —這只是一種舊格式,絕不能將其用於新的安裝或增加新使用者。

  3. PAM — PAM 是 Sun Java System Web Server 7.0 支援的新 auth-db。PAM auth-db 將認證委託給 Solaris PAM 堆疊,以便 Web 伺服器系統上的現有 Solaris 使用者也能通過 Web 伺服器認證。


    備註 –

    僅 Solaris 9 和 Solaris 10 (或更高版本) 支援 PAM auth-db,且 Web 伺服器實例必須以超級使用者身份執行。


建立認證資料庫

若要透過管理主控台來建立認證資料庫,請按一下 [配置] > [配置名稱] > [存取控制] > [認證資料庫] > [新增] 按鈕。 檢查管理主控台內嵌說明以便取得欄位描述。欄位會根據選取的認證資料庫而有變化。例如,對於基於 PAM 的認證資料庫,只需要認證資料庫名稱即可。

此處已列舉建立認證資料庫的必要選項:

LDAP 

  • 認證資料庫名稱

  • 主機名稱

  • 連接埠

  • 基底 DN

金鑰檔案 

  • 認證資料庫名稱

  • 檔案路徑

摘要檔案 

  • 認證資料庫名稱

  • 檔案路徑

PAM 

  • 認證資料庫名稱

若要透過 CLI 建立認證資料庫,請執行以下指令。


wadm> create-authdb --user=admin --password-file=admin.pwd 
--host=serverhost --port=8989 --config=config1 
--url=ldap://ldapserver.com:20002/dc=xxx,dc=sun,dc=com LDAP1

請參閱 CLI 參照 create-authdb(1)

在上述範例中,已為認證資料庫指定 URL。此 URL 格式中已指定認證資料庫的類型。例如,ldap://ds.example.come/dc=example,dc=com 會將 LDAP 目錄伺服器配置為認證資料庫。

設定使用者和群組

Administration Server 可讓您編輯 LDAP 和檔案 auth-db 類型的使用者帳號、群組清單、存取權限、組織單位以及其他使用者和群組特定的資訊。

Procedure增加使用者

  1. 選取配置。

    從配置清單中選取配置。按一下 [配置] 標籤以取得清單。

  2. 按一下 [存取控制] > [使用者] 標籤。

  3. 按一下 [新增] 按鈕。

  4. 增加使用者資訊。

    輸入使用者 ID 與密碼。選擇性地輸入使用者所屬的群組。使用者 ID 必須唯一。如果是基於 LDAP 的認證資料庫,則 Administration Server 將從搜尋基底 (基底 DN) 向下搜尋整個目錄,以查看使用者 ID 是否處於使用中狀態,確保使用者 ID 的確是唯一。但是,請注意,如果您使用 Directory Serverldapmodify 指令行公用程式 (如果可用) 建立使用者,則其不會確保唯一的使用者 ID。


    備註 –

    使用 CLI

    若要透過 CLI 建立使用者,請執行以下指令。


    wadm> create-user --user=admin --password-file=admin.pwd --host=serverhost 
    --port=8989 --config=config1 --authdb=KEYFILE1 --full-name=keyfile-config1-u1 
    keyfile-config1-u1

    請參閱 CLI 參照 create-user(1)


Procedure增加群組

  1. 選取配置。

    從配置清單中選取配置。按一下 [配置] 標籤以取得清單。

  2. 按一下 [存取控制] > [群組] 標籤。

  3. 按一下 [新增] 按鈕。

  4. 輸入群組名稱。

  5. 在 [將使用者增加至群組中] 區段中搜尋,並將現有使用者增加至群組中。


    備註 –

    在認證資料庫 (如 keyfile 或 digestfile) 中建立群組需要至少指定一個使用者。



    備註 –

    使用 CLI

    若要透過 CLI 建立群組,請執行以下指令。


    wadm> create-group --user=admin --password-file=admin.pwd --host=serverhost
    --port=8989 --config=config1 --authdb=LDAP1 group1

    請參閱 CLI 參照 create-group(1)


Procedure刪除使用者

  1. 選取配置。

    從配置清單中選取配置。按一下 [配置] 標籤以取得清單。

  2. 按一下 [存取控制] > [使用者] 標籤。

  3. 選取您需要從中刪除使用者的認證資料庫。

  4. 在 [搜尋使用者] 文字方塊中輸入使用者 ID,然後按一下 [搜尋] 按鈕。

  5. 從 [使用者 ID] 欄中選取使用者,然後按一下 [刪除] 按鈕。


    注意 – 注意 –

    如果刪除使用者後,群組中就沒有任何成員,則刪除 keyfile/digestfile 認證資料庫中的使用者時也會刪除關聯的群組。其原因是 keyfile/digestfile 認證資料庫不允許群組中無成員。



    備註 –

    使用 CLI

    若要透過 CLI 刪除使用者,請執行以下指令。


    wadm> delete-user --user=admin --password-file=admin.pwd --host=serverhost 
    --port=8989 --config config1 --authdb KEYFILE1 user1

    請參閱 CLI 參照 delete-user(1)


Procedure刪除群組

  1. 選取配置。

    從配置清單中選取配置。按一下 [配置] 標籤以取得清單。

  2. 按一下 [存取控制] > [群組] 標籤。

  3. 選取您需要從中刪除群組的認證資料庫。

  4. 在 [搜尋使用者] 文字方塊中輸入使用者 ID,然後按一下 [搜尋] 按鈕。

  5. 從 [使用者 ID] 欄中選取使用者,然後按一下 [刪除] 按鈕。


    備註 –

    刪除群組並不會刪除屬於該群組的使用者。您必須手動刪除使用者或重新指定群組。



    備註 –

    使用 CLI

    若要透過 CLI 刪除群組,請執行以下指令。


    wadm> delete-group --user=admin --password-file=admin.pwd --host=serverhost
    --port=8989 --config config1 --authdb LDAP1 group1

    請參閱 CLI 參照 delete-group(1)


靜態和動態群組

群組是描述 LDAP 資料庫中物件集的物件。Web Server 7.0 群組由共用某個一般屬性的使用者組成。例如,物件集可能是在您公司行銷部工作的一些員工。這些員工可能屬於稱為 Marketing 的群組。

對於 LDAP 服務,定義群組成員關係的方式有兩種:靜態和動態。靜態群組會明確列舉其成員物件。一個靜態群組就是一個 CN,包含 uniqueMembers 和/或 memberURLs 和/或 memberCertDescriptions。靜態群組的成員並不共用某個一般屬性,但 CN=<Groupname> 屬性除外。

動態群組允許您使用 LDAP URL 來定義僅與群組成員符合的規則集。動態群組的成員共用 memberURL 篩選器中定義的一般屬性或屬性集。例如,如果您需要一個包含所有 Sales 人員的群組,且他們已位於以下的 LDAP 資料庫

ou=Sales,o=Airius.com」中,您需要使用以下 memberurl 定義一個動態群組:

ldap:///ou=Sales,o=sun??sub?(uid=*)

隨後,此群組將包含樹中「ou=Sales,o=sun」點下具有 uid 屬性的所有物件,即所有 Sales 成員。

對於靜態和動態群組,如果您使用 memberCertDescription,則成員可以共用憑證中的一般屬性。請注意,這些僅在 ACL 使用 SSL 方法時才適用。

建立新群組後,您即可在其中增加使用者或成員。

靜態群組

對於 LDAP服務,Administration Server 可使您透過在任意數量使用者的 DN 中指定相同群組屬性來建立靜態群組。靜態群組僅在您於其中加入或刪除使用者時才變更。

建立靜態群組的指導原則

使用 Administration Server 表單來建立新的靜態群組時,請考量以下準則:

動態群組

動態群組具有 groupOfURLsobjectclass,並具有零個或多個 memberURL 屬性,每一個屬性都是描述物件集的 LDAP URL。

對於 LDAP 服務,如果您想要根據任意屬性將使用者自動分組,或者想要將 ACL 套用至包含相符 DN 的特定群組,Web Server 可使您建立動態群組。例如,您可以建立一個群組,該群組將自動包括含有department=marketing 屬性的任何 DN。如果您為 department=marketing 套用搜尋篩選器,則搜尋將傳回一個群組,其中包括含有 department=marketing 屬性的所有 DN。然後,您可以基於此篩選器的搜尋結果來定義動態群組。隨後,您可以針對結果動態群組定義一個 ACL。

Web Server 實作動態群組的方式

Web Server 在 LDAP 伺服器模式中以 objectclass = groupOfURLs 來實作動態群組。groupOfURLS 類別可以具有多個 memberURL 屬性,每個屬性均包含一個 LDAP URL,用來列舉目錄中的物件集。群組成員將是這些物件集的併集。例如,以下群組僅包含一個成員 URL:

ldap:///o=mcom.com??sub?(department=marketing)

此範例說明包含「o=mcom.com」下部門為「marketing」的所有物件集。LDAP URL 可以包含搜尋基底 DN、範圍和篩選器,但主機名稱和連接埠除外。這就意味著您僅能參考同一 LDAP 伺服器上的物件。支援所有範圍。

將自動包括 DN,而無須您在群組中逐個增加。群組會動態變更,這是因為每次 ACL 驗證需要群組查詢時,Sun ONE Web Server 均會執行 LDAP 伺服器搜尋。ACL 檔案中使用的使用者和群組名稱與 LDAP 資料庫中物件的 cn 屬性相對應。


備註 –

Web Server 使用 cn (commonName) 屬性做為 ACL 的群組名稱。


ACL 與 LDAP 資料庫的對映定義於 dbswitch.conf 配置檔案 (將 ACL 資料庫名稱與實際 LDAP 資料庫 URL 關聯) 中,以及 ACL 檔案 (定義各資料庫可用於哪個 ACL) 中。例如,如果您想讓「staff」群組中的成員擁有基底存取權限,ACL 代碼將查詢物件類別為 groupOf<anything> 且 CN 設定為 staff 的物件。物件定義群組成員的方式有兩種:明確列舉成員 DN (靜態群組的 groupOfUniqueNames 作業即如此),或指定 LDAP URL (例如,groupOfURLs)。

群組可以為靜態和動態

群組物件可同時具有 objectclass = groupOfUniqueMembersobjectclass = groupOfURLs,因此「uniqueMember」和「memberURL」屬性都是有效的。群組的成員關係是其靜態成員和動態成員的併集。

動態群組對伺服器效能的影響

使用動態群組時會影響伺服器的效能。如果您正在測試群組成員關係,且 DN 不是靜態群組的成員,則 Web Server 將會檢查資料庫基底 DN 中的所有動態群組。Web Server 為完成此作業,會檢查基底 DN 和範圍 (對照使用者的 DN),並藉由使用者 DN (做為基底 DN) 和篩選器 memberURL 來執行基底搜尋,從而檢查每一個 memberURL 是否符合。此程序會產生大量的個別搜尋。

建立動態群組的指導原則

使用 Administration Server 建立新動態群組時,請考量以下準則:

表 8–1 動態群組:必要參數

參數名稱 

說明 

<base_dn>

搜尋基底的辨別名稱 (DN) 或 LDAP 目錄中執行的所有搜尋的起始點。此參數經常設定為該目錄的後綴或根,例如「o=mcom.com」。

<attributes>

搜尋將傳回的屬性清單。若要指定一個以上的屬性,請使用逗號分隔這些屬性 (例如,「cn,mail,telephoneNumber」);如果未指定任何屬性,則傳回所有屬性。請注意,動態群組成員關係檢查將忽略此參數。

<scope>

搜尋的範圍,可以是下列值之一: 

  • base 僅擷取於 URL 中指定的有關辨別名稱 (<base_dn>) 相關資訊。

  • one 擷取於 URL 中指定且低於辨別名稱 (<base_dn>) 一個層級的項目之資訊。此範圍不包括基準項目。

  • sub 擷取於在 URL 中指定且低於辨別名稱 (<base_dn>) 的所有層級的項目相關資訊。此範圍包括基準項目。

    此參數是必要的。

<(filter)>

套用至搜尋指定範圍內項目的搜尋篩選器。如果您使用的是 Administration Server 表單,則必須指定此屬性。請注意,必須帶有括號。 

此參數是必需的。 

請注意,<attributes><scope><(filter)> 參數是依據它們在 URL 中的位置進行識別的。即使您不想指定任何屬性,也仍需要包括問號來分隔該欄位。