Infrastructure

すでに動いている構成の上に
載せます

新しく設計するスタックではありません。同じパターンでサービスが既に出ており、障害から学んだルールが構成に反映されています。

Stack

すでに本番で動いている構成

新しく設計するスタックではありません。同じパターンで既にサービスが出ており、その上に載せます。

ECS Fargate + ALBバックエンドのランタイム。無停止デプロイとタスク単位のスケール。サーバーを直接管理しません。
Aurora / RDS PostgreSQL台帳の正本。コンテナは揮発性のため、ファイルDBは置きません。
S3 + CloudFront静的フロントとアセットの配信。社内ツールはエッジで認証を掛けます。
Cognito社員SSOと顧客アカウントプールを分離します。社内ツールは全経路ゲートです。
SESドメイン認証済みの送信。海外在住のお客様の主要チャネルです。
Secrets Manager認証情報をランタイムで注入します。コード・リポジトリ・環境ファイルには置きません。

Learned

運用から学んだこと

設計図にはなく、障害から出てきたルールです。

アプリのDB認証情報はローテーションしない専用アカウントを使うコンテナはシークレットを起動時に一度だけ固定注入します。自動ローテーションするシークレットをアプリの認証情報に使うと、デプロイ直後は正常でも数日後のローテーション時点で認証が壊れます。アプリ専用の非ローテーションアカウントを別に持ちます。
エラーは必ず残すDBや外部呼び出しの失敗をログに残さないと、画面には500だけが出てログは空になり、原因の特定が遅れます。
ステージングを先に通す同じ構成のステージングで検証してから本番へ昇格します。

Access

アクセスは2つの軸で分かれます

「誰が見るのか」がゲートを決めます。ひとつの軸で管理すると必ず漏れる場所ができます。

画面対象ゲート
運営ツール社員アカウントSSO・全経路ゲート・拠点スコープ
お客様向け画面外部のお客様公開+セキュリティのベースライン(WAF・レート制限・入力検証・ボット対策・通信/保存の暗号化)
仲介会社向けリンク仲介会社(ログイン不要)トークン10文字・有効期限30日・再発行で以前のURLは即座に無効
外部公開ビュー投資家・外部共有特定の拠点でのみ有効・マスキング・社内メニュー非表示・閲覧専用

外部公開は全拠点では点けられません。 特定の拠点を選んだ状態でのみ有効になり、全体に戻すと自動で解除されます。 公開中は拠点の変更がロックされます — スコープがスクロールの下に消えたまま共有すると、別の拠点が露出するためです。

仲介会社向けの公開ページはデータに載せません。 画面で隠すことと、そもそも送らないことは違います。 公開対象は「担当者チェック AND いま割当可能」な部屋だけです。