前へ     目次     索引     DocHome     次へ     
iPlanet Web Server, Enterprise Edition 管理者ガイド



付録 C   ACL ファイルの構文


この付録では、アクセス制御リスト (access-control list、ACL) ファイルとその構文について説明します。ACL ファイルはテキストファイルで、Web サーバ上に格納されるリソースにアクセス可能なユーザを定義するリストが記述されています。デフォルトでは、Web サーバはサーバへのアクセスに関するすべてのリストを含む ACL ファイルを 1 つ使用します。ただし、複数の ACL ファイルを作成し、obj.conf ファイルでそれらの参照を指定することもできます。

アクセス制御 API を使用してアクセス制御をカスタマイズする場合、ACL ファイルの構文や関数を知っておく必要があります。たとえば、アクセス制御 API を使用して、Oracle や Informix などの別のデータベースと連動させることができます。API の詳細は、次に示す iPlanet の Web サイトを参照してください。

http://www.iplanet.com/docs

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



ACL ファイルの構文

すべての ACL ファイルは、特定の書式と構文に従って記述する必要があります。ACL ファイルは 1 つまたは複数の ACL を含むテキストファイルです。すべての ACL ファイルの先頭に、使用するバージョン番号を記述する必要があります。記述できるバージョンは 1 行だけで、コメント行の後に表示できます。iPlanet Web Server 6.0 ではバージョン 3.0 を使用します。たとえば、次のように記述します。

version 3.0;

ACL ファイルでは、行の先頭に # を付けてコメントを挿入することができます。

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

  • パス ACL は、影響を受けるリソースへの絶対パスを指定します。

  • URI (Uniform Resource Indicator) ACL は、サーバのドキュメントルートに対して相対的なディレクトリまたはファイルを指定します。

  • 名前付き ACL は、obj.conf ファイル内のリソースで参照される名前を指定します。サーバは、すべてのユーザに読み取りアクセスを許可する、LDAP ディレクトリのユーザに書き込みアクセスを許可する「default」という名前が付いたリソースが付属しています。iPlanet Web Server のウィンドウから名前付き ACL を作成することはできますが、obj.conf ファイルで、リソースの名前付き ACL を手動で参照する必要があります。

パス ACL と URI ACL では、エントリの末尾にワイルドカードを付けることができます。たとえば、/a/b/* のように記述します。エントリの末尾以外の場所にワイルドカードを指定しても機能しません。

タイプの行は acl という文字で始まり、タイプ情報は二重引用符で囲まれ、次にセミコロン (;) が続きます。異なる ACL ファイルの間でも、すべての ACL の各タイプ情報に固有の名前を付ける必要があります。以下の行では、ACL の複数のタイプの例を示します。

acl "path=C:/iPlanet/Servers/docs/mydocs/";
acl "default";
acl "uri=/mydocs/";

ACL のタイプを定義したあと、ACL で使用されるメソッド (認証文) と、アクセスを許可、または拒否されるユーザやコンピュータ (承認文) を定義する 1 つまたは複数の文を記述することができます。次の節では、このような文の構文について説明します。

この節では、次の内容を説明します。


認証メソッド

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

  • 基本 (Basic)。デフォルトの指定

  • ダイジェスト (Digest)

  • SSL

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

SSL 認証メソッドでは、ユーザに対してクライアント証明書を持っていることを要求します。Web サーバで暗号化を有効にする必要があり、認証された信頼されている CA のリストにユーザの証明書発行元が表示されている必要があります。

デフォルトでは、サーバはメソッドを指定しない ACL に対して基本認証メソッドを使用します。サーバの認証データベースでは、ユーザから送信されたダイジェスト認証を処理する必要があります。

各認証行では、サーバが認証を行う属性 (ユーザ、グループ、またはその両方) を指定する必要があります。次に示す ACL タイプ行の後に表示される認証文では、データベースまたはディレクトリ内の各ユーザと一致するユーザの基本認証を指定します。

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

次の例では、ユーザとグループの認証メソッドとして SSL を使用します。

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

次の例では、ユーザ名が sales という文字で始まるユーザを認証します。

authenticate (user)

allow (all)

user = sales*

最後の行が group = sales に変更された場合、グループの属性が認証されないため、ACL がエラーになります。


承認文

各 ACL エントリには、1 つまたは複数の承認文を指定できます。承認文では、サーバリソースへのアクセスを許可、または拒否されるユーザを指定します。承認文を作成する場合、次の構文を使用します。

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

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

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

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

deny (all)
    user = "anyone";

この節では、次の内容を説明します。


承認文の階層

ACL には、リソースに応じて異なる階層があります。たとえば、ドキュメント (URI) /my_stuff/web/presentation.html からの要求を受信する場合、サーバはこの URI に適用する ACL のリストを構築します。サーバはまず、obj.conf ファイルの「check-acl」の文にリスト表示される ACL を追加します。次に、一致する URI と PATH ACL を追加します。

サーバ上でも、同じ順序でこのリストを処理します。「無条件な」ACL 文がない場合は、すべての文が順序どおりに評価されます。「無条件に許可」の文または「無条件に拒否」の文が true かどうかを評価する場合、サーバは処理を停止し、この結果の処理を受け入れます。

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


version 3.0;
acl "default";
authenticate (user,group) {
     prompt="Web Server";
};
allow (read,execute,list,info)
     user = "anyone";
allow (write,delete)
     user = "all";
acl "uri=/my_stuff/web/presentation.html";
deny (all)
     user = "anyone";
allow (all)
     user = "joe";



属性式

属性式は、ユーザ名、グループ名、ホスト名、または IP アドレスに基づいて、アクセスを許可、または拒否するユーザを定義します。次の行は、複数のユーザまたはコンピュータに対してアクセスを許可する例です。

  • user = "anyone"

  • user = "smith*"

  • group = "sales"

  • dns = "*.iplanet.com"

  • dns = "*.iplanet.com,*.mozilla.com"

  • ip = "198.*"

  • ciphers = "rc4"

  • ssl = "on"

また、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");


式の演算子

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

  • and

  • or

  • not

  • = (等号)

  • != (等しくない)

timeofdaydayofweek では、次を使用できます。

  • > より大きい

  • < より小さい

  • >= 以上

  • <= 以下


デフォルト ACL ファイル

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

図 C-1    genwork ファイル


汎用構文の項目

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

  • a から z までの文字

  • 0 から 9 までの数字

  • ピリオド (.) と下線 (_)

ほかの文字を使用する場合は、文字を二重引用符で囲む必要があります。

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



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



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

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

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

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

<Object ppath="/usr/ns-home/docs/test/*"
PathCheck fn="check-acl" acl="testacl"
</Object

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


前へ     目次     索引     DocHome     次へ     
Copyright © 2001 Sun Microsystems, Inc. Some preexisting portions Copyright © 2001 Netscape Communications Corp. All rights reserved.

Last Updated October 17, 2001