(1/2)ベーシック認証に続き、今回はデータベースを利用した認証方法について解説する。データベースを利用することにより、メンテナンス性やセキュリティの向上が期待できる。});第9回、第10回と紹介してきたWebページの閲覧制限方法も今回が最後となる。最後に紹介する方法は、データベースを使った認証である。データベースを使うといっても、見た目には前回紹介したベーシック認証と変わりはない。データベース認証のメリットデータベース認証とベーシック認証の違いは、コンテンツの閲覧を許可するユーザーの管理をパスワードファイルで行うかデータベースで行うか、という点にある。ユーザーの管理をデータベースで行う利点としては、次の2つが挙げられる。メンテナンス性の高さデータベースに格納されたデータは、SQLを使って簡単にメンテナンスできる。htpasswdコマンドでユーザーを管理するのは、追加するのも更新するのも面倒だ。数人ならともかく、何百人ものユーザーをコマンドとファイル操作で管理し、さらにグループまで作成するとなると、正確にメンテナンスするのは不可能に近い。データベースであればPHPやJava、Perlなどを使ったアプリケーションも作りやすい。ユーザーのデータを管理するテーブルを操作するアプリケーションを作ってしまえば、Webブラウザなどで簡単にメンテナンスできるようになるだろう。セキュリティにさえ注意すれば、ユーザー側でパスワードを変更するアプリケーションも容易に作成できるから、管理者はパスワード変更の手間からも解放される。社員データベースや顧客データベースなど、ほかのデータベースからデータを移行しやすいこともメリットとなる。場合、企業はすでにそうしたデータを持っている。社内イントラネットなら社員データベースのデータが使えるし、特定顧客向けのWebサイトなら顧客データベースのデータが使えるだろう。したデータはSQLを使って移し替えてもいいし、CSV形式のファイルなどを通して取り込んでもいい。定期的に同期も取れるようになれば、メンテナンスの手間は大幅に軽減されるはずだ。やりようによってはそのまま使ってしまうことだってできてしまう。強固なセキュリティの確保htpasswdによって作成されるパスワードファイルは、前回も説明したとおり単なるテキストファイルである。パスワードの部分こそ暗号化されているが、ユーザー名やグループについてはそのままの形で記録されている。これが何かの間違いで外部に漏れれば、ユーザーの数やユーザー名、所属グループは簡単に把握されてしまう。相手が高度な技術者であれば、暗号化されたパスワードを復号してしまう可能性もある。データベースのファイルは、それだけを入手しても簡単に中身を見ることはできない。暗号化されたパスワードを破る技術があれば、データベースの中身を見ることもできてしまうかもしれないが......。危険性を完全に排除することはできないが、単純なテキストファイルを置いておくよりは安全であろう。適切に権限を設定していれば、データベースのファイルを読み取られること自体、そう簡単なことではない。インストールや設定はパスワードファイルを使う場合より多少ややこしいものの、メリットの大きさを考えればデータベース認証を積極的に採用するべきだろう。データベース認証に利用できるデータベースそれでは、データベース認証に利用できるデータベースを紹介しよう。データベースなら何でもよいのか、というとそういうわけにはいかないからである。データベース認証を行うには、そのデータベースに対応したApacheのモジュールが必要になるのだ。モジュールは「mod_auth_xxxx」といった名前が付けられていて、xxxxの部分がデータベースによって異なる。Apacheのパッケージには「mod_auth_db」というモジュールが含まれている。DB」と連携してデータベース認証を行うモジュールである。DBは日本ではなじみが薄いが、Apacheにはこれしか付いてこない。いえ、PostgreSQL用:mod_auth_pgsqlMySQL用:mod_auth_mysqlOracle用:mod_auth_oracle(mod_auth_ora7、mod_auth_ora8)といったモジュールも存在している。Apacheのパッケージには含まれていないというだけである。後は、そのモジュールが信頼に足るものなのかどうか、本当に採用して大丈夫なのか、というところだろう。この点について、筆者が簡単に太鼓判を押すわけにもいかないのだが、次のような理由から心配は無用と考える。HatやTurbolinuxなど、著名なLinuxディストリビューションにはこれらのモジュールが含まれている。それだけ利用頻度が高く、信頼できるからだろう。検索サイトで検索してみると分かると思うが、日本だけでも多くの採用実績があり、その情報が公開されている。それは、何にも代え難い実績として、特に日本では重視されるところだろう。Apacheモジュールサイトでの公開http://modules.apache.org/では、Apacheのパッケージに含まれない拡張モジュールが数多く紹介されている。このサイトの検索機能(http://modules.apache.org/search/)を使って、キーワードに「mod_auth」と入力してみれば、いかに多くのモジュールが公開されているか理解できるだろう。実際にインストールして稼働確認ができている当たり前のことだが、筆者は実際にこれらのモジュールを導入して確認している。大した信頼にはならないかもしれないが、これも1つのポイントとさせていただいた。本稿では、PostgreSQL用のモジュールを例に解説する。いえ、ほかのモジュールも同じくデータベース認証を行うのだから、基本に違いはない。ユーザーデータを登録し、グループデータと関連付け、それをApacheの認証設定に伝える。若干の違いは存在するが、作業の流れや仕組みが分かってしまえば、それほど重大な問題にはならないだろう。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。