検索
連載

Basic認証を用いたアクセス制御UNIX処方箋

現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、Basic認証を用いたアクセス制御の方法について解説します。

Share
Tweet
LINE
Hatena

インターネット公開用の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 httpd.confに追記する設定内容

認証ユーザーファイルの作成

 リスト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版でご覧ください。 ***

実行例1 ユーザーの登録方法

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

リスト2 ユーザー登録ファイル(/usr/local/apache/conf/.htpasswd)内のIDおよびパスワード情報

グループファイルの作成

 ユーザーの登録数が多い場合、ユーザーをグループに登録し、グループごとにアクセスの可否を制御すると便利です。またユーザーは、複数のグループに所属させることもできます。ここではリスト2の情報を基に、パートナーページにアクセス可能なグループadminsとpartnersを作成してみます。/usr/local/apache/conf/.htgroupファイルを新規作成し、それぞれのグループに次のようにユーザーを登録します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 複数のユーザーを登録する場合は、スペースで区切ります。ここでApacheを再起動すると、パートナー用ページを参照する際に認証が発生するようになります。この設定では、管理者(ユーザーadmin1、ユーザーadmin2)と、パートナー(ユーザーuser1)のみが、認証を通過後パートナー用ページを参照できます。

 ユーザーuser2は、認証ユーザーとしてリスト2に登録されていますが、上述したグループファイルでアクセスを許可されているどのグループにも所属していません。そのため、正しいIDとパスワードを入力してもパートナー用ページを参照することはできません。認証ユーザーやグループ設定の追加・変更を行った際は、デーモンの再起動は必要ありません。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る