Sun Java logo     上一頁      目錄      索引      下一頁     

Sun logo
Sun Java System Web Proxy Server 4.0.1 管理指南 

附錄 A
ACL 檔案語法

存取控制清單 (ACL) 檔案是文字檔案,其中的清單定義了誰可以存取 Proxy Server 資源。依預設,Proxy Server 使用一個包含用於存取伺服器的所有清單的 ACL 檔案。也可以建立多個 ACL 檔案,並在 obj.conf 檔案中參照這些檔案。

Proxy Server 4 使用的 ACL 檔案語法與 Proxy Server 3.x 不同。本附錄描述了 ACL 檔案及其語法。如需有關控制存取 Proxy Server 及其資源的詳細資訊,請參閱控制對伺服器的存取。Proxy Server 4 版本支援資源範本,相關資訊參閱管理範本和資源

本附錄包含下列小節:


關於 ACL 檔案和 ACL 檔案語法

所有 ACL 檔案均必須遵循特定的格式與語法。ACL 檔案是包含一個或多個 ACL 的文字檔。所有 ACL 檔案均必須以語法版本號碼開始。例如:

version 3.0;

只能有一個版本行,此版本行可以出現於任何註釋行之後。Proxy Server 使用語法版本 3.0。在註釋行的開始處使用 # 符號可以將註釋加入檔案中。

檔案中的每個 ACL 均以定義其類型的敘述開始。ACL 可以是以下三種類型之一:

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

類型行以字母 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。如果同一個資源有兩個絕對敘述,則伺服器將使用檔案中的第一個敘述,並停止尋找其他相符的資源。

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 點到下午 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 儲存和套用這些變更。

一般語法項目

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

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

一條敘述可以單獨放在一行,並以分號結束。多條敘述放於大括號內。項目清單必須使用逗號分隔,並在前後加上雙引號。


在 obj.conf 中參照 ACL 檔案

obj.conf 檔案中可以參照已命名 ACL 或單獨的 ACL 檔案。這是透過在 PathCheck 指令中使用 check-acl 函數來完成的。此行使用以下語法︰

PathCheck fn="check-acl" acl="aclname"

其中 aclname 是 ACL 出現在任何 ACL 檔案中的唯一名稱。

例如,可以將以下行增加到 obj.conf 檔案中,以使用名為 testacl 的 ACL 來限定對目錄的存取:

<Object ppath="https://"
PathCheck fn="check-acl" acl="testacl"
</Object

在上述範例中,第一行的物件聲明要進行存取限定的伺服器資源。第二行的 PathCheck 指令使用 check-acl 函數將已命名 ACL (testacl) 連結至出現此指令的物件。testacl ACL 可以出現於 server.xml 所參照的任何 ACL 檔案中。



上一頁      目錄      索引      下一頁     


文件號碼:819-3163。   Copyright 2005 Sun Microsystems, Inc. 版權所有。