はじめに
サービスを開発していると、社内の人だけ見れるように公開したいということが多くあると思います。
その際に、接続元のIPをNetwork ACLやSecurity Groupで絞ってアクセスを制限するという方法があります。これは、社内ネットワークがしっかり構築されていてIPが統一されればいいですけど、そうでない場合各自のIPを許可していくのは面倒かなと思います。
そこでCookieでアクセスを絞れば各自ブラウザにセットするだけでいいので良いかなと思いました。それを実現するために行ったことを記載します。
ALBのリスナールールを利用する
アクセスの制限はALBのリスナールールで行います。
リスナールールについてはこちら
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/listener-update-rules.html
- host-header
- http-request-method
- path-pattern
- source-ip
- http-header
- query-string
の条件でアクセス先を振り分けることができます。
Cookieをもとにアクセス先を振り分ける
リスナールールでhttp-header
をもとにアクセス先を振り分けられうことがわかったので、ここでCookieを利用します。
ここからはALB構築されている前提で話します。
まず、ALBのリスナーというタブから「ルールの表示/編集」をクリックします。
すると、リスナールールを変更できると思うので以下のように設定します。
ルールID:1でHTTPヘッダーを選択してCookie=alb-listener-value=hoge
と設定します。Cookieの名前や値は各自に任せます。なるべく推測されないものの方がより安全でしょう。
そして、デフォルトのルールは固定レスポンスで503とか返すようにしておけばいいと思います。
設定はこれで終わりです。
これでCookieに何もセットしないとアクセスできないけど、alb-listener-value=hoge
をセットするとアクセスできるようになったと思います。