Sun Java System Web Proxy Server 4.0.4 管理指南

第 8 章 控制對伺服器的存取

本章說明如何控制存取 Administration Server 以及 Proxy Server 所提供資料的行為。您可針對伺服器提供的所有資料或伺服器處理的特定 URL,限制對其存取的行為。例如,您可以指定僅某些人員可以存取特定的 URL,或指定除這些人員之外的所有人員均可看到檔案。您可以允許所有用戶端均可存取 HTTP 的 URL,但針對 FTP 則限定存取行為。您也可以依據主機名稱或網域名稱來限制對 URL 進行存取,例如當您使用一部 Proxy Server 來為許多內部網路伺服器提供服務時,可以僅允許特定人員存取其中一部伺服器所儲存的機密研究專案。

您必須先啟用分散式管理,並在您的 LDAP 資料庫中配置一個管理群組,才能在 Administration Server 上使用存取控制功能。本章包含的資訊假設已執行過這些作業。

本章包含下列小節:

何為存取控制?

存取控制可讓您決定可存取 Proxy Server 的人員,以及他們可存取伺服器的哪些部分。您可以控制讓使用者存取整個伺服器或只存取伺服器的某些部分 (如目錄、檔案、檔案類型等)。在評估內送請求時,會依據稱為存取控制項目 (ACE) 的規則階層來決定存取。Proxy Server 將尋找相符的項目,以決定應授予存取權還是拒絕。每個 ACE 都會指定伺服器是否應該繼續到階層中的下一個項目。ACE 的集合稱為存取控制清單 (ACL)。當收到請求時,系統會檢查 obj.conf 檔案查看其中是否有參照 ACL 來判斷存取權。依預設,伺服器具有一個包含多個 ACL 的 ACL 檔案。

存取權是允許還是拒絕,需依下列項目決定:

本小節包含以下主題:

使用者/群組的存取控制

您可以限制只讓特定使用者或群組存取您的伺服器。使用者/群組存取控制會要求使用者先提供使用者名稱和密碼,之後才能存取伺服器。伺服器會將用戶端憑證中的資訊或用戶端憑證本身,與某個目錄伺服器項目進行比對。

Administration Server 只使用基本認證。如果需要在 Administration Server 上進行用戶端認證,您必須在 obj.conf 中手動編輯 ACL 檔案,將此方法變更為 SSL。

使用者/群組認證是由為伺服器配置的目錄服務執行的。如需更多資訊,請參閱配置目錄服務

目錄服務實作存取控制時使用的資訊,可以從下列任一來源取得:

當伺服器使用外部 LDAP 型的目錄服務時,伺服器實例支援以下類型的使用者/群組認證方法:

當伺服器使用內部檔案型目錄服務時,針對伺服器實例支援的使用者/群組認證方法包括:

使用者/群組認證機制要求使用者先通過認證驗證,之後才能取得存取權。使用者在認證時須提供使用者名稱和密碼、使用用戶端憑證或使用摘要認證外掛程式,以驗證自己的身份。使用用戶端憑證時需要加密。

預設認證

預設認證是首選方法。[Default] 設定使用 obj.conf 檔案中的預設方法,如果 obj.conf 中沒有任何設定,則使用 [Basic] 設定。如果選取 [Default],ACL 規則不會指定 ACL 檔案中的方法。如果選擇 [Default],您只需編輯 obj.conf 檔案中的一行文字,就可以輕鬆變更所有 ACL 的方法。

基本認證

基本認證會要求使用者先提供使用者名稱和密碼,之後才能存取伺服器。基本認證為預設的設定。您必須在 LDAP 資料庫 (如 Sun Java System Directory Server) 或檔案中建立及儲存使用者和群組的清單。您所使用的目錄伺服器不能與您的 Proxy Server 安裝在相同的伺服器根目錄下,不過您可以使用安裝在遠端電腦上的目錄伺服器。

當使用者嘗試存取具有使用者/群組認證機制的資源時,系統會提示使用者提供使用者名稱和密碼。伺服器所收到的資訊是否加密,取決於您的伺服器是否開啟了加密功能 (啟用 SSL)。


備註 –

如果使用不具 SSL 加密的基本認證,就會在網路上以未加密的文字傳送使用者名稱和密碼。網路封包可能會被截取,因而使用者名稱和密碼可能會被盜用。基本認證與 SSL 加密、主機/IP 認證或這兩者一起使用時的效果最佳。使用摘要認證可以避免此問題。


如果認證成功,使用者會看到所請求的資源。如果使用者名稱或密碼無效,系統將會發出一則訊息並拒絕存取。

您可以自訂未經授權的使用者可收到的訊息。如需更多資訊,請參閱拒絕存取時的回應

SSL 認證

伺服器可以利用下列兩種方法,以安全憑證確認使用者的身份:

如果將伺服器配置為使用憑證資訊來認證用戶端,則伺服器會執行下列動作:

要求用戶端認證以控制對特定資源進行存取的作法,與要求所有針對伺服器的連線需經用戶端認證不同。如果將伺服器配置為要求對所有連線進行用戶端認證,則用戶端必須只能提供由可信任的 CA 核發的有效憑證。如果將伺服器配置為使用 SSL 方法來認證使用者和群組,則必須執行下列動作:

當您需要具有存取控制的用戶端認證時,您的 Proxy Server 必須啟用 SSL 加密。請參閱第 5 章, 使用憑證和金鑰以取得有關啟用 SSL 的更多資訊。

若要成功地對採用 SSL 認證的資源進行存取,用戶端憑證必須來自 Proxy Server 所信任的 CA。如果將 Proxy Server 的 certmap.conf 檔案配置為將瀏覽器中的用戶端憑證與目錄伺服器中的用戶端憑證進行比對,則必須在此目錄伺服器中發佈用戶端憑證。不過,您也可以將 certmap.conf 檔案配置為只將憑證中所選取的資訊與目錄伺服器項目進行比對。例如,您可以將 certmap.conf 配置為只將瀏覽器憑證中的使用者 ID 和電子郵件地址,與目錄伺服器項目進行比對。如需有關 certmap.conf 和憑證對映的更多資訊,請參閱第 5 章, 使用憑證和金鑰。另請參閱「Sun Java System Web Proxy Server 4.0.4 Configuration File Reference」

摘要認證

您可以將 Proxy Server 配置為使用 LDAP 型或檔案型目錄服務來執行摘要認證。

摘要認證可讓使用者依據使用者名稱和密碼進行認證,但不需要以明文方式傳送使用者名稱和密碼。瀏覽器會利用使用者密碼和 Proxy Server 提供的某些資訊,使用 MD5 演算法來建立摘要值。

當伺服器使用 LDAP 型的目錄服務執行摘要認證時,也會使用摘要認證外掛程式在伺服器端計算此摘要值,並將計算結果與用戶端提供的摘要值進行比對。如果兩個摘要值相符,該使用者便通過認證。為了使這項功能得以正常運作,您的目錄伺服器必須能存取明文的使用者密碼。Sun Java System Directory Server 包含一個反向密碼外掛程式,使用對稱式加密演算法以加密形式儲存資料,稍後可解密成原來的形式。只有 Directory Server 保存了資料的金鑰。

對於 LDAP 型的摘要認證,您必須啟用隨附於 Proxy Server 的反向密碼外掛程式和摘要認證專用外掛程式。若要配置您的 Proxy Server 以處理摘要認證,請設定 dbswitch.conf 檔案中資料庫定義的 digestauth 特性,該檔案位於 server-root/userdb/

以下是 dbswitch.conf 檔案的範例。


directory default ldap://<host_name>:<port>
default:binddn cn=Directory Manager
default:encoded bindpw ***********
default:digestauth on


directory default ldap://<host_name>:<port>/
default:binddn cn=Directory Manager
default:encoded bindpw ***********
default:digestauthstate on

伺服器會嘗試依據指定的 ACL 方法來認證 LDAP 資料庫,如摘要認證所示。如果您未指定 ACL 方法,當需要進行認證時,伺服器會使用摘要認證或基本認證;當不需要進行認證時,伺服器則會使用基本認證。

下表列示認證資料庫支援和不支援的摘要認證。

表 8–1 產生摘要認證挑戰

ACL 方法 

認證資料庫支援 

認證資料庫不支援 

預設值 

未指定 

摘要和基本 

Basic (基本) 

Basic (基本) 

Basic (基本) 

Basic (基本) 

摘要 

摘要 

錯誤 

當處理設定 method=digestACL 時,伺服器會嘗試執行下列動作以進行驗證:

安裝摘要認證外掛程式

對於使用 LDAP 型之目錄服務的摘要認證,您必須安裝摘要認證外掛程式。此外掛程式會在伺服器端計算出一個摘要值,並將此摘要值與用戶端提供的摘要值進行比對。如果摘要值相符,使用者便通過認證。

如果您使用的是檔案型的認證資料庫,便不需要安裝摘要認證外掛程式。

在 UNIX 上安裝摘要認證外掛程式

摘要認證外掛程式包括一個共用程式庫和一個 ldif 檔案:

Procedure在 UNIX 上安裝摘要認證外掛程式

開始之前

    若要安裝外掛程式,請鍵入以下指令:

    % ldapmodify -D "cn=Directory Manager" -w password -a < libdigest-plugin.ldif

在 Windows 上安裝摘要認證外掛程式

您必須將數個 .dll 檔案從 Proxy Server 安裝複製到您的 Sun Java System Directory Server 伺服器電腦上,具備摘要外掛程式的 Directory Server 才能正確啟動。

Procedure在 Windows 上安裝摘要認證外掛程式

  1. 存取 Proxy Server 中的共用程式庫,位於 server-root \bin\proxy\bin

  2. nsldap32v50.dlllibspnr4.dlllibplds4.dll 檔案複製到適當的目錄中:

  3. 將這些檔案貼上到以下任一位置:

    • \Winnt\system32

      • Sun Java System Directory Server 安裝目錄: server-root\bin\sldap\server

將 Sun Java System Directory Server 設定為使用 DES 演算法

將儲存摘要密碼的屬性加密時,需要 DES 演算法。

Procedure將 Directory Server 設定為使用 DES 演算法

  1. 啟動 Sun Java System Directory Server 主控台。

  2. 開啟您的 Sun ONE Directory Server 5.1 SP1 (或更高版本) 實例。

  3. 選擇 [Configuration] 標籤。

  4. 按一下外掛程式旁邊的 + 號。

  5. 選取 DES Plug-in。

  6. 選擇 [Add] 以增加一個新屬性。

  7. 鍵入 iplanetReversiblePassword

  8. 按一下 [Save]。

  9. 設定摘要認證密碼。


    備註 –

    伺服器會使用位於物件類別 iplanetReversiblePassword 中的 iplanetReversiblePassword 屬性。若要在使用者的 iplanetReversiblePassword 屬性中使用摘要認證密碼,輸入的項目中必須包括 iplanetReversiblePasswordobject 物件。

    您可以使用 ldapmodify 或 Directory Server 管理介面完成此作業。


    使用 ldapmodify

    建立 digest.ldif 檔案以儲存 LDAP 指令。增加密碼的程序共有兩個步驟。

    1. 將物件類別增加至 digest.ldif

      該檔案如下所示 (您可以根據 Directory Server 的使用者和 ACL 建立多個 ldif 檔案):


      dn:uid=user1,dc=india,dc=sun,dc=com
      changetype:modify
      add:objectclass
      objectclass:iplanetReversiblePasswordobject
      
      dn:uid=user1,dc=india,dc=india,dc=sun,dc=com
      changetype:modify
      add:iplanetReversiblePassword
      iplanetReversiblePassword:user1
    2. # ldapmodify -D “cn={CN_Value}” -w <password> -a <ldif_file_name>

  10. 重新啟動您的 Sun Java System Directory Server 實例,並驗證使用者屬性是否已增加至 Directory Server 資料庫。

其他認證

您可以使用存取控制 API 來建立自訂認證方法。

對主機/IP 的存取控制

您可以限制對 Administration Server 及其檔案和目錄的存取,方法為限定只有使用特定電腦的用戶端才能加以存取。您可以指定要允許或拒絕其存取的電腦主機名稱或 IP 位址。使用主機/IP 認證機制存取檔案或目錄,對使用者來說幾乎毫不費力。使用者可以立即存取檔案和目錄,且無需輸入使用者名稱或密碼。

由於可能會有多人同時使用一台特定的電腦,因此將主機/IP 認證和 使用者/群組認證結合在一起使用的效果會更好。如果同時使用這兩種認證方法,則在進行存取時會要求提供使用者名稱和密碼。

主機/IP 認證不需要在伺服器上配置 DNS (網域名稱服務)。但如果選擇使用主機/IP 認證,您的網路中必須執行 DNS,並且將您的伺服器配置為使用該 DNS。若要啟用 DNS,請存取伺服器的 Server Manager,並按一下 [Preferences] 標籤,然後按一下 [Configure System Preferences]。您就會看到 DNS 設定。

啟用 DNS 會降低 Proxy Server 的效能,因為伺服器被迫執行 DNS 查找作業。 若要降低 DNS 查找作業對伺服器效能的影響,請只針對存取控制和 CGI 請求解譯 IP 位址,而不要針對每項請求解譯 IP 位址。若要設定此項限制,請在 obj.conf 中指定下列項目:

AddLog fn="flex-log" name="access" iponly=1

使用存取控制檔案

當您對 Administration Server 或伺服器上的檔案或目錄使用存取控制時,這些設定會儲存在副檔名為 .acl 的檔案中。存取控制檔案儲存在 server-root /httpacl 目錄中,其中 server-root 是伺服器的安裝位置。例如,如果將伺服器安裝在 /usr/Sun/Servers 中,則 Administration Server 和伺服器上所配置的每個伺服器實例的 ACL 檔案,都將位在 /usr/Sun/Servers/httpacl/ 中。

主要 ACL 檔案是 generated-proxy-serverid.acl。暫存工作檔案是 genwork-proxy-serverid.acl。若您使用 Administration Server 來配置存取,您就會有這兩個檔案。不過,如果您希望實施更複雜的限制,您可以建立多個檔案並從 server.xml 檔案參照這些檔案。有幾個功能只能透過編輯檔案的方式才能發揮功效,例如根據一天中的時間或一週中的日期限制存取伺服器的行為。

如需有關存取控制檔案及其語法的更多資訊,請參閱第 18 章, ACL 檔案語法如需有關 server.xml 的更多資訊,請參閱「Sun Java System Web Proxy Server 4.0.4 Configuration File Reference」

配置 ACL 使用者快取記憶體

依預設,Proxy Server 會將使用者和群組認證結果快取到 ACL 使用者快取記憶體中。您可以控制 ACL 使用者快取的有效時間長度,方法是在 magnus.conf 檔案中使用 ACLCacheLifetime 指令。每次參照快取中的某個項目時,都會計算其有效時間並與 ACLCacheLifetime 比對檢查。如果該項目的有效時間大於或等於 ACLCacheLifetime,則不使用該項目。預設值為 120 秒。將該值設定為 0 (零) 將關閉快取記憶體。如果將其設定為一個較大的值,則每次變更 LDAP 項目時,都可能需要重新啟動 Proxy Server。例如,如果將該值設定為 120 秒,Proxy Server 可能在兩分鐘的時間內,與 LDAP 伺服器不同步。僅當 LDAP 目錄不經常變更時才設定一個較大的值。

使用 magnus.conf 的參數 (ACLUserCacheSize) 就可以配置快取記憶體中可保留的項目上限。此參數的預設值為 200。新的項目會增加至清單開頭,而且當快取記憶體的大小達到最大值時,位於此清單尾端的項目會回收以建立新的項目。

您也可以使用 magnus.conf 參數 (ACLGroupCacheSize),設定每個使用者項目可以在快取記憶體內保留的最大群組成員數。此參數的預設值為 4。如果某使用者不是群組中的成員,就不會將其快取至記憶體中,如此將導致每次有請求時都需要存取數次 LDAP 目錄。

使用用戶端憑證控制存取

如果您的伺服器上已啟用 SSL,就可以將用戶端憑證與存取控制結合使用。您必須指定需要有用戶端憑證才能存取特定資源。當在您的伺服器上啟用這項功能時,擁有憑證的使用者只有在第一次嘗試存取限定資源時,才需要輸入使用者名稱和密碼。一旦建立使用者身份之後,伺服器便會將其登入名稱和密碼對映至該特定的憑證。此後,當使用者存取需要有用戶端認證才能存取的資源時,就不需要再輸入其登入名稱或密碼。

當使用者嘗試存取限定資源時,其用戶端就會將用戶端憑證傳送給伺服器,伺服器便會將該憑證與對映清單檢查核對。如果該憑證屬於您已授予存取權的使用者,則該使用者即可存取資源。

要求用戶端認證以控制對特定資源進行存取的作法,與要求所有針對伺服器的連線需經用戶端認證不同。此外請注意,對所有 SSL 連線要求用戶端憑證,並不會自動將憑證對映至資料庫內的使用者。若要設定此對映,您必須指定需要有用戶端憑證才能存取指定的資源。

存取控制的工作方式

當伺服器收到對某個網頁的請求時,它會使用 ACL 檔案中的規則來判斷是否應授予存取權。這些規則可以參照傳送請求的電腦主機名稱或 IP 位址。還可以參照儲存在 LDAP 目錄中的使用者和群組。

下列範例顯示 ACL 檔案可能包含的內容,並提供存取控制規則範例。


version 3.0;
# The following "es-internal" rules protect files such
# as icons and images related to Sun Java System Web Proxy Server.
# These "es-internal" rules should not be modified.
  acl "es-internal";
  allow (read, list, execute,info) user = "anyone";
  deny (write, delete) user = "anyone";

# The following rules deny access to the directory "web"
# to everyone not in the directory server and deny everyone
# in the directory server who is not in GroupB.
# Only the users in GroupB are allowed read, execute, list,
# and info permissions. GroupA cannot gain access to the
# directory "web" even though (in the ACL rule below) they
# can access the directory “my_stuff”. Furthermore, members
# of GroupB cannot write or delete files.
  acl "path=/export/user/990628.1/docs/my_stuff/web/";
  authenticate (user,group) {
     database = "default";
     method = "basic";
  };
  deny (all)
  (user = "anyone");

  allow (read,execute,list,info)
  (group = "GroupB");

# The following rule denies everyone not in the directory
# server and denies everyone in the directory server except
# users with the ID of "SpecificMemberOfGroupB". The ACL rule
# in this setting also has a requirement that the user
# connect from a specific IP address. The IP address setting
# in the rule is optional, and has been added for extra
# security. Also, this ACL rule has a Customized prompt
# of "Presentation Owner". This Customized prompt appears
# in the username and password dialog box in the client’s
# browser.

  acl "path=/export/user/990628.1/docs/my_stuff/web/presentation.html";
  authenticate (user,group) {
     database = "default";
     method = "basic";
     prompt = "Presentation Owner";
  };
  deny (all)
  (user = "anyone" or group = "my_group");
  allow (all)
  (user = "SpecificMemberOfGroupB") and
  (ip = "208.12.54.76");

# The following ACL rule denies everyone not in the directory
# server and everyone in the directory server except for
# GroupA and GroupB access to the directory “my_stuff”
  acl "path=/export/user/990628.1/docs/my_stuff/";
  authenticate (user,group) {
     database = "default";
     method = "basic";
  };
  deny (all)
  (user = "anyone");
  allow (read,execute,list,info)
  (group = "GroupA,GroupB");


      

例如,如果使用者請求 URL http://server_name/my_stuff/web/presentation.html,Proxy Server 便會先檢查對整個伺服器的存取控制。如果整個伺服器的 ACL 設定為 [Continue],則伺服器會檢查 my_stuff 目錄中有無 ACL。如果有 ACL 存在,伺服器便會檢查該 ACL 內的 ACE,然後檢查下一個目錄。此程序持續到找出拒絕存取的 ACL 為止,或者到達所請求 URL 的最後一個 ACL 為止,在本例中是到達 presentation.html 檔案。

若要使用 Server Manager 設定對此範例的存取控制,您可以只針對該檔案建立一個 ACL,或針對指向該檔案的每項資源各建立一個 ACL,亦即整個伺服器一個 ACL、my_stuff 目錄一個 ACL、my_stuff/web 目錄一個 ACL,以及該檔案一個 ACL。

如果有一個以上相符的 ACL 存在,則伺服器會使用相符的最後一個 ACL 敘述。

設定存取控制

本小節說明限制存取的程序。您可以對所有伺服器設定全域存取控制規則,也可以對特定的伺服器設定個別的存取控制規則。例如,人力資源部門可以建立 ACL,允許所有通過認證的使用者檢視自己的薪資資料,但僅限負責薪資的人力資源部門人員可以更新資料。

本小節包含下列主題:


備註 –

您必須先配置並啟動分散式管理,才能設定全域存取控制。


設定全域存取控制

Procedure設定對所有伺服器的存取控制

  1. 存取 Administration Server,然後按一下 [Global Settings] 標籤。

  2. 按一下 [Administer Access Control] 連結。

  3. 從下拉式清單選取管理伺服器 (proxy-admserv)、按一下 [Go] 以載入資料,然後按一下 [New ACL] (或 [Edit ACL])。

  4. 如果出現提示,則進行驗證。

    此時會顯示 [Access Control Rules For] 頁面。Administration Server 具有兩行不可編輯的預設存取控制規則。

  5. 選取 [Access Control Is On] (如果尚未選取)。

  6. 若要將一個預設 ACL 規則增加至該表的底部一列,請按一下 [New Line] 按鈕。

    若要變更存取控制限制的位置,請按一下向上或向下箭頭。

  7. 按一下 [Users/Groups] 欄中的 [Anyone]。

    [User/Group] 頁面會顯示在下方框架中。

  8. 選取您要允許其存取的使用者和群組,然後按一下 [Update]。

    按一下 [Group or User] 的 [List] 按鈕,即可提供一份清單供您選擇。如需有關設定的更多資訊,請參閱線上說明。另請參閱指定使用者和群組

  9. 按一下 [From Host] 欄中的 [Anyplace]。

    [From Host] 頁面會顯示在下方框架中。

  10. 指定允許其存取的主機名稱和 IP 位址,然後按一下 [Update]。

    如需有關設定的更多資訊,請參閱線上說明。另請參閱指定 [From Host]

  11. 按一下 [Programs] 欄中的 [All]。

    [Programs] 頁面會顯示在下方框架中。

  12. 選取 [Program Groups],或在 [Program Items] 欄位中鍵入您要允許存取的特定檔案名稱,然後按一下 [Update]。

    如需有關設定的更多資訊,請參閱線上說明。另請參閱限制對程式的存取

  13. (可選) 按一下 [Extra] 欄中的 X 符號可以增加一個自訂的 ACL 表示式。

    [Customized Expressions] 頁面會顯示在下方框架中。如需更多資訊,請參閱撰寫自訂表示式

  14. 選取 [Continue] 欄中的核取方塊 (如果尚未選取)。

    伺服器會先評估下一行,之後才決定是否允許該使用者進行存取。建立多行限制時,請將限制依一般到特定的順序排列。

  15. (可選) 按一下回收筒圖示,以刪除存取控制規則對應的那一行。

  16. (可選) 按一下 [Response When Denied] 連結,以指定使用者遭到拒絕存取時會收到的回應。

    [Access Deny Response] 頁面會顯示在下方框架中。

    1. 請選取所需的回應。

    2. 指定附加資訊 (如果適用)。

    3. 按一下 [Update]。

    如需有關設定的更多資訊,請參閱拒絕存取時的回應

  17. 按一下 [Submit] 以將新的存取控制規則儲存在 ACL 檔案中,或按一下 [Revert] 以將該頁面中的元素重設為變更之前所包含的值。

設定對伺服器實例的存取控制

使用 Server Manager 可以建立、編輯或刪除對特定伺服器實例的存取控制。若要刪除,請勿刪除 ACL 檔案中的所有 ACL 規則。至少要保留一個 ACL 檔案,並且其中至少要包含一個 ACL 規則,才能啟動伺服器。刪除所有 ACL 規則並重新啟動伺服器將導致語法錯誤。

Procedure設定對伺服器實例的存取控制

  1. 存取伺服器實例的 Server Manager 並按一下 [ Preferences] 標籤。

  2. 按一下 [Administer Access Control] 連結。

  3. 使用下列其中一種方法來選取 ACL:

    • 從 [Select A Resource] 下拉式清單中選取使用 ACL 以限制存取的資源,或按一下 [Regular Expression] 以指定常規表示式。如需更多資訊,請參閱「Proxy Server 管理指南」中的第 16 章, 管理範本和資源

    • 選取 [Existing ACL],將列出所有已啟用的 ACL。

      尚未啟用的現有 ACL 不會顯示在此清單中。從下拉式清單選取 ACL。

    • 鍵入 [ACL Name]。此選項可讓您建立已命名的 ACL。除非您很熟悉 ACL 檔案,否則不建議您使用此選項。若要將已命名的 ACL 套用至多項資源,您必須手動編輯 obj.conf。如需更多資訊,請參閱第 18 章, ACL 檔案語法

  4. 按一下對應的 [Edit] 按鈕。

    此時會顯示 [Access Control Rules For] 頁面。

  5. 選取 [Access Control Is On] (如果尚未選取)。

  6. 若要將一個預設 ACL 規則增加至該表的底部一列,請按一下 [New Line] 按鈕。

    若要變更存取控制限制的位置,請按一下向上或向下箭頭。

  7. 若要編輯此伺服器實例的 ACL,請按一下 [Action] 欄中的動作。

    [Allow/Deny] 頁面會顯示在下方框架中。

  8. 選取 [Allow] (如果尚未依預設選取),然後按一下 [Update]。

    如需有關 [Allow] 或 [Deny] 的更多資訊,請參閱設定動作

  9. 按一下 [Users/Groups] 欄中的 [Anyone]。[User/Group] 頁面會顯示在下方框架中。

  10. 選取要對其授予存取權的使用者和群組、指定認證資訊,然後按一下 [Update]。

    按一下 [Group or User] 的 [List] 按鈕,即可提供一份清單供您選擇。如需有關設定的更多資訊,請參閱線上說明。另請參閱指定使用者和群組

  11. 按一下 [From Host] 欄中的 [Anyplace]。

    [From Host] 頁面會顯示在下方框架中。

  12. 指定允許存取的主機名稱和 IP 位址,然後按一下 [Update]。

    如需有關設定的更多資訊,請參閱線上說明。另請參閱指定 [From Host]

  13. 按一下 [Rights] 欄中的 [All]。

    [Access Rights] 頁面會顯示在下方框架中。

  14. 指定此使用者的存取權限,然後按一下 [Update]。

    如需更多資訊,請參閱限制對程式的存取

  15. (可選) 按一下 [Extra] 欄下的 X 符號以增加自訂的 ACL 表示式。

    [Customized Expressions] 頁面會顯示在下方框架中。如需更多資訊,請參閱撰寫自訂表示式

  16. 選取 [Continue] 欄中的核取方塊 (如果尚未選取)。

    伺服器會先評估下一行,之後才決定是否允許該使用者進行存取。建立多行限制時,請將限制依一般到特定的順序排列。

  17. (可選) 按一下回收筒圖示,以刪除存取控制規則對應的那一行。

    請勿刪除 ACL 檔案中的所有 ACL 規則。必須至少有一個 ACL 檔案包含至少一個 ACL 規則,才能啟動伺服器。如果刪除 ACL 檔案中的所有 ACL 規則,並嘗試重新啟動伺服器,您就會收到語法錯誤訊息。

  18. (可選) 按一下 [Response When Denied] 連結,以指定使用者遭到拒絕存取時會收到的回應。

    [Access Deny Response] 頁面會顯示在下方框架中。選取所需的回應,並指定附加資訊 (如果適用),然後按一下 [Update]。如需有關設定的更多資訊,請參閱拒絕存取時的回應

  19. 按一下 [Submit] 以將新的存取控制規則儲存在 ACL 檔案中,或按一下 [Revert] 以將該頁面中的元素重設為變更之前所包含的值。

選取存取控制選項

下列主題說明您在設定存取控制時可以選取的各種選項。針對 Administration Server,前兩行為預設設定,無法編輯。

本小節包含下列主題:

設定動作

您可以指定當請求匹配存取控制規則時伺服器要執行的動作。

伺服器會檢查所有存取控制項目 (ACE) 清單,以決定存取權限。例如,第一個 ACE 通常為拒絕所有使用者。如果第一個 ACE 設為 [Continue],伺服器便會檢查清單中的第二個 ACE。如果該 ACE 相符,就會使用下一個 ACE。如果未選取 [Continue],則會拒絕所有使用者存取該項資源。伺服器會繼續檢查清單,直到找到不相符的 ACE 或相符但未設定為 [Continue] 的 ACE 為止。最後一個相符的 ACE 將確定是允許還是拒絕存取。

指定使用者和群組

使用使用者和群組認證時,系統會提示使用者提供使用者名稱和密碼,之後才能存取在存取控制規則中指定的資源。

Proxy Server 會檢查儲存在 LDAP 伺服器 (如 Sun Java System Directory Server) 或內部檔案型之認證資料庫中的使用者和群組清單。

您可以允許或拒絕資料庫中的任何人進行存取,也可以使用萬用字元式樣以允許或拒絕特定的人員,或從使用者和群組清單中選取要允許或拒絕的人員。

下列為使用者介面中 [Access Control Rules For] 頁面上,針對 [Users/Groups] 所顯示的元素:

指定 [From Host]

您可以根據發出請求的電腦來限制對 Administration Server 的存取。

下列為使用者介面中 [Access Control Rules For] 頁面上,[From Host] 所顯示的元素:

如果選取 [Only From] 選項,請在 [Host Names] 或 [IP Addresses] 欄位中鍵入萬用字元式樣或以逗號分隔的清單。依主機名稱限制比依 IP 位址限制更具有彈性。如果使用者的 IP 位址發生變更,您就無需更新此清單。但是依 IP 位址限制比較可靠。如果對連線用戶端進行 DNS 查找失敗,將無法使用主機名稱限制。

您只能使用與電腦的主機名稱或 IP 位址相符之萬用字元式樣的 * 萬用字元表示法。例如,若要允許或拒絕特定網域內的所有電腦,您需要輸入與該網域內所有主機相符的萬用字元式樣,例如 *.example.com。您可以為存取 Administration Server 的超級使用者設定不同的主機名稱和 IP 位址。

對於主機名稱,* 必須替代名稱中的整個元件,亦即 *.example.com 有效,但 *users.example.com 則無效。* 出現在主機名稱中時,必須是最左側的字元。例如 *.example.com 有效,但 users.*.com 則無效。

對於 IP 位址,* 必須替代位址中的整個位元組,例如 198.95.251.* 有效,但 198.95.251.3* 則無效。* 出現在 IP 位址中時,必須是最右側的字元。例如 198.* 有效,但 198.*.251.30 則無效。

限制對程式的存取

只有 Administration Server 才能限制對程式的存取行為。限制對程式的存取行為,即可僅讓指定的使用者檢視 Server Manager 頁面,並決定這些使用者是否可以配置該伺服器。例如,您可能允許幾個管理員配置 Administration Server 的 [Users and Groups] 區段,但拒絕他們存取 [Global Settings] 區段。

您可以配置不同的使用者存取不同的功能領域。一旦允許使用者存取已選取的功能性網域,則該使用者登入後,僅能看到開放給該使用者的功能性網域之 Administration Server 頁面。

下列為使用者介面中 [Access Control Rules For] 頁面上, [Programs] 所顯示的元素:

設定存取權限

伺服器實例的存取權限只能由 Server Manager 設定。存取權限可以限制對伺服器上檔案和目錄的存取。除了允許或拒絕所有存取權限外,您還可以指定一個允許或拒絕部分存取權限的規則。例如,您可以允許使用者對檔案具有唯讀存取權限,讓他們可以檢視資訊,但無法變更檔案。

下列為使用者介面中 [Access Control Rules For] 頁面上, [Rights] 所顯示的元素:

撰寫自訂表示式

您可以為 ACL 輸入自訂表示式。僅當您瞭解 ACL 檔案的語法和結構時,才可以選取此選項。有幾個功能只有透過編輯 ACL 檔案或建立自訂表示式的方式才能發揮功效。例如,您可以根據一天中的時間和/或一週中的日期限制存取伺服器的行為。

以下自訂表示式顯示如何依據一天中的時間和一週中的日期來限制存取。本範例假定您的 LDAP 目錄中有兩個群組存在。[Regular] 群組可以在星期一到星期五的上午 8:00 到下午 5:00 進行存取。[Critical] 群組可以隨時進行存取。

allow (read){(group=regular and dayofweek=”mon,tue,wed,thu,fri”);
(group=regular and (timeofday>=0800 and timeofday<=1700));(group=critical)}

如需有關有效語法及 ACL 檔案的更多資訊,請參閱第 18 章, ACL 檔案語法

關閉存取控制

當您取消選取 [Access Control Rules For] 頁面上標示為 [Access Control Is On] 的選項時,會出現提示詢問您是否要消除 ACL 中的記錄。當您按一下 [OK] 時,將會從 ACL 檔案中刪除該資源的 ACL 項目。

如果您想要 停用 ACL,可在 generated-proxy- serverid.acl 中的每一行開頭使用 # 號,為 ACL 行加入註釋。

在 Administration Server 中,您可以針對特定伺服器實例建立並開啟存取控制,但對其他伺服器仍保留關閉存取控制 (預設值)。例如,您可以透過 Administration Server 拒絕對 Server Manager 頁面的所有存取。當任何其他伺服器依預設開啟了分散式管理且關閉存取控制時,管理員仍可以存取和配置那些伺服器,但不能配置 Administration Server。

拒絕存取時的回應

Proxy Server 在拒絕存取時提供一則預設訊息,您可以視需要自訂回應。也可以為每個存取控制物件建立不同的訊息。

對於 Administration Server,依預設使用者會收到 server-root/httpacl/admin-denymsg.html 中的 [Permission Denied] 訊息。

Procedure變更拒絕存取訊息

  1. 按一下 [Access Control Rules For] 頁面上的 [When Denied] 連結。

  2. 選取所需的回應並提供附加資訊 (如果適用),然後按一下 [Update]。請確定使用者對重新導向後的回應擁有存取權限。

  3. 按一下 [Submit] 以儲存變更,或按一下 [Revert] 以將該頁面中的元素重設為變更之前所包含的值。

限制對伺服器中區域的存取

本小節說明一些對伺服器及其內容的常用限制。每個程序的步驟都會詳細記載必須採取的特定動作。不過,您仍舊要完成設定對伺服器實例的存取控制中所描述的步驟。

本小節包含下列主題:

限制對整個伺服器的存取

您可能希望允許群組中的使用者,從子網域中的電腦存取伺服器。例如,公司某部門有一部伺服器,您只希望使用者透過網路特定子網域中的電腦加以存取。

Procedure限制對整個伺服器的存取

  1. 存取伺服器實例的 Server Manager。

  2. 在 [Preferences] 標籤上,按一下 [Administer Access Control] 連結。

  3. 從下拉式清單選取整個伺服器、按一下 [Select],再按一下對應的 [Edit] 按鈕。

    此時會顯示 [Access Control Rules For] 頁面。

  4. 增加一個新規則以拒絕所有人存取。

  5. 增加另一個新規則以允許特定群組存取。

  6. 使用 [From Host] 指定要限制的主機名稱和 IP 位址。

  7. 按一下 [Submit] 以儲存變更。

限制對目錄的存取

您可以允許某個群組的使用者讀取或執行由該群組的所有者控制的目錄及其子目錄中的應用程式和檔案。例如,專案經理可以更新狀態資訊,供專案團隊複查。

Procedure限制對目錄的存取

依照對伺服器實例的存取控制設定步驟 (請參閱設定對伺服器實例的存取控制),執行下列動作:

  1. 存取伺服器實例的 Server Manager。

  2. 在 [Preferences] 標籤上,按一下 [Administer Access Control] 連結。

  3. 從下拉式清單選取所需的資源,然後按一下 [Edit]。

  4. 建立一個規則,其預設值為拒絕任何人從任何位置進行存取。

  5. 建立另一個規則,允許某個特定群組中的使用者僅具有讀取和執行權限。

  6. 建立第三個規則,允許某個特定使用者具有所有權限。

  7. 對後兩個規則取消選取 [Continue]。

  8. 按一下 [Submit] 以儲存變更。

限制對檔案類型的存取

您可以限制對檔案類型的存取。例如,您可能只想允許特定使用者建立在伺服器上執行的程式。任何使用者都可以執行程式,但僅有群組中的特定使用者可以建立或刪除程式。

Procedure限制對檔案類型的存取

  1. 存取伺服器實例的 Server Manager。

  2. 在 [Preferences] 標籤上,按一下 [Administer Access Control] 連結。

  3. 在 [Select A Resource] 區段中,按一下 [Regular Expression] 並指定常規表示式,例如 *.cgi

  4. 按一下 [Edit]。

  5. 建立一個規則,允許所有使用者進行讀取。

  6. 建立另一個規則,僅允許某個特定群組進行寫入和刪除。

  7. 按一下 [Submit] 以儲存變更。

    對於檔案類型限制,您可以讓兩個規則的 [Continue] 方塊均保持在選取狀態。當傳入對檔案的請求時,伺服器將先檢查該檔案類型的 ACL。

    obj.conf 檔案中會建立一個 Pathcheck 函數,可能包含檔案或目錄的萬用字元式樣。ACL 檔案中的項目將如下所示:acl"*.cgi";

根據一天中的時間限制存取

您可以將對伺服器的寫入和刪除存取限制為僅允許在指定的時間或指定的日期進行。

Procedure基於一天中的時間限制存取

  1. 存取伺服器實例的 Server Manager。

  2. 在 [Preferences] 標籤上,按一下 [Administer Access Control] 連結。

  3. 在 [Select A Resource] 區段中,從下拉式清單選取整個伺服器,然後按一下 [Edit]。

  4. 建立一個規則,授予所有使用者讀取和執行權限。

    如果使用者要增加、更新或刪除檔案或目錄,則此規則不再適用,伺服器將搜尋另一個相符的規則。

  5. 建立另一個規則,拒絕所有使用者進行寫入和刪除。

  6. 按一下 X 連結,以建立自訂表示式。

  7. 鍵入允許進行存取的一週中的哪些天以及一天中的哪些時間,例如:


    user = "anyone" anddayofweek = "sat,sun" or(timeofday >= 1800 
    andtimeofday <= 600)
  8. 按一下 [Submit] 以儲存變更。

    自訂表示式中的任何錯誤都會產生一則錯誤訊息。請進行更正並再次提交。

基於安全性限制存取

您可以為同一伺服器實例配置 SSL 及非 SSL 偵聽通訊端。基於安全性限制存取,可讓您為僅應透過安全通道傳輸的資源建立保護。

Procedure基於安全性限制存取

  1. 存取伺服器實例的 Server Manager。

  2. 在 [Preferences] 標籤上,按一下 [Administer Access Control] 連結。

  3. 在 [Select A Resource] 區段中,從下拉式清單選取整個伺服器,然後按一下 [Edit]。

  4. 建立一個規則,授予所有使用者讀取和執行權限。

    如果使用者要增加、更新或刪除檔案或目錄,則此規則不再適用,伺服器將搜尋另一個相符的規則。

  5. 建立另一個規則,拒絕所有使用者進行寫入和刪除。

  6. 按一下 X 連結,以建立自訂表示式。

  7. 鍵入 ssl="on"。例如︰


    user = "anyone" and ssl="on"
  8. 按一下 [Submit] 以儲存變更。

    自訂表示式中的任何錯誤都會產生一則錯誤訊息。請進行更正並再次提交。

保證資源的存取安全

本小節說明在啟用分散式管理後,為保證 Proxy Server 存取控制安全性而必須執行的其他作業。

保證伺服器實例的存取安全

若要配置 Proxy Server 以控制對伺服器實例的存取,請編輯 server-roob/httpacl/*.proxy-admserv.acl 檔案,以指定要授予哪個使用者存取控制權限。例如︰

acl "proxy-server_instance "; authenticate (user,group) { database = "default"; method = "basic"; }; deny absolute (all) user != "UserA";

啟用基於 IP 的存取控制

如果參照 ip 屬性的存取控制項目位於與 Administration Server 相關的 ACL 檔案中 (gen*.proxy-admserv.acl),請完成下列步驟 1 和 2。

如果有關 ip 屬性的存取控制項目位於與伺服器實例相關的 ACL 檔案中,則僅需為該特定 ACL 完成下列步驟 1。

Procedure啟用基於 IP 的存取控制

  1. 編輯 server-root/httpacl/gen*.proxy-admserv.acl 檔案,以便讓認證清單除了 usergroup 之外還增加 ip,如下所示。

    acl "proxy-admserv"; authenticate (user,group,ip) { database = "default"; method = "basic"; };

  2. 增加以下存取控制項目:

    deny absolute (all) ip !="ip_for_which_access_is_allowed ";

    例如︰

    acl "proxy-admserv"; authenticate (user,group,ip) { database = "default"; method = "basic"; }; deny absolute (all) ip !="205.217.243.119";

為檔案型認證建立 ACL

Proxy Server 支援使用檔案型的認證資料庫,這些資料庫將使用者和群組資訊以文字格式儲存在平面檔案中。ACL 架構的設計原本就是要搭配檔案型認證資料庫。


備註 –

Proxy Server 不支援動態平面檔案。平面檔資料庫將在伺服器啟動時載入。對這些檔案所做的任何變更僅在重新啟動伺服器時才能生效。


本小節說明如何根據檔案認證和摘要認證,建立目錄服務的 ACL。

ACL 項目可以使用 database 關鍵字來參照使用者資料庫。例如︰

acl "default";    authenticate (user) {...    database="myfile";...};

server-root/userdb/dbswitch.conf 檔案中包含的項目可定義檔案認證資料庫及其配置。例如︰

directory myfiledb filemyfiledb:syntax keyfilemyfiledb:keyfile 
/path/to/config/keyfile

下表列示檔案認證資料庫支援的參數。

表 8–2 檔案認證資料庫支援的參數

參數 

說明 

syntax

(可選) 值為 keyfiledigest。如果未指定,則預設為 keyfile

keyfile

(如果 syntax=digest,則為必要參數) 包含摘要認證之使用者資料的檔案路徑。

digestfile

(如果 syntax=digest,則為必要參數) 包含摘要認證使用者資料的檔案路徑。


注意 – 注意 –

檔案認證資料庫檔案中每一行的長度上限為 255。如果有任何一行超出此限制,伺服器將無法啟動,並將錯誤記錄到記錄檔中。


請確定在嘗試使用檔案型的認證資料庫設定 ACL 前,已經配置好檔案型的認證目錄服務。如需更多資訊,請參閱配置目錄服務

為基於檔案認證的目錄服務建立 ACL

Procedure為基於檔案認證的目錄服務建立 ACL

  1. 存取伺服器實例的 Server Manager。

  2. 在 [Preferences] 標籤上,按一下 [Administer Access Control] 連結。

  3. 從下拉式清單選取 ACL 檔案,然後按一下 [Edit]。

  4. 在 [Access Control Rules For] 頁面中,按一下要編輯之 ACL 項目的 [Users/Groups] 連結。

    [User/Group] 頁面會顯示在下方框架中。

  5. 從 [Authentication Database] 下的下拉式清單,指定金鑰檔案資料庫。

  6. 按一下 [Update],再按一下 [Submit] 以儲存變更。

    當您依據金鑰檔案型的檔案認證資料庫設定 ACL 時,將使用相應的 ACL 項目更新 dbswitch.conf 檔案,例如以下所提供的範例項目:


    version 3.0;acl "default";authenticate (user) {prompt = 
    "Sun Java System Proxy Server 4.0";database = "mykeyfile";
    method = "basic";};deny (all) user = "anyone";
    allow (all) user = "all";

為基於摘要認證的目錄服務建立 ACL

檔案認證資料庫也支援適於和摘要認證一起使用的檔案格式 (根據 RFC 2617)。此舉會儲存基於密碼和範圍產生的雜湊。不會維護明文密碼。

Procedure為基於摘要認證的目錄服務建立 ACL

  1. 存取伺服器實例的 Server Manager。

  2. 在 [Preferences] 標籤上,按一下 [Administer Access Control] 連結。

  3. 從下拉式清單選取 ACL 檔案,然後按一下 [Edit]。

  4. 在 [Access Control Rules For] 頁面,按一下要編輯之 ACL 的 [Users/Groups] 連結。

    [User/Group] 頁面會顯示在下方框架中。

  5. 在 [Authentication Database] 下的下拉式清單中,指定摘要資料庫。

  6. 按一下 [Update],再按一下 [Submit] 以儲存變更。

    當您依據摘要認證型檔案認證資料庫設定 ACL 時,將使用相應的 ACL 項目更新 dbswitch.conf 檔案,例如以下所提供的範例項目。


    version 3.0;acl "default";authenticate (user) {prompt = "filerealm";
    database = "mydigestfile";method = "digest";}; deny (all) user = "anyone";
    allow (all) user = "all";