SFC CNS GUIDE 2004

4.1 情報へのアクセス制限

ここでは, パスワードを知っている特定のユーザやグループメンバ, また特定の ドメインや ホスト からのアクセスに対して情報公開を制限する方法を説明します.

public_html以下のディレクトリにあるすべてのファイルは, 世界中のユーザに対して制限なしに公開されます. しかし, CNS の外部からアクセスされては不都合なファイルなども存在します. この場合, 各ユーザは自分のディレクトリにパスワードを設定し, そのディレクトリ内の情報を閲覧しようとした場合に図4.1のような ダイアログボックスを表示し,特定のユーザに対してのみ情報のアクセスを許します. また,特定の ドメイン(sfc.keio.ac.jpなど)や ホスト(ccz00.sfc.keio.ac.jpなど) からのアクセスに対してのみファイルを公開できます.

CNS では次に示すアクセス制限を設定できます.

  1. パスワードを知っているユーザにのみアクセスを許可する
  2. 特定のドメイン(CNS 内部)からのアクセスのみを許可する
  3. 特定のホストからのアクセスのみを許可する
  4. パスワード,ホスト名やドメイン名を組み合わせてアクセスを許可する
図 4.1: ユーザ認証ダイアログ
04_WWWAccess

4.1.1 パスワードを知っているユーザにのみ閲覧アクセスを許可する手順

次に `/home/t00000tf/public_html/secret/' (http://web.sfc.keio.ac.jp/~t00000tf/secret/) というディレクトリの下にあるファイルを, パスワードを知っているユーザにのみアクセスを許可する方法を説明します.

  1. `.htaccess'ファイルを作成する
    アクセス制限を行うディレクトリ (この場合は`/home/t00000tf/public_html/secret/')の下に, `.htaccess'という名前のファイルを, テキストエディタ([*])を用い,図4.2のような内容で作成します.
    図 4.2: `.htaccess'ファイルの例(特定のユーザのみ許可)
    AuthUserFile /home/t00000tf/etc/.htpasswd
    AuthGroupFile /home/t00000tf/etc/.htgroup
    AuthName authorized_area
    AuthType Basic
    <LIMIT GET>
    require user taro
    require group friends
    </LIMIT>

    `AuthUserFile'には, 後ほどで作成するパスワード設定ファイルを 絶対パスで指定します. URLによるディレクトリの指定や 相対パス による指定はできないので注意してください. `require user'の後には, このディレクトリにアクセスを許可するユーザ名を指定します. ユーザ名は自由に名称を設定できます.

  2. パスワード設定ファイルやグループ設定ファイルを保存するディレクトリを 作成する
% mkdir  /home/t00000tf/etc <ENTER>
% _
  1. パスワードを登録する
    パスワードの登録にはhtpasswdコマンドを利用します. ここでは, 先に`.htaccess'の中で指定したファイルである, `/home/t00000tf/etc/.htpasswd' にパスワード設定ファイルを新規に作成し, `taro', `hanako', `jiro' 各ユーザのパスワードを登録します.

以下に,パスワードを登録する例を示します.

% htpasswd  -c  /home/t00000tf/etc/.htpasswd taro <ENTER>
Adding password for taro.
New password:<パスワードを入力> <ENTER>
Re-type New password:<パスワードを入力> <ENTER>
% htpasswd  /home/t00000tf/etc/.htpasswd hanako <ENTER>
...
% htpasswd  /home/t00000tf/etc/.htpasswd jiro <ENTER>
...
% _
  

htpasswdコマンドを実行すると, 各ユーザのパスワードを入力する状態になります. 入力した内容は画面には表示されないので間違いの無いように入力してください. そのユーザに対するパスワードを入力します. 確認のため,2度入力を求められるので, 同じパスワードに入力すると, `/home/t00000tf/etc/.htpasswd' というファイルが新規に作成され, この中に各ユーザのパスワードが暗号化されて書き込まれます.

注意 `.htpasswd'を新規に作成するときには htpasswdコマンドに `-c'オプションをつけますが, 以後, 同じパスワード設定ファイルに対してパスワードを設定する場合は -cオプションをつけないで実行してください.
  1. 設定を確認する
    設定が正しく行われているか確認するために,アクセス制限をかけた URLである `http://web.sfc.keio.ac.jp/t00000tf/secret/'を Webブラウザで開きます. しばらくすると,4.1のようなダイアログボックスが表示されるので (3)で指定したユーザ名とパスワードを入力します. 正しく設定ができていれば,`/home/t00000tf/secret/'以下に保存された 情報を閲覧できます.

4.1.2 特定のドメイン(CNS 内部)からのアクセスのみを許可する

ドメイン名によってアクセス制限をするには, アクセス制限するディレクトリに`.htaccess'という 名前のファイルを図4.3のような内容で作成します. この例では,ドメイン`sfc.keio.ac.jp' (CNS に接続されたホスト) からのアクセスのみを許可するように設定しています.

図 4.3: `.htaccess'ファイルの例(特定のドメインのみ許可)
<LIMIT GET>
order deny,allow
deny from all
allow from .sfc.keio.ac.jp
</LIMIT>

これで, そのディレクトリとそれ以下の階層のディレクトリは CNS 内のホストからしかアクセスできないようになります.

4.1.3 特定ホストからのアクセスのみの許可

上の例はドメイン名によるアクセス制限ですが, ホスト名によるアクセス制限も行えます. アクセスを制限するディレクトリに, `.htaccess'という名前のファイルを図4.4のような内容で作成します.

図 4.4: `.htaccess'ファイルの例(特定ホストのみ許可)
<LIMIT GET>
order deny,allow
deny from all
allow from ccz00.sfc.keio.ac.jp
</LIMIT>

これで, CNS 内にある`ccz00.sfc.keio.ac.jp'というホスト名からのアクセスのみ許可されます.

4.1.4 パスワードとホスト名,ドメイン名を組み合わせたアクセスの制限

パスワードによるアクセス制限と, ホスト名, ドメイン名によるアクセス制限との組み合わせも可能です.

その際は, 次のように`.htaccess'ファイルの, AuthUserfileの部分に,4.1.1 を参考にして, 適切なディレクトリ, ファイル名を指定します.

また,4.1.1から4.1.3 を参考に,次の設定を必要に応じて <LIMIT></LIMIT> の間に書き加えます.

図 4.5: `.htaccess'ファイルの例(パスワードとホスト名,ドメイン名による制限)
AuthUserFile Userfile
AuthGroupFile Groupfile
        
Valid CSS! Valid HTML 4.01!