Sun Java System Web Proxy Server 4.0.4 管理指南

關於 ACL 檔案及 ACL 檔案語法

所有 ACL 檔案均必須遵循特定的格式與語法。ACL 檔案是包含一個或多個 ACL 的文字檔。所有 ACL 檔案都必須以單一語法版本編號為開頭。例如︰

version 3.0;

版本行可出現於任意註釋行之後。Proxy Server 使用 3.0 版的語法。在註釋行開頭使用 # 符號,即可在檔案中包含註釋。

每個檔案中的 ACL 開頭都會包含一個定義其類型的敘述:路徑、資源或已命名。

路徑及資源 ACL 可包括萬用字元。如需有關萬用字元的更多資訊,請參閱第 16 章, 管理範本和資源

類型行以字母 acl 開頭,其後接著以雙引號標示的類型資訊,最後接著一個分號。例如︰

acl "default";acl "http://*.*";

所有 ACL 的每種類型資訊均必須為唯一名稱,即使在不同的 ACL 檔案中亦如此。定義 ACL 的類型之後,可附加一個或多個認證敘述,以定義與 ACL 一起使用的方法。您也可以加入授權敘述,以定義允許或拒絕存取的人員和電腦。下列小節說明這些敘述的語法。

認證敘述

ACL 可選擇性地指定當伺服器處理 ACL 時必須使用的認證方法。一般常用的三種方法為:

基本及摘要方法要求使用者於存取資源前,須提供使用者名稱及密碼。

SSL 方法要求使用者具備用戶端憑證。若要通過認證,Proxy Server 必須開啟加密,且使用者憑證的核發者必須在可信任的 CA 清單中。

依預設,伺服器會針對未指定方法的任意 ACL 使用基本方法。您的伺服器認證資料庫必須能夠支援使用者發送的摘要認證。

每一認證行都必須指定伺服器所認證的屬性:使用者、群組或使用者及群組兩者。以下出現於 ACL 類型行之後的認證敘述指定的是基本認證,其中的使用者與資料庫或目錄中的個別使用者相符:

authenticate(user) { method = "basic";};

以下範例使用 SSL 做為使用者及群組的認證方法:

authenticate(user, group) { method = "ssl";};

以下範例指出允許使用者名稱以 sales 開頭的任意使用者:

allow (all) user = "sales*";

若最後一行變更為 group = sales,則 ACL 將會失敗,因為群組屬性並未接受認證。

授權敘述

每個 ACL 項目均可以包含一個或多個授權敘述。授權敘述指定允許\或拒絕哪些使用者存取伺服器資源。

寫入授權敘述

寫入授權敘述時,請使用以下語法:

allow|deny [absolute] (right[,right...]) attribute expression;

每行開頭必須為 allowdeny。由於規則的階層關係,最好在第一條規則中拒絕所有使用者進行存取,然後在後續規則中明確允許使用者、群組或電腦進行存取。例如,如果您允許所有人存取稱為 /my_files 的目錄,然後允許少數幾個使用者存取 /my_files/personal 子目錄,則子目錄的存取控制將不會有作用,因為允許存取 /my_files 目錄的所有人也可以存取 /my_files/personal 目錄。為防止上述情形發生,請為子目錄建立一條規則,先拒絕所有使用者存取,然後允許需要存取的幾個使用者進行存取。

然而,在某些情況下,如果將預設 ACL 設定為拒絕所有使用者存取,則其他 ACL 規則就不需要「deny all」規則。

下列行拒絕所有使用者存取:

deny (all) user = "anyone";

授權敘述的階層

ACL 中的階層取決於資源。當伺服器收到對於特定資源的請求時,會建置一個適用於該資源的 ACL 清單。伺服器首先增加其 obj.conf 檔案的 check-acl 敘述中所列出的已命名 ACL。然後再附加相符的路徑及資源 ACL。此清單將會以相同順序進行處理。除非有「absolute」ACL 敘述,否則將依順序評估所有敘述。如果「absolute allow」或「absolute deny」描述評估為「true」,則伺服器將停止處理並接受此結果。

如果有多個匹配的 ACL 存在,則伺服器會使用匹配的最後一個描述。然而,如果您使用絕對描述,則伺服器會停止尋找其他匹配的 ACL,並使用包含絕對描述的 ACL。如果同一個資源具有兩個絕對敘述,則伺服器將會使用檔案中的第一個敘述,並停止尋找其他相符的資源。


version 3.0;acl "default";authenticate (user,group)
	{ prompt="Sun Java System Web Proxy Server";};
	allow (read,execute,list,info) user = "anyone";
	allow (write,delete) user = "all";acl "http://*.*";
	deny (all) user = "anyone";allow (all) user = "joe";

            

屬性表示式

屬性表示式以使用者名稱、群組名稱、主機名稱或 IP 位址為基礎,定義被允許或被拒絕存取的使用者。下列幾行是如何對不同人員或電腦授予存取權的範例:

您也可以使用 timeofday 屬性,根據伺服器上的本機時間,限定一天中可存取伺服器的時間。例如,使用 timeofday 屬性,限定特定使用者只能在特定時間內存取。

請以 24 小時制指定時間,例如以 0400 指定上午 4:00 或 2230 指定下午 10:30。以下範例限定使用者群組 guests 只能在上午 8:00 到下午 4:59 之間進行存取。

allow (read) (group="guests") and (timeofday<0800 or timeofday=1700);

也可以依星期幾來限定存取。請使用以下三個字母的縮寫來指定星期幾:Sun、Mon、Tue、Wed、Thu、Fri 和 Sat。

以下敘述允許 premium 群組中的使用者在任一天的任何時間進行存取。discount 群組中的使用者可於週末全天進行存取,以及非週休時間上午 8:00 到下午 4:59 以外的任何時間進行存取。

allow (read) (group="discount" and dayofweek="Sat,Sun") or (group="discount" and (dayofweek="mon,tue,wed,thu,fri" and(timeofday<0800 or timeofday=1700)))or (group="premium");

表示式的運算子

屬性表示式可使用多種運算子。圓括號表示運算子的優先順序。以下運算子可與 usergroupdnsip 一起使用:

以下運算子可與 timeofdaydayofweek 一起使用:

預設 ACL 檔案

安裝後,server_root/httpacl/generated.proxy- serverid.acl 檔案會為伺服器提供預設設定。您在使用者介面中建立設定以前,伺服器都會使用工作檔案 genwork.proxy- serverid.acl。編輯 ACL 檔案時,您可以在 genwork 檔案中進行變更,然後使用 Proxy Server 儲存和套用這些變更。

一般語法項目

輸入字串可以包含以下字元:

其他字元必須在前後加上雙引號。

單一敘述可以單獨放在一行,並以分號結尾。多個敘述放於花括號內。項目清單必須使用逗號分隔,並以雙引號標示。