はじめに
AWSのALB(Application Load Balancer)にOIDCによる認証を設定しました。
認証を追加することで、ALB(の後ろにいるWebアプリ)へのリクエストがあった際、不特定多数のリクエストをWebアプリ側に到達させることなく、ALB側で拒否することができます。 特定の人にしか使わせない想定のアプリの場合、IPで制限するなどの手段もありますが、IP以外の方法でフィルタすることができますので、より使いやすいです。 アクセス制限には以下のようないくつかのやり方があると思います。
- 接続元IPアドレスを制限する方法
- クライアント証明書による認証をする
- OIDCなどによるクライアント認証
今回は一番最後のアプローチを採用しました。ALBでは1か3のやり方ができますが、IPによる制限はリモートワーク環境では使いづらいためです。
また、OIDCのIdPとしてAuth0を使ったのですが、ALB側の設定項目がAuth0の場合は何を設定すれば良いのか少し分かりづらかったのでメモを残しておきます。
設定内容
ALBのリスナー設定画面
発行者
https://
+ Auth0のDomain
の値をつなげて、https://xxxxx.jp.auth0.com/
形式にする
最後に/
をつけるのを忘れないこと。私はこれをつけ忘れて一日ハマりました。。。
認証エンドポイント(認可エンドポイント)
https://<YOUR_AUTH0_DOMAIN>/authorize
トークンエンドポイント
https://<YOUR_AUTH0_DOMAIN>/oauth/token
ユーザー情報エンドポイント
https://<YOUR_AUTH0_DOMAIN>/userinfo
クライアントID
・Auth0でApplicationを作成すると生成されるClient ID
の値
クライアントのシークレット
・Auth0でApplicationを作成すると生成されるClient Secret
の値
これでOKです。
感想
いい感じです。
Webアプリのセキュリティを確保する上で、そもそもWebアプリまで到達できるユーザーは絞っておきたいです。
ログイン認証を強固にすることももちろん大切ですが、それだけではセルフマネージなサーバーに対してログイン試行はできてしまうので、アクセス負荷がかかります。
できるだけ、AWSマネージな仕組みでアクセスをフィルタリングできたほうが楽ですよね。