メインコンテンツまでスキップ

デプロイ運用手順

本番起動前に migration role でマイグレーションを適用し、audit_logs の owner が API role ではなく、API role に UPDATE/DELETE 権限がないことを検証する。検証に失敗した場合、API は起動しない。

適用範囲

リポジトリ内の Docker Compose ファイルは開発・デモ用のトポロジーであり、本番環境の堅牢化ガイドではない。本番デプロイには、管理されたシークレット、TLS 終端、バックアップ・リストア手順、ネットワークセグメンテーション、及び組織固有の規制対応管理が必要である。

本番環境で必須の管理策

  • MERLON_ENV=production を設定し、認証を有効化する。
  • 外部 TLS は信頼できるイングレスまたはリバースプロキシで終端し、配備全体のレート制限もそこで実施する。API のメモリ内リミッターはプロセス単位の補助防御としてのみ扱う。
  • Ingress で X-Forwarded-For を上書きまたは安全に追記し、その狭い送信元 CIDR のみを MERLON_TRUSTED_PROXY_CIDRS に指定する。これにより、監査記録とアプリ側リミッターが観測済みのクライアントアドレスを使用する。
  • データベースパスワード、ブートストラップトークン、JWT 材料、暗号鍵はシークレットマネージャに保存し、コミットしたり本番用の値を .env ファイルに配置したりしないこと。
  • ローカル開発環境以外では MERLON_SEED=false を維持する。
  • PostgreSQL と API の /metrics は、プライベートネットワークまたは認証済みの監視基盤に限定する。
  • MERLON_ENCRYPTION_KEY_RING をバックアップし、復旧手順がデータベースデータと必要な鍵材料の両方をリストアできることを検証する。

設定検証

ロールアウト前に、起動ログからネイティブエンジン設定ダイジェストを記録し、承認済みのルールファイルをリリース証跡とともに保管する。ADR-0012 を参照。

監査ログのデータベースロール

アプリケーションのデータベースロールは audit_logs に対する UPDATE 権限や DELETE 権限を持つべきではない。読み取り専用の監査アクセスは別ロールを通じて付与し、対象環境で権限付与を検証する。ロールテンプレートの例は本ディレクトリ内の audit-hardening.sql.example を参照。