Sun Java System Web Proxy Server 4.0.1 管理指南 |
第 8 章
控制對伺服器的存取本章描述如何控制對 Administration Server 的存取及對 Proxy Server 所提供資料的存取。可將存取限制為伺服器所提供的所有資料,或是其提供的特定 URL。例如,可以指定只有特定人士才可以存取特定的 URL,或是這些特定人士以外的任何人都可以察看檔案。可以允許所有用戶端存取 HTTP 的 URL,但對於 FTP 則僅允許限定存取。也可以根據主機名稱或網域名稱限制 URL;例如,如果有一個服務於許多內部 Web 伺服器的 Proxy Server,但只希望特定人士存取儲存在其中一個伺服器中的機密研究專案。
在 Administration Server 上使用存取控制之前,必須啟用分散式管理並且在 LDAP 資料庫中配置管理群組。本章中的資訊是假設這些作業已經執行。
本章包含下列小節:
何為存取控制?存取控制可讓您決定能夠存取 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 檔案中沒有設定,將使用「基本」方法。如果選取 [Default],則 ACL 規則將不會在 ACL 檔案中指定方法。選擇 [Default] 可讓您只需編輯 obj.conf 檔案中的一行文字即可很容易地變更所有 ACL 的方法。
基本認證
基本認證需要使用者輸入使用者名稱和密碼以存取伺服器。此為預設設定。必須在 LDAP 資料庫 (如 Sun Java System Directory Server) 或檔案中建立並儲存使用者和群組清單。所使用的目錄伺服器不能與 Proxy Server 安裝在相同的伺服器根目錄下;也可以使用安裝在遠端電腦上的目錄伺服器。
當使用者嘗試存取已經有使用者/群組認證的資源時,系統會提示使用者輸入使用者名稱和密碼。伺服器將收到加密或未加密的資訊,這取決於是否為伺服器開啟了加密 (SSL 已啟用)。
注意
如果使用不帶 SSL 加密的基本認證,將在網路中以未加密的文字形式傳送使用者名稱和密碼。網路封包可能會被截取,使用者名稱和密碼也可能會因此而被盜用。當基本認證與 SSL 加密和/或主機/IP 認證結合使用時會獲得最佳效果。使用摘要認證可以避免此問題。
認證後使用者即會看見:
可以自訂未授權使用者會收到的訊息。如需更多資訊,請參閱拒絕存取時回應。
SSL 認證
伺服器可以使用安全性憑證以兩種方式確認使用者的身份:
當將伺服器配置為使用憑證資訊來認證用戶端時,伺服器將:
- 檢查以確定憑證是否來自一個可信任的 CA (憑證授權單位)。如果不是,認證將失敗,作業事件也將結束。若要瞭解如何啟用用戶端認證,請參閱設定安全性喜好設定。
- 如果憑證來自可信任的 CA,請使用 certmap.conf 檔案將憑證對映到使用者的項目。若要瞭解如何配置憑證對映檔案,請參閱使用 certmap.conf 檔案。
- 如果憑證正確進行了對映,請檢查為此使用者指定的 ACL 規則。即使憑證正確進行了對映,ACL 規則也可能會拒絕此使用者的存取。
要求對特定資源的存取控制進行用戶端認證與要求對伺服器的所有連線進行用戶端認證不同。如果將伺服器配置為要求對所有連線進行用戶端認證,則用戶端必須只能提供由可信任的 CA 核發的有效憑證。如果將伺服器配置為使用 SSL 方法進行使用者與群組的認證,則必須符合下列情況:
當要求對存取控制進行用戶端認證時,必須為 Proxy Server 啟用 SSL 密碼。請參閱使用憑證和密鑰,以瞭解有關啟用 SSL 的更多資訊。
為了成功地存取經過 SSL 認證的資源,用戶端憑證必須來自 Proxy Server 信任的 CA。如果將 Proxy Server 的 certmap.conf 檔案配置為將瀏覽器中的用戶端憑證與目錄伺服器中的用戶端憑證進行比對,則必須在此目錄伺服器中發佈用戶端憑證。不過,certmap.conf 檔案也可以配置為僅將憑證中的選取資訊與目錄伺服器項目進行比對。例如,可以將 certmap.conf 配置為僅將瀏覽器憑證中的使用者 ID 和電子郵件位址與目錄伺服器項目進行比對。如需關於 certmap.conf 和憑證對映的更多資訊,請參閱使用憑證和密鑰。另請參閱「Proxy Server 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/ 中找到此檔案。
伺服器將嘗試基於指定的 ACL 方法認證 LDAP 資料庫,如表 8-1 所示。如果未指定 ACL 方法,當要求進行認證時,伺服器將使用摘要認證或基本認證;當不要求進行認證時,伺服器將使用基本認證。
下表中將列出認證資料庫支援或不支援的摘要認證。
使用 method=digest 處理 ACL 時,伺服器將嘗試依以下步驟進行認證:
安裝摘要認證外掛程式
對於使用基於 LDAP 之目錄服務的摘要認證,必須安裝摘要認證外掛程式。此外掛程式在伺服器端計算摘要值,並將此值與用戶端提供的摘要值進行比對。如果這些摘要值相符,使用者將通過認證。
如果使用的是基於檔案的認證資料庫,則不需要安裝摘要認證外掛程式。
在 UNIX 上安裝摘要認證外掛程式
摘要認證外掛程式包含一個共用程式庫,此程式庫在下面兩個檔案中均可找到:
在 UNIX 上安裝摘要認證外掛程式
在 Windows 上安裝摘要認證外掛程式
必須將數個 .dll 檔案從 Proxy Server 安裝複製到 Sun Java System Directory Server 伺服器電腦中,以便讓 Directory Server 能夠正確地與摘要外掛程式一併啟動。
在 Windows 上安裝摘要認證外掛程式
將 Sun Java System Directory Server 設定為使用 DES 演算法
對儲存摘要密碼的屬性進行加密需要使用 DES 演算法。
將 Directory Server 設定為使用 DES 演算法
其他認證
可以使用存取控制 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 檔案中參照這些檔案。還有數個功能只能透過編輯這些檔案才能取得,例如,基於一天中的某個時間或一週中的某一天來限定對伺服器的存取。
如需有關存取控制檔案及其語法的更多資訊,請參閱 ACL 檔案語法。如需有關 server.xml 的更多資訊,請參閱「Proxy Server Configuration File Reference」。
配置 ACL 使用者快取
依預設,Proxy Server 將使用者和群組認證結果存放在 ACL 使用者快取中。可以使用 magnus.conf 檔案中的 ACLCacheLifetime 指令來控制 ACL 使用者快取的有效時間。每次參照快取中的某個項目時,都將計算其生命週期並檢查 ACLCacheLifetime。如果此項目的生命週期大於或等於 ACLCacheLifetime,則不會使用它。預設值為 120 秒。將此值設定為 0 (零) 將關閉快取。如果將其設定為一個較大的值,則每次對 LDAP 項目進行變更時都需要重新啟動 Proxy Server。例如,如果將此值設定為 120 秒,則在長達兩分鐘的時間內,Proxy Server 可能會與 LDAP 目錄不同步。僅當 LDAP 目錄經常變更的可能性不大時才需要設定一個較大的值。
透過 ACLUserCacheSize 的 magnus.conf 參數,可以配置快取中所能保留的最大項目數。此參數的預設值為 200。新項目將增加至清單的開頭,當快取達到其最大大小時,將再循環此清單末尾的項目以建立新項目。
還可以使用 magnus.conf 的參數 ACLGroupCacheSize 來設定每個使用者項目所能快取的最大群組成員身份數。此參數的預設值為 4。遺憾的是,群組中非成員身份的使用者不會被快取,這將導致每個請求都要進行數個 LDAP 目錄存取。
透過用戶端憑證控制存取
如果伺服器上已啟用 SSL,則可將用戶端憑證與存取控制結合使用。若要執行此動作,必須指定存取特定資源時需要用戶端憑證。伺服器上啟用此功能時,擁有憑證的使用者只需在初次嘗試存取限定資源時輸入其名稱與密碼。其身份一經建立,伺服器就會將他們的登入名稱與密碼對映至此特定憑證。從那時開始,使用者在存取需要用戶端認證的資源時,將不再需要輸入其登入名稱或密碼。當使用者嘗試存取限定資源時,他們的用戶端會將用戶端憑證傳送給伺服器,而伺服器會將此憑證與其對映清單進行比對。如果憑證屬於已授予其存取權限的使用者,則會提供資源。
備註
要求對特定資源的存取控制進行用戶端認證與要求對伺服器的所有連線進行用戶端認證不同。同時也請注意,需要所有 SSL 連線的用戶端憑證並不會自動將憑證對映至資料庫中的使用者。若要執行此動作,必須指定存取指定資源時需要用戶端憑證。
存取控制的工作方式當伺服器收到頁面請求時,它會使用 ACL 檔案中的規則來確定是否應該授予存取權限。這些規則可以參照傳送此請求的電腦的主機名稱或 IP 位址。還可以參照儲存在 LDAP 目錄中的使用者和群組。
下列範例顯示 ACL 檔案的可能內容,並提供存取控制規則的範例。
例如,如果某個使用者請求以下 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。也就是說,一個用於整個伺服器,一個用於 my_stuff 目錄,一個用於 my_stuff/web 目錄,一個用於此檔案。
設定存取控制本節描述限定存取的程序。可以為所有伺服器設定全域存取控制規則,也可以為特定伺服器做個別設定。例如,人力資源部門可以建立一些 ACL,允許所有通過認證的使用者檢視其自己的薪金資料,但只允許負責薪金的人力資源人員更新這些資料。
本節包含以下主題:
設定全域存取控制
設定所有伺服器的存取控制
- 存取 Administration Server,然後按一下 [Global Settings] 標籤。
- 按一下 [Administer Access Control] 連結。
- 從下拉式清單中選取管理伺服器 (proxy-admserv),按一下 [Go] 以載入資料,然後按一下 [New ACL] (或 [Edit ACL])。
- 提示時進行認證。將顯示 [Access Control Rules For] 頁面。Administration Server 具有兩行預設存取控制規則,它們是不可編輯的。
- 選取 [Access Control Is On] (如果尚未選取)。
- 若要將一個預設 ACL 規則增加至此表的最後一列,請按一下 [New Line] 按鈕。若要變更存取控制限制的位置,請按一下向上或向下箭頭。
- 按一下 [Users/Groups] 欄中的 [Anyone]。[User/Group] 頁面將顯示在下面的框架中。
- 選取要允許其存取的使用者和群組,然後按一下 [Update]。如果按一下群組或使用者的 [List] 按鈕,將顯示供選擇的清單。如需有關設定的更多資訊,請參閱線上說明。另請參閱指定使用者和群組。
- 按一下 [From Host] 欄中的 [Anyplace]。[From Host] 頁面將顯示在下面的框架中。
- 指定允許其存取的主機名稱和 IP 位址,然後按一下 [Update]。如需有關設定的更多資訊,請參閱線上說明。另請參閱指定 [From Host]。
- 按一下 [Programs] 欄中的 [All]。[Programs] 頁面將顯示在下面的框架中。
- 選取 [Program Groups],或在 [Program Items] 欄位中輸入要允許存取的特定檔案名稱,然後按一下 [Update]。如需有關設定的更多資訊,請參閱線上說明。另請參閱限定對程式的存取。
- (可選) 按一下 [Extra] 欄中的 X 符號以增加一個自訂的 ACL 表示式。[Customized Expressions] 頁面將顯示在下面的框架中。如需更多資訊,請參閱撰寫自訂表示式。
- 選取 [Continue] 欄中的核取方塊 (如果尚未選取的話)。伺服器將評估下一行,然後才確定是否允許此使用者進行存取。建立多行限制時,將依一般到特定的順序進行評估。
- (可選) 按一下回收筒圖示以刪除存取控制規則中相應的行。
- (可選) 按一下 [Response When Denied] 連結以便指定在拒絕存取時使用者會收到的回應。[Access Deny Response] 頁面將顯示在下面的框架中。選取想要的回應,指定適當的其他資訊,然後按一下 [Update]。如需有關設定的更多資訊,請參閱拒絕存取時回應。
- 按一下 [Submit] 以便在 ACL 檔案中儲存新的存取控制規則,或是按 [Revert] 將頁面中的元素重設為變更前其所包含的值。
設定伺服器實例的存取控制
使用 Server Manager,可以建立、編輯或刪除特定伺服器實例的存取控制。刪除時請勿從 ACL 檔案中刪除所有 ACL 規則。至少要保留一個 ACL 檔案,並且其中至少要包含一個 ACL 規則,才能啟動伺服器。刪除所有 ACL 規則並重新啟動伺服器將導致語法錯誤。
設定伺服器實例的存取控制
- 存取伺服器實例的 [Server Manager],然後按一下 [Preferences] 標籤。
- 按一下 [Administer Access Control] 連結。
- 使用下列其中一種方法選取 ACL:
- [Select A Resource] 可顯示使用 ACL 來限定存取的資源。從下拉式清單中選取一個資源,或是按一下 [Regular Expression] 以指定常規表示式。如需更多資訊,請參閱「Proxy Server 管理指南」中的管理範本和資源。
- [Select An Existing ACL] 將列出已啟用的所有 ACL。尚未啟用的現有 ACL 將不會顯示在此清單中。請從下拉式清單中選擇。
- [Type In The ACL Name] 可讓您建立具名 ACL。僅當瞭解 ACL 檔案後才可以使用此選項。如果要將具名 ACL 套用至資源,必須手動編輯 obj.conf。如需更多資訊,請參閱 ACL 檔案語法。
- 按一下對應的 [Edit] 按鈕。將顯示 [Access Control Rules For] 頁面。
- 選取 [Access Control Is On] (如果尚未選取)。
- 若要將一個預設 ACL 規則增加至此表的最後一列,請按一下 [New Line] 按鈕。若要變更存取控制限制的位置,請按一下向上或向下箭頭。
- 若要編輯此伺服器實例的 ACL,請按一下 [Action] 欄中的動作。[Allow/Deny] 頁面將顯示在下面的框架中。
- 選取 [Allow] (如果尚未依預設選取),然後按一下 [Update]。如需有關 [Allow] 或 [Deny] 的更多資訊,請參閱設定動作。
- 按一下 [Users/Groups] 欄中的 [Anyone]。[User/Group] 頁面將顯示在下面的框架中。
- 選取要允許其存取的使用者和群組,指定認證資訊,然後按一下 [Update]。如果按一下群組或使用者的 [List] 按鈕,將顯示供選擇的清單。如需有關設定的更多資訊,請參閱線上說明。另請參閱指定使用者和群組。
- 按一下 [From Host] 欄中的 [Anyplace]。[From Host] 頁面將顯示在下面的框架中。
- 指定允許其存取的主機名稱和 IP 位址,然後按一下 [Update]。如需有關設定的更多資訊,請參閱線上說明。另請參閱指定 [From Host]。
- 按一下 [Rights] 欄中的 [All]。[Access Rights] 頁面將顯示在下面的框架中。
- 指定此使用者的存取權限,然後按一下 [Update]。如需更多資訊,請參閱限定對程式的存取。
- (可選) 按一下 [Extra] 欄下的 X 符號以增加一個自訂的 ACL 表示式。[Customized Expressions] 頁面將顯示在下面的框架中。如需更多資訊,請參閱撰寫自訂表示式。
- 選取 [Continue] 欄中的核取方塊 (如果尚未選取的話)。伺服器將評估下一行,然後才確定是否允許此使用者進行存取。建立多行限制時,將依一般到特定的順序進行評估。
- (可選) 按一下回收筒圖示以刪除存取控制規則中相應的行。請勿從 ACL 檔案中刪除所有 ACL 規則。必須至少有一個 ACL 檔案,且其中至少包含一個 ACL 規則,才能啟動伺服器。如果刪除 ACL 檔案中的所有 ACL 規則,並嘗試重新啟動伺服器,將收到語法錯誤訊息。
- (可選) 按一下 [Response When Denied] 連結以便指定在拒絕存取時使用者會收到的回應。[Access Deny Response] 頁面將顯示在下面的框架中。選取想要的回應,指定適當的其他資訊,然後按一下 [Update]。如需有關設定的更多資訊,請參閱拒絕存取時回應。
- 按一下 [Submit] 以便在 ACL 檔案中儲存新的存取控制規則,或是按 [Revert] 將頁面中的元素重設為變更前其所包含的值。
選取存取控制選項以下主題描述在設定存取控制時可以選取的各種選項。對於 Administration Server,頭兩行為預設設定,無法編輯。
本節包含以下主題:
設定動作
可以指定當請求符合存取控制規則時伺服器執行的動作。
伺服器將檢查整個存取控制項目 (ACE) 清單以確定存取許可權。例如,第一個 ACE 通常為拒絕所有使用者。如果第一個 ACE 已設定為 [Continue],伺服器會檢查清單中的第二個 ACE。如果相符,則會使用下一個 ACE。如果未選取 [Continue],將會拒絕所有使用者存取資源。伺服器將繼續向下檢查清單,直至找到某個不符合的 ACE,或者找到某個符合但未設定為 [Continue] 的 ACE。最後一個相符的 ACE 將確定是允許還是拒絕存取。
指定使用者和群組
使用使用者和群組認證時,將提示使用者輸入使用者名稱和密碼,然後才能存取在存取控制規則中指定的資源。
Proxy Server 將檢查儲存在 LDAP 伺服器 (如 Sun Java System Directory Server) 或內部基於檔案的認證資料庫中的使用者和群組的清單。
可以允許或拒絕資料庫中的每個使用者進行存取,也可以使用萬用字元式樣允許或拒絕特定使用者進行存取,還可以從使用者和群組的清單中選取允許或拒絕進行存取的使用者。
在使用者介面的 [Access Control Rules For] 頁面中,將為 [Users/Groups] 顯示下列元素。
- Anyone (No Authentication) 是預設值,意味著任何使用者都可以存取此資源而不必輸入使用者名稱或密碼。但是,基於其他設定 (例如主機名稱或 IP 位址) 的不同,也可能會拒絕此使用者進行存取。對於 Administration Server,這意味著為分散式管理指定的 administrators 群組中的任何使用者都可以存取各個頁面。
- Authenticated People Only
- Prompt For Authentication 指定在認證對話方塊中顯示的訊息文字。可以使用此文字來描述使用者需要輸入的內容。基於不同的作業系統,使用者大約會看到此提示的前 40 個字元。大多數瀏覽器會快取使用者名稱和密碼,並將它們與提示文字相關聯。這意味著如果使用者存取伺服器中具有相同提示的區域 (檔案和目錄),則不必重新鍵入使用者名稱和密碼。相反,如果要強制使用者重新認證後才可存取不同區域,必須變更此資源上的 ACL 提示。
- Authentication Methods 指定伺服器從用戶端取得認證資訊所使用的方法。Administration Server 僅提供了「基本」認證方法。Server Manager 提供了以下方法:
- Default 使用在 obj.conf 檔案中指定的預設方法;如果 obj.conf 檔案中沒有設定,則使用「基本」方法。如果選取 [Default],則 ACL 規則將不會在 ACL 檔案中指定方法。選擇 [Default] 可讓您只需編輯 obj.conf 檔案中的一行文字即可很容易地變更所有 ACL 的方法。
- Basic 使用 HTTP 方法從用戶端取得認證資訊。僅當為伺服器啟用了加密後才會對使用者名稱和密碼進行加密 (SSL 已啟用)。否則,名稱與密碼會以清除文字形式傳送,如果被截取,則會為他人獲悉。
- SSL 使用用戶端憑證來認證使用者。若要使用此方法,必須為伺服器啟用 SSL。啟用加密後,將可以合併基本方法和 SSL 方法。
- Digest 使用一種認證機制,它使得瀏覽器能夠基於使用者名稱和密碼對使用者進行認證,而無需將使用者名稱與密碼作為清除文字傳送。瀏覽器使用使用者的密碼和 Proxy Server 提供的某些資訊,利用 MD5 演算法來建立摘要值。伺服器端也會使用摘要認證外掛程式計算此摘要值,並會將它與用戶端提供的摘要值進行比對。
- Other 使用透過存取控制 API 建立的自訂方法。
- Authentication Database 指定伺服器用來認證使用者的資料庫。此選項僅能透過 Server Manager 使用。如果選擇 [Default],伺服器將查找配置為預設的目錄服務中的使用者和群組。如果想要將個別 ACL 配置為使用不同的資料庫,請選取 [Other],然後指定資料庫。必須在 server_root/userdb/dbswitch.conf 中指定非預設資料庫及 LDAP 目錄。如果為某個自訂資料庫使用存取控制 API,請選取 [Other] 並輸入資料庫名稱。
指定 [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 點到下午 5 點進行存取。「Critical」群組可以隨時進行存取。
allow (read)
{
(group=regular and dayofweek=Omon,tue,wed,thu,friO);
(group=regular and (timeofday>=0800 and timeofday<=1700)) ;
(group=critical)
}如需有關有效語法和 ACL 檔案的更多資訊,請參閱 ACL 檔案語法。
關閉存取控制
取消選取 [Access Control Rules For] 頁面上標籤為 [Acess 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] 訊息。
變更拒絕存取訊息
限制對伺服器中區域的存取本節描述一些常用的對伺服器及其內容的限定。每個程序的步驟都詳述了必須執行的特定動作。但仍然必須完成以下部分中所述的步驟:設定伺服器實例的存取控制。
本節包含以下主題:
限定對整個伺服器的存取
可能希望為某個群組中的使用者授予存取權限,以便他們可以從某個子網域中的電腦存取伺服器。例如,公司某部門可能有一個伺服器,您僅希望來自網路特定子網域中電腦的使用者能夠對其進行存取。
限定對整個伺服器的存取
使用針對伺服器實例存取控制設定的描述步驟 (請參閱設定伺服器實例的存取控制) 來執行下列動作:
限定對目錄 (路徑) 的存取
可以允許某個群組中的使用者讀取或執行目錄及其子目錄中的應用程式和檔案 (這些內容由此群組的所有者控制)。例如,專案經理可以更新狀態資訊,供專案團隊複查。
限定對目錄的存取
使用針對伺服器實例存取控制設定的描述步驟 (請參閱設定伺服器實例的存取控制) 來執行下列動作:
限定對檔案類型的存取
可以限制對檔案類型的存取。例如,可能希望僅允許特定使用者建立在伺服器上執行的程式。任何使用者都將能夠執行程式,但僅有群組中的指定使用者才能夠建立或刪除程式。
限定對檔案類型的存取
使用針對伺服器實例存取控制設定的描述步驟 (請參閱設定伺服器實例的存取控制) 來執行下列動作:
對於檔案類型限制,應該保持兩個 [Continue] 方塊均被核取。當傳入對某個檔案的請求時,伺服器將首先檢查此檔案類型的 ACL。
obj.conf 中將建立一個 Pathcheck 函數,它可能包含檔案或目錄的萬用字元式樣。ACL 檔案中的項目將如下所示:acl"*.cgi";
基於一天中的某個時間限定存取
可以將對伺服器的寫入和刪除存取限定為僅允許在指定的時間或指定的日期進行。
基於一天中的某個時間限定存取
使用針對伺服器實例存取控制設定的描述步驟 (請參閱設定伺服器實例的存取控制) 來執行下列動作:
- 存取伺服器實例的 Server Manager。
- 在 [Preferences] 標籤中,按一下 [Administer Access Control] 連結。
- 從 [Select A Resource] 區段中的下拉式清單選取整個伺服器,然後按一下 [Edit]。
- 建立一個新規則,授予所有使用者讀取和執行權限。這意味著如果某個使用者要增加、更新或刪除檔案或目錄,將不會套用此規則,伺服器將搜尋另一個符合的規則。
- 建立另一個新規則,拒絕所有使用者進行寫入和刪除。
- 按一下 X 連結,建立一個自訂表示式。
- 輸入允許進行存取的一週中的哪些天以及一天中的哪些時間。例如:
- 按一下 [Submit] 以儲存所做的變更。自訂表示式中有任何錯誤都將產生一則錯誤訊息。請進行更正並再次提交。
基於安全性限定存取
可以為同一伺服器實例配置 SSL 及非 SSL 偵聽通訊端。基於安全性限定存取允許您為僅應透過安全通道傳輸的資源建立保護。
基於安全性限定存取
使用針對伺服器實例存取控制設定的描述步驟 (請參閱設定伺服器實例的存取控制) 來執行下列動作:
- 存取伺服器實例的 Server Manager。
- 在 [Preferences] 標籤中,按一下 [Administer Access Control] 連結。
- 從 [Select A Resource] 區段中的下拉式清單選取整個伺服器,然後按一下 [Edit]。
- 建立一個新規則,授予所有使用者讀取和執行權限。這意味著如果某個使用者要增加、更新或刪除檔案或目錄,將不會套用此規則,伺服器將搜尋另一個符合的規則。
- 建立另一個新規則,拒絕所有使用者進行寫入和刪除。
- 按一下 X 連結,建立一個自訂表示式。
- 輸入 ssl="on"。例如:
- 按一下 [Submit] 以儲存所做的變更。自訂表示式中有任何錯誤都將產生一則錯誤訊息。進行更正並再次提交。
保證資源的存取安全本節描述在啟用分散式管理之後,為保證 Proxy Server 存取控制安全性而必須執行的其他作業。
本節包含以下主題。
保證伺服器實例的存取安全
若要配置 Proxy Server 以控制對伺服器實例的存取,請編輯 server_root/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。
啟用基於 IP 的存取控制
- 編輯 server_root/httpacl/gen*.proxy-admserv.acl 檔案,除了 user 和 group 外,再將 ip 增加至認證清單,如下所示:
acl "proxy-admserv";
authenticate (user,group,ip) {
database = "default";
method = "basic";
};- 增加以下存取控制項目:
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";
為基於檔案的認證建立 ACLProxy Server 支援使用基於檔案的認證資料庫,這些資料庫在平面檔案中以文字格式儲存使用者和群組資訊。ACL 架構被設計為可以使用檔案認證資料庫。
本節包含以下主題:
ACL 項目可以使用 database 關鍵字來參照使用者資料庫。例如:
acl "default";
authenticate (user) {
...
database="myfile";
...
};server_root/userdb/dbswitch.conf 檔案包含定義檔案認證資料庫及其配置的項目。例如:
directory myfiledb file
myfiledb:syntax keyfile
myfiledb:keyfile /path/to/config/keyfile下表列出了檔案認證資料庫支援的參數。
表 8-2 檔案認證資料庫支援的參數
參數
描述
syntax
(可選) 值為 keyfile 或 digest。如果未指定,則預設為 keyfile。
keyfile
(syntax=keyfile 時需要) 包含使用者資料的檔案路徑。
digestfile
(syntax=digest 時需要) 包含摘要認證使用者資料的檔案路徑。
備註
確定在嘗試使用基於檔案的認證資料庫設定 ACL 前,已經配置了基於檔案的認證目錄服務。如需更多資訊,請參閱配置目錄服務。
為基於檔案認證的目錄服務建立 ACL
為基於檔案認證的目錄服務建立 ACL
依據基於密鑰檔案的認證資料庫設定 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,適用於摘要認證。將儲存基於密碼和範圍的雜湊,且不維護清除文字密碼。
為基於摘要認證的目錄服務建立 ACL
當依據基於摘要認證的檔案認證資料庫設定 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";