CGIの認証と許可


NOTE

これまでのインストラクションを通じて、あなたは ApacheWebサーバを起動していると思います。 ここではApacheウェブサーバを起動しているという前提になっています。他のWebサーバを起動しているのであれば、少し調整しなければならないでしょう。

定義

ここでの説明では以下の用語を使用しますので、その意味を理解しておいてください・・。

Index

Webサーバ認証の設定
認証ユーザのセットアップ
CGIの認証/承認機能を可能にする
CGI情報に対するデフォルトパーミッション/Default permissions to CGI information
CGI情報に対する追加パーミッションの許可
セキュアWebサーバ上の認証

Webサーバ認証の設定

Webサーバ認証の設定のための初めのステップは、まずWebサーバの設定ファイルの'AllowOverride AuthConfig'がNagios CGI-BINディレクトリに対して有効であるか確認することです。もし有効になっていない場合は、のWebサーバ設定ファイルを下記のような設定を付け加えなければならないでしょう。また、この設定変更が有効になるようにWebサーバを再起動させなければならないことに注意して下さい。

<Directory /usr/local/nagios/sbin>
AllowOverride AuthConfig
order allow,deny
allow from all
Options ExecCGI
</Directory>

もしあなたがNagiosのページへのアクセスに対して認証を必要とするようにしたいのであれば、Webサーバの設定ファイルに対して以下のように付け加えて下さい。

<Directory /usr/local/nagios/share>
AllowOverride AuthConfig
order allow,deny
allow from all
</Directory>

第2のステップは、.htaccessと呼ばれるファイルをNagiosに対してルートCGIディレクトリ(オプションでHTMLディレクトリ)に作成してやることです(普通 /usr/local/nagios/sbin ディレクトリと /usr/local/nagios/share ディレクトリそれぞれに必要です)。 ファイルは以下のようなものが必要になるはずです。

AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user

認証ユーザの設定

CGIにアクセスに対する認証を必要とするWebサーバを設定ができたと思います。次に、そのCGIにアクセス可能なユーザを設定する必要があります。これは、Apacheで提供されるコマンド htpasswd を使用することで設定可能です。

次のコマンドを利用することで、htpasswd.usersと呼ばれる新しいファイルを/usr/local/nagios/etcディレクトリに作成します。また、このコマンドは、 nagiosadminに対するユーザ名/パスワードのエントリも作成します。nagiosadmin がWebサーバに対して認証許可を与える際に使用されるパスワードを与えるよう求められるでしょう。

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

CGIにアクセスするのを許可する全員に対してアカウントを発行するまで、さらにユーザを追加し続けて下さい。 次のコマンドを使って、追加したい実際のユーザ名の変わりに<username>を利用してユーザを追加してください。 初期ファイルを既に作成しているのであれば、-cオプションは使用しないことに注意して下さい。

htpasswd /usr/local/nagios/etc/htpasswd.users <username>

さあ、ここまででやるべきことの最初の部分が終わりました。 NagiosCGIに対してWebブラウザを開いてみれば、ユーザ名とパスワードを聞かれるはずです。 もしこの時点でユーザ認証に問題が見つかったら、Webサーバのドキュメントを読んでみてください。

CGIの認証/許可機能を可能にする

次に行うことはどの様な情報、そして/またはコマンドをユーザにアクセス許可するか決定してCGIの認証および許可機能を設定することです。 これは、CGI設定ファイル内のuse_authentication値を"0"でない値に設定してください。 例えば:

use_authentication=1

さあ、これでCGIにおけるBASIC認証/許可機能のセットアップが終了です。

CGI情報のデフォルトパーミッション

認証・許可機能が有効な時、デフォルトでCGIは、どんなデフォルトパーミッションをユーザに与えているか?

CGIデータ 認証コンタクトAuthenticated Contacts* 他の認証ユーザOther Authenticated Users*
ホストステータス情報 はい いいえ
ホスト設定情報 はい いいえ
ホスト履歴 はい いいえ
ホスト通知 はい いいえ
ホストコマンド はい いいえ
サービスステータス情報 はい いいえ
サービス設定情報 はい いいえ
サービス履歴 はい いいえ
サービス通知 はい いいえ
サービスコマンドs はい いいえ
すべての設定情報 いいえ いいえ
システム/プロセス情報 いいえ いいえ
システム/プロセスコマンド いいえ いいえ

FIXME!FIXME!認証コンタクト*はコンタクトであるそれぞれのサービスに対して、 are granted the following permissions for each service for which they are contacts (but not for services for which they are not contacts)...

認証通知先*は通知先として設定されているそれぞれのサービスに対して次の権限を持っています(しかし、通知先として設定されていないサービスにはその権限はありません)・・・。

 デフォルトで誰も以下の事項に対して、権限を与えられていないことに注意することが重要です。

次の情報にアクセスしたいと思うでしょうが、自分のために(また恐らく他のユーザの為)に追加の権利を割り当てなければならないでしょう。

CGI情報に対する追加許可の提供

CGI 設定ファイルの中の様々な認証変数に追加することで、認証通知先認証ユーザにCGIの追加情報に対しての権限を与えることができます。私は、利用可能なオプションが特別な権限については実際には特効薬にならないということが分かっていますが、ないよりましです・・・。

追加認証は、CGI設定ファイル中の次のディレクティブに加えることにより、ユーザに与えることができます。

CGI認証の権限

もしあなたが、CGI上の様々な情報へのアクセスに必要とされる認証機能について困ったら、ここに記述される各CGIに対する認証に必要な権限 セクションの内容を読んでください。

セキュアWebサーバ上の認証

もしあなたのWebサーバがセキュアなドメイン(例えばファイヤーウォールなど)の配下にあるなら、またはSSL通信を使用しているのであれば、にCGIアクセスするために使用されるデフォルトユーザ名を定義する必要があります。 これはCGI設定ファイルに、 デフォルトユーザ名(default_user_name)オプションを定義することで出来ます。CGIにアクセスすることのできるデフォルトのユーザ名を定義することで、(デフォルトユーザは)必ずしもユーザ認証を必要せず、WebサーバにCGIアクセスすることできるようになります。 ベーシック認証がインターネット上でクリアテキストでパスワードを送信するため、ベーシックWeb認証を避ける為に、この機能を使いたいと思うかも知れません。

重要: もしセキュアWebサーバを起動しておらず、CGIにアクセスするすべての人がある方法で認証されると確信しない限りは、デフォルト・ユーザー名を定義しないでください!!もしこの変数を定義すれば、このWebサーバに対する認証されていないユーザが、誰でもこのユーザに対して与えられている全権利をうることでしょう。