年三日坊主のKKです。
前回の記事でTwilog停止を嘆いていたら、トゥギャッターさんがロプロスさんからTwilogを買収してサービス継続に向け対応中とのプレスリリースが舞い込んできて小躍りしています。
ALBとCloudfrontを組み合わせるメリットはいろいろありますが、
表向きの一般の皆様からのアクセスはCloudfront経由で受け付け、
メンテナンスや動作確認などの際の関係者に限ったアクセスはALB経由に限る、
といった制御をするケースがあります。
その際、ALBにてCloudfront経由であることを簡易的に判別する方法をご紹介します。
手順はいたって簡単、ALB のルール設定で以下の条件のルールを追加するだけです。
- HTTP ヘッダー...: X-Forwarded-For
- = : *
アクションは固定応答を返すなり告知ページにリダイレクトするなりご自由に。
ALBで固定応答を設定する方法については同僚のYの記事も参考にして下さい。
なお、当然ですがHTTPヘッダーの偽装は極めて容易ですので、見せてはいけないコンテンツへの遷移条件に使うことは危険です。
あくまでCloudfrontの設定変更無しにALBの設定だけでCloudfront経由のアクセスを閉塞画面やメンテナンス案内に誘導する程度に留め、ALB側ではアクセス元や認証を組み合わせて本来参照権限のある人にだけ参照を許すように制御する必要があります。
CloudfrontのX-Forwarded-Forヘッダーに関するブログ記事の多くがX-Forwarded-Forの中のIPアドレスをいろいろ解析して高度な処理を実現するものばかリなので気付かなかったのですが、単純にX-Forwarded-Forヘッダーに値があるか無いかだけでも他の条件と組み合わせれば使いようはあるよ、という記事でした。
なお、表示される内容は利用状況やAWSの仕様変更ににより変化しますのでご注意ください。