Sun Java ロゴ     前へ      目次      索引      次へ     

Sun ロゴ
Sun Java System Web Proxy Server 4.0.1 管理ガイド 

付録 A
ACL ファイルの構文

アクセス制御リスト (Access Control List、ACL) ファイルは、Proxy Server のリソースにアクセスできるユーザーを定義したリストを含むテキストファイルです。デフォルトでは、Proxy Server はサーバーへのアクセスに関するすべてのリストを含む ACL ファイルを 1 つ使用します。また、obj.conf ファイルでは、複数の ACL ファイルを作成または参照できます。

Proxy Server 4 では、Proxy Server 3.x で使用されていたものとは異なる ACL ファイルの構文が使用されています。この付録では、ACL ファイルとその構文について説明します。Proxy Server とそのリソースへのアクセスの制御については、「サーバーへのアクセス制御」を参照してください。「テンプレートとリソースの管理」で説明しているように、Proxy Server 4 リリースではリソーステンプレートがサポートされています。

この付録は、次の節で構成されています。


ACL ファイルと ACL ファイルの構文について

すべての ACL ファイルは、特定の書式と構文に従って記述する必要があります。ACL ファイルは 1 つまたは複数の ACL を含むテキストファイルです。すべての ACL ファイルの先頭に、構文のバージョン番号を記述する必要があります。その例を次に示します。

version 3.0;

バージョン行は 1 つだけで、何行のコメント行の後にも指定できます。Proxy Server は、構文バージョン 3.0 を使用します。コメント行の先頭に # を付けて、ファイルにコメントを挿入することができます。

ファイル内の各 ACL は、タイプを定義する文で始まります。ACL は、次の 3 つのうちのいずれかのタイプになります。

パス ACL とリソース ACL ではワイルドカードを使用することができます。ワイルドカードについては、「テンプレートとリソースの管理」を参照してください。

タイプの行は acl という文字で始まり、タイプ情報は二重引用符で囲まれ、次にセミコロン (;) が続きます。その例を次に示します。

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

異なる ACL ファイルの間でも、すべての ACL の各タイプ情報に固有の名前を付ける必要があります。ACL のタイプを定義したあと、ACL で使用されるメソッド (認証文) と、アクセスを許可、または拒否されるユーザーやコンピュータ (承認文) を定義する 1 つまたは複数の文を記述することができます。次の節では、このような文の構文について説明します。

この節では、次の内容について説明します。

認証文

ACL では、必要に応じて、サーバーが ACL を処理するときに使用する必要のある認証方法を指定します。主に次の 3 つのメソッドがあります。

基本メソッドとダイジェストメソッドでは、リソースにアクセスしようとしているユーザーに対してユーザー名とパスワードの入力を要求します。

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 エントリには、1 つ以上の承認文を指定できます。承認文では、サーバーリソースへのアクセスを許可、または拒否するユーザーを指定します。

承認文の作成

承認文を作成する場合、次の構文を使用します。

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

各行の先頭を allow または deny にします。通常の場合、最初の規則ですべてのユーザーに対してアクセスを拒否し、2 番目以降の規則で個別のユーザー、グループ、またはコンピュータに対してアクセスを許可することをお勧めします。これは、規則の階層のためです。すなわち、すべてのユーザーに対して /my_files という名前のディレクトリへのアクセスを許可し、一部のユーザーのみに対してサブディレクトリ /my_files/personal へのアクセスを許可する場合、/my_files ディレクトリへのアクセスを許可されたユーザーは /my_files/personal ディレクトリへのアクセスも許可されるため、サブディレクトリに対するアクセス制御は機能しません。これを避けるには、すべてのユーザーのアクセスを拒否してからアクセスする必要のあるユーザーだけにアクセスを許可する規則をサブディレクトリに対して作成します。

ただし、デフォルトの ACL を設定してすべてのユーザーに対してアクセスを拒否した場合、ほかの ACL 規則では「deny all」規則は必要ありません。

次の行では、すべてのユーザーに対してアクセスを拒否します。

deny (all) user = "anyone";

承認文の階層

ACL には、リソースに応じて異なる階層があります。サーバーが特定のリソースに対する要求を受信した場合、そのリソースに適用する ACL のリストを構築します。サーバーはまず、check-acl 文の obj.conf ファイルにリスト表示する名前付き ACL を追加します。次に、一致するパス ACL とリソース ACL を追加します。このリストは同じ順序で処理されます。「無条件な」ACL 文がない場合は、すべての文が順序どおりに評価されます。「無条件に許可」の文または「無条件に拒否」の文が「true」かどうかを評価する場合、サーバーは処理を停止し、この結果の処理を受け取ります。

一致する ACL が複数ある場合、サーバーは一致する最後の文を使用します。ただし、無条件文を使用する場合は、ほかの一致する文の検索を停止し、無条件文のある ACL を使用します。同一のリソースに対する無条件文が 2 つある場合は、ファイル内の最初の文を使用し、一致するほかのリソースの検索を停止します。

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 時間形式を使用します。たとえば、午前 4 時を指定するには 0400、午後 10 時 30 分を指定するには 2230 と指定します。次の例では、guests というユーザーのグループの午前 8 時から午後 4 時 59 分までの間のアクセスを制御します。

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

また、曜日によってアクセスを制御することもできます。3 文字の省略形、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");

式の演算子

属性式では、各種の演算子を使用できます。括弧で演算子の優先度を示します。usergroupdns、および ip では、次の演算子を使用できます。

timeofday および dayofweek では、次の演算子を使用できます。

デフォルト ACL ファイル

インストールのあと、サーバーはserver_root/httpacl/generated.proxy-serverid.acl ファイルに含まれているデフォルト設定を使用できるようになります。ユーザーインタフェースで設定が作成されるまで、サーバーは作業ファイル genwork.proxy-serverid.acl を使用します。ACL ファイルを編集する場合、genwork ファイルに対して変更を行い、Proxy Server を使用して変更を保存し、適用します。

汎用構文の項目

入力文字列には、次の文字を使用できます。

その他の文字については、二重引用符で文字を囲む必要があります。

1 つの文は 1 行で表示し、末尾にセミコロンを付けます。複数の文は括弧で囲みます。項目のリストはコンマで区切り、二重引用符で囲む必要があります。


obj.conf での ACL ファイルの参照

名前付き ACL ファイルまたは個別の ACL ファイルは、obj.conf ファイル内で参照することができます。このためには、PathCheck 指令で check-acl 関数を使用します。この行には、次の構文があります。

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

ここで aclname は、ACL ファイルに表示される、ACL の固有の名前です。

たとえば、testacl という名前の付いた ACL を使用してディレクトリへのアクセスを制限する場合、obj.conf ファイルに次のような行を追加します。

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

上の例では、1 行目が、アクセスを制御するサーバーリソースを示すオブジェクトです。2 行目は PathCheck 指令で、check-acl 関数を使用して名前付き ACL (testacl) を、指令が表示されるオブジェクトにバインドします。testacl ACL は、server.xml で参照される ACL ファイルに表示できます。



前へ      目次      索引      次へ     


Part No: 819-3160.   Copyright 2005 Sun Microsystems, Inc. All rights reserved.