GrowthForecast+FluentdでWeb管理を素敵にしよう!のゴール
- GrowthForecast導入とCloudWatch連携理解
- GrowthForecastの情報が生で見えるのは精神衛生上悪いので認証プロクシ化
- Fluentd導入とログ連携理解
- Apacheベースでnginx理解
- 各種OSリソース情報等の出力
- GrowthForecast+FluentdでWeb管理を素敵にしよう!
段階的にnginxやGrowthForecast、Fluentdを理解して、Zabbix無しでも軽くて素敵な運用が出来ることがゴール。
で、今回はWeb認証について理解し、簡単なBasic認証の設定をしてみる。
余裕があれば、他の認証も実装してみる予定。
検証用で「5」のOS各種リソースを取得するスクリプトを仕込んだのだが、さすがに見られると気持ち悪い情報が晒されることに躊躇して、BASIC認証でお茶を濁した。
本来はOpenIDとかOAuthをやってみたいなと思ってたけど。
なので、近々「5」の監視シェル群を公開するよ。
基本OneLinerだからいろいろと使えると思う。
Web認証って何?
所謂ユーザ認証のことをここではWeb認証と取り扱う。
- Basic認証やDigest認証
- OpenID、OAuth、SAML
について纏めてみよう。
他にもDBにアクセスして云々とかあるけどね。
それを取り扱うと際限がない。
が、そのうちWebサーバからDB認証する仕組みがあるので、それを整理しておこう。
Basic認証やDigest認証
-
Basic認証
Basic認証は広く知れ渡っている認証方法のひとつだと思う。
Apacheやnginxで設定し、ユーザ・パスワードを登録し認証する方式。
ほとんどのブラウザはBasic認証に対応しているが、ユーザ・パスワードを平文で送ってしまうのが難点。
だが、とりあえずサクッと出来てしまうので、初期段階でセキュアにしたい場合に持って来いだろう。
エンタープライズ向けのサービスの場合、Basic認証を使用することはほとんどない。
ローカルアクセスのみのサーバについては、Basic認証で問題ないが、情報漏洩が怖いので、使う場所が限られているのが現状。 -
Digest認証
Basic認証が平文でユーザ・パスワードを送ってしまう部分の改善バージョンがDigest認証だ。
MD5でエンコードして暗号化するため、Basic認証よりも安全である。
結局、伝送は平文なのでSSLトンネル化とかするのが望ましいよね。
OpenID、OAuth、SAML
なんとなく理解はしているけど、細かいところで違いって何?って感じだ。
拙い知識では、OpenIDは共通ID(鍵)、OAuthはソーシャルなSNSアカウントによる許認可、SAMLはLDAPやADと連携したSSO(Single Sign-On)認証ってとこか。
基本どれもSSOかと。
-
OpenID
様々なWebサイトで共通のID情報を利用できる認証方式
認証のIDとして、URL使用する。
OpenIDの仕様として、信頼関係(トラストサークル)を構築する必要がない。
SAMLに比べて信頼関係を構築する必要がないことからエンタープライズ向けではなく、グローバルなWebサービス向けな感じ。 -
OAuth
「あらかじめ信頼関係を構築したサービス間」で「ユーザの同意の元」「セキュアにユーザ権限の受け渡し」をするという『認可情報の委譲』がOAuth。
OpenIDとSAMLが入り口の鍵という感じのところ(認証)、OAuthは許可したリソースへのアクセスなど権限の受け渡し(認可)をすることが目的。 -
SAML
認証情報を表現するためのXML仕様。
一度の認証で様々なサイトが利用できる認証方式というところはOpenIDと違いない。
が、SAMLは信頼関係(トラストサークル)を構築する必要がある。
この信頼関係はLDAPとかADとか社内認証情報を利用するのが一般的。
なので、エンタープライズ向け。
ではさくっと、Basic認証を設定
参考にしたサイトはこちら
まずは、BASIC認証設定をnginxへ
/etc/nginx/conf.d下のdefault.confというひな形をコピーして、BASIC認証用のconfファイルを作成。
nginx.confに以下のincludeがないと動かないので念のためチェック。
include /etc/nginx/conf.d/*.conf;
# cd /etc/nginx/conf.d
# cp -p default.conf growthforecast.conf
# > growthforecast.conf
# vi growthforecast.conf
upstream growthforecast {
server 127.0.0.1:5125;
}
server {
listen 80;
server_name growthforecast.hoge.com;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
auth_basic "Secret Area";
auth_basic_user_file "/home/growthforecast/.htpasswd";
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://growthforecast;
proxy_redirect off;
}
}
次にBASIC認証用のユーザとパスワードを設定
で、BASIC認証のユーザとパスワードを設定。
$ htpasswd -c /home/growthforecast/.htpasswd hogeuser
New password:
Re-type new password:
Adding password for user hogeuser
更にBASIC認証用のサブドメインをDNSに設定
登録しているところで、growthforecast
のサブドメインを設定した。
BASIC認証設定をしてみて
今のところ、特に不都合もないし、パスワードも割と強力なものを設定してみた。
が、平文で流れてると思うと気持ち悪いよね。
つうわけで、違う認証を試すか。