テスト環境や限定公開ページのBASIC認証について、運用担当が安全な入口からパスワード更新できる構成を整理する。
1. 業務課題
BASIC認証は、テスト環境や限定公開ページで使われることがある。 長くランダムなパスワードを設定し、関係者に共有する運用自体は珍しくない。
しかし、BASIC認証は厳密なアクセス制御として過信すべきものではない。 HTTP Basic認証では、ユーザー名とパスワードの組がBase64でエンコードされて送信される。 Base64は暗号化ではなく可逆的な表現であるため、HTTPS/TLSと組み合わせることが前提になる。
そのため、BASIC認証を補助的な防御として使うのであれば、漏えいや共有範囲変更があったときに迅速に更新できることが重要である。
2. 構成の考え方
この構成では、運用担当者が更新する入口をSSM Parameter Storeに限定する。 運用担当者がパスワードを更新すると、EventBridgeが変更を検知し、CodeBuildがCloudFront KeyValueStoreへ認証値を反映する。
CloudFront Functionは、利用者アクセス時にKeyValueStoreから認証値を取得し、Authorizationヘッダーを検証する。 つまり、運用担当者はCloudFront FunctionやKeyValueStoreを直接操作しない。
色分け: 緑は運用担当者、黄は運用担当者が直接操作する入口またはリソース、青はインフラ担当が構成しシステムが利用するリソース、赤は認証失敗時の結果。
3. この構成で実現できること
- パスワード更新をTerraform applyから切り離す
- 運用担当者の操作入口をSSM Parameter Storeに限定する
- 変更検知からCloudFront KeyValueStore反映までを自動化する
- CloudFront Functionの再デプロイなしに認証値を変更する
- 認証処理をアプリケーションではなくエッジ側に分離する
インフラ担当は認証の仕組みと同期経路を作り、運用担当はパスワード更新という業務操作に集中できる。