Basic認証を用いたアクセス制御:UNIX処方箋
現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、Basic認証を用いたアクセス制御の方法について解説します。
インターネット公開用のWebサーバを運用しています。そこで、パートナー用ページを作成することになり、ユーザーのアクセス制限が可能なページを作りたいと考えています。Apacheのみで実行できる制御方法を教えてください。WebサーバはApache 1.3.29をインストールしています。
Apacheでは、Basic認証やホストに基づいたグループ承認といった方法を利用してアクセス制御を行えます。質問にあるような、外部公開サーバのパートナー用ページの場合には、Basic認証を使用するといいでしょう。
Basic認証の設定方法
Basic認証では、特定のディレクトリやファイルに対し、IDおよびパスワードの入力を求めるユーザーの認証を実施できます。認証がかかっているファイルにアクセスすると、IDとパスワードの入力を求めるダイアログが表示されます。ディレクトリに対して制限をかけると、その配下のすべてのディレクトリおよびファイルにアクセスした際に認証が発生します。
ここでは、パートナー用ページを/usr/local/apache/htdocs/partner配下に作成し、このディレクトリ内のファイルへのアクセスを、管理者とパートナーのみに制限する方法を説明します。
httpd.confの設定
httpd.confにリスト1の設定を追記します。AuthUserFileとAuthGroupFileは、認証情報が登録されるファイルですので、HTTPアクセスで参照されないよう、DocumentRootに設定したディレクトリ(初期設定は/usr/local/apache/htdocs)より上位に配置する必要があります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
認証ユーザーファイルの作成
リスト1のAuthUserFileで指定した認証ユーザーの登録ファイル(ここでは/usr/local/apache/conf/.htpasswd)を作成します。この認証ユーザーファイルは、ユーザーIDとパスワード情報を格納するもので、パスワード情報は暗号化されたものを登録する必要があります。このため、エディタなどで直接ファイルを編集することはできず、htpasswdコマンドを使用してパスワード情報を作成します。htpasswdコマンドは、Apacheのパッケージに標準で含まれているコマンドで、/usr/local/apache/bin/htpasswdとして存在します。
それでは、IDをuser1、パスワードをuser1としてユーザーを登録してみましょう(実行例1)。「-c」オプションは、ユーザー登録ファイルの新規作成を行います。次のユーザー登録からは、「-c」オプションをつけずにコマンドを実行します。ユーザー登録ファイル(/usr/local/apache/conf/.htpasswd)にはリスト2のようにIDおよびパスワード情報が格納されます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
グループファイルの作成
ユーザーの登録数が多い場合、ユーザーをグループに登録し、グループごとにアクセスの可否を制御すると便利です。またユーザーは、複数のグループに所属させることもできます。ここではリスト2の情報を基に、パートナーページにアクセス可能なグループadminsとpartnersを作成してみます。/usr/local/apache/conf/.htgroupファイルを新規作成し、それぞれのグループに次のようにユーザーを登録します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
複数のユーザーを登録する場合は、スペースで区切ります。ここでApacheを再起動すると、パートナー用ページを参照する際に認証が発生するようになります。この設定では、管理者(ユーザーadmin1、ユーザーadmin2)と、パートナー(ユーザーuser1)のみが、認証を通過後パートナー用ページを参照できます。
ユーザーuser2は、認証ユーザーとしてリスト2に登録されていますが、上述したグループファイルでアクセスを許可されているどのグループにも所属していません。そのため、正しいIDとパスワードを入力してもパートナー用ページを参照することはできません。認証ユーザーやグループ設定の追加・変更を行った際は、デーモンの再起動は必要ありません。
関連記事
- quotaコマンドでファイルシステムの容量制限を行う
- mdbコマンドでSCSIのTagged Command Queueing設定を確認
- tarアーカイブ内から、特定キーワードを含むファイルを指定してリストアする
- /etc/systemファイルの編集に失敗してマシンが起動しない場合の対処法
- Perlを用いた自動FTP転送
- iノード数の変更方法
- Solaris 8以前と9以降のログローテーション設定の違い
- HTTPSサーバを構築する
- SolarisからIPv6ルータのようにRAを配信する
- Solstice Backup 7.1によるディスクバックアップ
- シェルスクリプトによる特定ファイルのバックアップ
- 9個以上のディスクスライス作成
- bashが起動時に実行するファイル
- acctcomコマンドによる終了ステータスの確認
- 電源制御キーの役割と無効化
- 「load average」によるCPU負荷の確認
- FTP利用でのファイル/ディレクトリの属性変更
- UFS loggingによるエラーと復旧方法
- ALOMにおけるSC用ユーザーの確認とパスワード変更
- PostgreSQLのテーブルデータをファイルへコピーする方法
- sotrussやapptraceによる実行コマンドのトレース
- TCP遅延肯定応答タイマーのタイムアウト値の変更
- 複数のマシンで効率的にシャットダウンする方法
- WWW::MechanizeモジュールによるWebアクセスの自動化
- IPv6アドレスの自動生成による不具合解消法
- キャッシュファイルを利用したNFSマウント
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.