LoginSignup
7

More than 5 years have passed since last update.

GrowthForecast+FluentdでWeb管理を素敵にしよう!② 〜Web認証について纏めて、とりあえずnginxでBasic認証〜

Posted at

GrowthForecast+FluentdでWeb管理を素敵にしよう!のゴール

  1. GrowthForecast導入とCloudWatch連携理解
  2. GrowthForecastの情報が生で見えるのは精神衛生上悪いので認証プロクシ化
  3. Fluentd導入とログ連携理解
  4. Apacheベースでnginx理解
  5. 各種OSリソース情報等の出力
  6. 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がないと動かないので念のためチェック。

nginx.conf
    include /etc/nginx/conf.d/*.conf;
# cd /etc/nginx/conf.d
# cp -p default.conf growthforecast.conf
# > growthforecast.conf
# vi growthforecast.conf
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認証設定をしてみて

今のところ、特に不都合もないし、パスワードも割と強力なものを設定してみた。
が、平文で流れてると思うと気持ち悪いよね。
つうわけで、違う認証を試すか。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7