[ホーム] -> [Aache + PHP + PostgreSQL 実験室]

アクセス制御に関する項目

アクセスできる人を制限したい場合に利用するのが、このアクセス制御です。大抵は既出の <Directory> ディレクティブや、.htaccess ファイルを使って、ディレクトリ単位で制御を行います。この制御は大きく分けて2種類有り、一つはアクセス元の IP アドレスを利用する方法、もう一つはユーザ名/パスワードを入力してもらう方法です。組み合わせても使えます。用途に応じて使い分けてください。

ユーザ/パスワードの認証は、基本認証と呼ばれるものです。このユーザ/パスワードは、HTTP リクエストヘッダーの Authorization: というので渡されます。HTTP の例に漏れず、このヘッダーは暗号化されていないので、盗聴される危険性もありますので、注意してください。

目次

説明

Allow from host[ host] ...
(mod_access)

アクセスできるクライアントのアドレスを指定します。host には、all という文字列か、ホスト名か IP アドレス、ドット「.」で始まるドメイン名、ドットで終わる IP アドレスの一部、ネットワークアドレス/ネットマスク(ビット数でも可) を指定できます。例えば、「host.dokoka.com 10.1.2.3 .domain.com 192.168.0. 10.0.2.0/255.255.255.0 192.168.64.0/26」とかです。

Deny from host[ host] ...
(mod_access)

アクセスを禁止するクライアントのアドレスを指定します。指定方法は Allow と同じです。

Order Deny,Allow|Allow,Deny
(mod_access)

AllowOrder をどちらの順番で適用するかを設定します。Deny,Allow は、まず Deny を評価して、次に Allow を評価します(アドレスが重なっている場合は、後の方で上書きされます)。どちらにもないアドレスの場合は、許可になります。Allow,Deny は、適用順は逆で、どちらにもないアドレスの場合は、拒否になります。AllowDeny の評価は、すべて行われるのに注意してください。Order で指定した順番で適用した結果、最終的に許可か拒否が決定されます。

AuthType Basic

認証を行うタイプを指定します。今のところ Basic しか指定できません。

AuthName auth-name

認証を行うときに表示される、「認証ドメイン名」です。まあ、実際のところは、基本認証のユーザ名/パスワードを入力する画面に表示される文字列です。

Require user|group|valid-user[ userid|group-name[ userid|group-name]] ...

アクセスを許可するユーザ、グループ名を指定します。user の場合はその後ろにユーザ名を指定でき、ユーザ/パスワードの正しく、ここに指定されたユーザだけがアクセスできるようになります。group の場合はグループ名を指定でき、ユーザ/パスワードが正しく、ここで指定したグループに存在するユーザだけがアクセスできるようになります。

AuthAuthoritative On|Off

次の AuthUserFile, AuthGroupFile を使った認証のみを使用するかどうかを指定します。ユーザ認証を行うモジュールは、これ以外でも mod_auth_db, mod_auth_dbm, mod_auth_anon などいろいろありますが、ここを On に設定すると、AuthUserFile, AuthGroupFile に存在しないユーザは拒否されます。Off に設定すると、存在しないユーザは他のモジュールに渡され、他のモジュールで認証が行われるようになります。

AuthUserFile path
(mod_auth)

ユーザ認証を行うときに利用する、ユーザ名とパスワードが書かれたファイルを指定します。このファイルは、Apache 付属の htpasswd というコマンドを使って作成できます。path はサーバ上のどこでも指定できるので、クライアントから参照出来ない場所(ドキュメントツリーの外)に置くようにしてください(それが出来ない場合、最近の Apache は .htpasswd などのように .ht で始まるファイルは、アクセスを禁止する設定がされている(httpd.conf をよく見て!)ので、そういう名前にしてください。

> htpasswd -c /www/data/passwd jibun
New password:pass phrase
Re-type new password:pass phrase
Adding password for user jibun

-c オプションは、最初にファイルを作成するときにだけ指定してください(そうしないと、すでにあるデータが消えてしまいます)。ユーザが多いときは、このファイルは効率悪いので、AuthDBMUserFile(ここでは説明してません)などを使うことを推奨します。また、mod_auth_pgsql といった、ユーザ情報を PostgreSQL で管理するモジュールなどもあります(別途後述します)。

AuthGroupFile path
(mod_auth)

グループ管理をしたいときに、グループとユーザ名の対応付けしたファイルを指定します。中身は、「group-name: userid[ userid] ...」という風になっています。グループが多いときは、このファイルは効率悪いので、AuthDBMGroupFile(ここでは説明してません)などを使うことを推奨します。

Satisfy any|all

クライアントの IP アドレスによる認証と、ユーザ認証の両方が設定されている場合の動作を設定します。any が指定されていると、どちらか一方で許可されれば、アクセス可能となります。all(デフォルト)が指定されていると、両方とも許可されない限り、アクセスすることは出来ません。

戻る