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がないと動かないので念のためチェック。
.conf include /etc/nginx/conf.d/*.conf;
# cd /etc/nginx/conf.d # cp -p default.conf growthforecast.conf # > growthforecast.conf # vi growthforecast.conf
.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認証設定をしてみて
今のところ、特に不都合もないし、パスワードも割と強力なものを設定してみた。 が、平文で流れてると思うと気持ち悪いよね。 つうわけで、違う認証を試すか。