次のトピックでは、アクセス制御を設定するときに選択できるさまざまなオプションについて説明します。管理サーバーの場合は、最初の 2 行はデフォルトとして設定されていて、編集できません。
ここでは、次の内容について説明します。
要求がアクション制御規則と一致する場合にサーバーが実行するアクションを指定できます。
「Allow」は、ユーザーまたはシステムが、要求されたリソースにアクセスできることを意味します。
「Deny」は、ユーザーまたはシステムが、要求されたリソースにアクセスできないことを意味します。
サーバーはアクセス制御エントリ (Access Control Entry、ACE) のリストを参照して、アクセス権を決定します。たとえば、最初の ACE は通常、すべてのユーザーを拒否します。最初の ACE に「継続」が設定されている場合、サーバーはリストの 2 番目の ACE を確認し、一致している場合は、次の ACE を使用します。「継続」チェックボックスが選択されていない場合は、すべてのユーザーがリソースへのアクセスを拒否されます。サーバーは、一致しない ACE か、一致しているが継続しない ACE のどちらかに到達するまでリストを参照し続けます。一致する最後の ACE によって、アクセスが許可されるか拒否されるかが決まります。
ユーザーとグループの認証が行われる場合、ユーザーがアクセス制御規則で指定されているリソースにアクセスするには、ユーザー名とパスワードを入力する必要があります。
Proxy Server は、Sun Java System Directory Server などの LDAP サーバー、または内部ファイルベースの認証データベースのいずれかに格納されているユーザーとグループのリストを確認します。
データベース内のすべてのユーザーに対してアクセスを許可または拒否することも、ワイルドカードパターンを使用して特定のユーザーに対してアクセスを許可または拒否することも、アクセスを許可または拒否する対象をユーザーとグループのリストから選択することもできます。
ユーザーインタフェースの「Access Control Rules For」ページにある「Users/Groups」には、次の要素が表示されます。
「Anyone (No Authentication)」はデフォルト値で、すべてのユーザーがユーザー名とパスワードを入力しなくても、リソースにアクセスできることを意味します。ただし、ホスト名や IP アドレスなど、その他の設定に基づいてユーザーのアクセスが拒否される場合もあります。管理サーバーの場合、この設定は、分散管理のために指定した管理者グループ内のすべてのユーザーがページにアクセスできることを意味します。
「Authenticated People Only」
「All In The Authentication Database」は、データベースにエントリがあるユーザーに一致します。
「Only The following People」では、一致するユーザーとグループを指定します。エントリをコンマ (,) で区切るか、またはワイルドカードパターンを使用すると、ユーザーとユーザーグループの任意のリストを作成することができます。また、データベースに格納されているユーザーやグループのリストから選択することもできます。「Group」は、指定したグループ内のすべてのユーザーに一致します。「User」は、指定した個々のユーザーに一致します。管理サーバーでは、ユーザーを分散管理のために指定した管理者グループのメンバーにする必要があります。
「Prompt For Authentication」では、認証ダイアログボックスに表示されるメッセージテキストを入力します。このテキストを使用して、ユーザーが入力する必要のある項目について説明することができます。オペレーティングシステムによっては、最初の 40 文字程度しか表示されません。ほどんどのブラウザでは、ユーザー名とパスワードをキャッシュし、それらをプロンプトのテキストと関連付けます。つまり、ユーザーが同じプロンプトが表示されるサーバーの領域 (ファイルやディレクトリ) にアクセスする場合、ユーザー名とパスワードを再入力する必要がありません。逆に、さまざまな領域でユーザーに対して再認証を求めるようにする場合、そのリソースに対する ACL のプロンプトを変更する必要があります。
「認証メソッド」では、クライアントから認証情報を取得するためにサーバーが使用する方法を指定します。管理サーバーで使用できるのは、認証の基本メソッドだけです。サーバーマネージャーは、次の方法を提供します。
「デフォルト」では、obj.conf ファイルで指定されているデフォルトメソッドを使用します。obj.conf ファイルに設定されていない場合は「Basic」を使用します。「Default」を選択した場合、ACL 規則によって ACL ファイル内のメソッドが指定されることはありません。「Default」を選択すると、obj.conf ファイル内の 1 行を編集することによって、すべての ACL の方法を簡単に変更できます。
「Basic」では、HTTP メソッドを使用して、クライアントから認証情報を取得します。ユーザー名とパスワードは、サーバーで暗号化が設定されている (SSL が有効) 場合にのみ暗号化されます。それ以外の場合、ユーザー名とパスワードはクリアテキスト形式で送信され、傍受された場合は読み取られる可能性があります。
「SSL」では、クライアント証明書を使用してユーザーの認証を行います。このメソッドを使用するには、サーバーの SSL を有効にする必要があります。暗号化が有効になっている場合、基本メソッドと SSL メソッドを組み合わせて使用することができます。
セキュリティーを有効にできるのは、逆プロキシモードのときに限られ、順プロキシモードのときは有効にできません。
「Digest」では、ユーザー名とパスワードをクリアテキストとして送信することなく、ブラウザでユーザー名とパスワードに基づいて認証を行えるようにする認証メカニズムを使用します。ブラウザは MD5 アルゴリズムを使用して、ユーザーのパスワードと Proxy Server によって提供される情報の一部を使用するダイジェスト値を作成します。このダイジェスト値は、サーバー側でダイジェスト認証プラグインを使用して計算され、クライアントによって提示されたダイジェスト値と比較されます。
ダイジェスト認証では、「Prompt For Authentication」が必須のパラメータです。レルムに一致するように値を変更します (ダイジェストファイルの場合は必須)。たとえば、ダイジェストファイルですべてのユーザーがレルム test 内に存在するように設定した場合、「Prompt For Authentication」フィールドにはテキスト test が含まれるようにします。
「Authentication Database」では、サーバーでユーザーの認証に使用するデータベースを指定します。このオプションは、サーバーマネージャーからしか利用できません。「Default」を選択した場合、サーバーはデフォルトとして設定されているディレクトリサービス内のユーザーとグループを検索します。異なるデータベースを使用するように個々の ACL を設定する場合は、「Other」を選択し、データベースを指定します。 server-root/userdb/dbswitch.conf でデフォルト以外のデータベースと LDAP ディレクトリを指定する必要があります。カスタムデータベースにアクセス制御 API を使用する場合は、「Other」を選択し、データベース名を入力します。
どのコンピュータから要求が送られたかに基づいて、管理サーバーへのアクセスを制限できます。
ユーザーインタフェースの「Access Control Rules」ページにある「Users and Groups」には、次の要素が表示されます。
Anyplace」では、すべてのユーザーとシステムに対してアクセスを許可します。
Only From」では、特定のホスト名または IP アドレスへのアクセスが制限できます。
「Only From」オプションを選択する場合は、「Host Names」フィールドまたは「IP Addresses」フィールドに、ワイルドカードパターンまたはコンマで区切ったリストを入力します。IP アドレスよりホスト名で制限する方が、より柔軟にできます。ユーザーの IP アドレスが変更された場合でも、このリストを更新する必要がありません。ただし、IP アドレスで制限する方が、より確実です。接続したクライアントの DNS 検索が失敗した場合、ホスト名による制限が使用できないためです。
コンピュータのホスト名または IP アドレスと一致するワイルドカードパターンとして使用できるのは、* というワイルドカード表記だけです。たとえば、指定ドメインのすべてのコンピュータに対してアクセスを許可または拒否する場合、*.example.com のように、特定ドメイン内のすべてのホストと一致するワイルドカードパターンを指定します。管理サーバーにアクセスするスーパーユーザーに対しては、その他のユーザーとは異なるホスト名と IP アドレスを設定することができます。
ホスト名の場合、* は名前の構成要素全体を表している必要があります。つまり、*.example.com は許容されますが、 *users.example.com は許容されません。また、ホスト名で * を使用する場合、この記号は文字列の一番左に使用する必要があります。たとえば、*.example.com は許容されますが、users.*.com は許容されません。
IP アドレスの場合、* はアドレスのバイト全体を表している必要があります。たとえば、198.95.251.* は許容されますが、198.95.251.3* は許容されません。IP アドレスで * を使用する場合、この記号は文字列の一番右に使用する必要があります。たとえば、198.* は許容されますが、198.*.251.30 は許容されません。
プログラムへのアクセスを制限できるのは、管理サーバーだけです。プログラムへのアクセス制限を適用すると、特定のユーザーだけがサーバーマネージャーのページを参照し、そのサーバーを設定できるように制限できます。たとえば、一部の管理者に対して管理サーバーの「Users and Groups」セクションを設定することを許可するものの、「Global Settings」セクションへのアクセスは拒否するように制限することができます。
異なるユーザーが異なる機能ドメインにアクセスするように設定することもできます。選択したいくつかの機能ドメインへのアクセス権をユーザーに与えると、そのユーザーのログイン後、アクセス権を設定した機能ドメインの管理サーバーページのみがユーザーに表示されます。
ユーザーインタフェースの「Access Control Rules」ページの「Programs」には、次の要素が表示されます。
All Programs」では、すべてのプログラムへのアクセスを許可または拒否できます。デフォルトでは、管理者はサーバーのすべてのプログラムにアクセスできます。
Only The Following」では、ユーザーがアクセスできるプログラムを指定できます。
「Program Groups」は、「Preferences」や「Global Settings」などの、管理サーバーのタブに反映され、各ページへのアクセスを表します。管理者が管理サーバーにアクセスする場合、サーバーは管理者のユーザー名、ホスト、および IP アドレスを使用して、表示できるページを決定します。
「Program Items」では、フィールドにページ名を入力して、プログラム内の特定のページへのアクセスを制御できます。
サーバーインスタンスに対するアクセス権を設定できるのは、サーバーマネージャーを使用した場合だけです。アクセス権は、サーバーのファイルやディレクトリへのアクセスを制限します。すべてのアクセス権の許可または拒否に加えて、一部のアクセス権の許可または拒否を行うための規則を指定することもできます。たとえば、ユーザーに対してファイルへの読み取り専用アクセスを許可することができます。この設定では、ユーザーは情報を表示することはできますが、ファイルを変更することはできません。
ユーザーインタフェースの「Access Control Rules For」ページの「Rights」には、次の要素が表示されます。
All Access Rights」はデフォルトで、すべてアクセス権を許可または拒否します。
「Only The following Rights」では、許可または拒否するアクセス権の組み合わせを選択できます。
「Read」は、HTTP メソッドの GET、HEAD、POST、INDEX を含むファイルの表示をユーザーに許可します。
「Write」は、HTTP メソッドの PUT、DELETE、MKDIR、RMDIR、MOVE を含むファイルの変更または削除をユーザーに許可します。ファイルを削除するには、書き込み権と削除権の両方が必要です。
「Execute」は、ユーザーに CGI プログラム、Java アプレット、エージェントなどのサーバー側アプリケーションの実行を許可します。
「List」は、ユーザーに index.html ファイルが存在しないディレクトリ内のファイルリストへのアクセスを許可します。
ACL には、カスタマイズされた式を入力できます。このオプションは、ACL ファイルの構文や構造をよく理解している場合にだけ選択してください。ACL ファイルを編集するか、カスタマイズされた式を作成する場合にだけ使用できる機能がいくつかあります。たとえば、時刻、曜日、またはその両方を基準として、サーバーへのアクセスを制限することができます。
次のカスタマイズされた式で、時刻や曜日によってアクセスを制限する方法を示します。この例では、LDAP ディレクトリに 2 つのグループが存在していることを前提としています。「regular」グループは、月曜から金曜の午前 8 時から午後 5 時までアクセスできます。「critical」グループはいつでもアクセスできます。
allow (read){(group=regular and dayofweek=”mon,tue,wed,thu,fri”); (group=regular and (timeofday>=0800 and timeofday<=1700));(group=critical)}
有効な構文と ACL ファイルについては、第 18 章ACL ファイルの構文を参照してください。
「Access Control Rules」ページのオプション「Access Control Is On」の選択を解除した場合、ACL のレコードの消去について確認するプロンプトが表示されます。「了解」をクリックすると、ACL ファイルから該当するリソースの ACL エントリが削除されます。
ACL を無効にする場合、generated-proxy- serverid.acl の各行の先頭に # 記号を使用することにより、ACL が記述された行をコメントにすることができます。
管理サーバーからアクセス制御を作成し、特定のサーバーインスタンスに対して有効に設定し、ほかのサーバーに対しては無効 (デフォルト) のままにしておくことができます。たとえば、管理サーバーからサーバーマネージャーページへのアクセスをすべて拒否することができます。デフォルトでは、ほかのサーバーに対して、分散管理は有効に、アクセス制御は無効に設定されます。管理者は管理サーバーを設定することはできませんが、ほかのサーバーにアクセスして設定することはできます。
Proxy Server は、アクセスが拒否された場合、デフォルトメッセージを表示しますが、必要に応じて応答をカスタマイズできます。また、アクセス制御オブジェクトごとに異なるメッセージを作成することもできます。
管理サーバーの場合、デフォルトではユーザーは server-root/httpacl/admin-denymsg.html ファイルの「Permission Denied」メッセージを受け取ります。