Skip to content

リリースセキュリティチェックリスト

本番リリース承認前に、コード検査だけでなくCloudflare、Firebase、Android署名、配布経路の設定を確認する。

API / Cloudflare

  • [ ] NODE_ENV=production を設定し、ALLOW_DEMO_ADMIN_FALLBACK を設定しない、または false にする。
  • [ ] REQUIRE_CSRF_ORIGIN_CHECK=true を設定する。
  • [ ] ALLOWED_ORIGINS は実際のGuardian/Staff/PWA・FacilityのOriginだけに限定し、localhost、demoドメイン、*を本番へ持ち込まない。
  • [ ] JWT_SECRETACCESS_TOKEN_SECRETREFRESH_TOKEN_SECRETENCRYPTION_KEYを十分な長さのSecretとして登録する。
  • [ ] PROVIDER_API_SECRETKIOSK_API_KEYKIOSK_QR_SECRET、LINE/FCM関連Secretを必要な環境だけへ登録する。
  • [ ] Provider Portal用に専用の管理組織を作成し、そのIDを PROVIDER_ADMIN_ORGANIZATION_ID に設定する。通常のtenant adminをProvider管理者として使わない。
  • [ ] Provider APIの機械間クライアントは X-Provider-TokenPROVIDER_API_SECRET を使用し、Secretをブラウザへ配布しない。
  • [ ] 本番D1、KV、R2のbinding IDを確認し、staging/demoのDBを参照していないことを確認する。
  • [ ] /health/v1/health が200で、databaseがokになることを確認する。
  • [ ] 未認証のauth/me、Facility dashboard、SSEが401となり、404や500にならないことを確認する。

クライアント / 署名

  • [ ] 各アプリの.env.productionVITE_DEMO_MODE=false、HTTPS API、更新署名公開鍵、Firebase実値を設定する。
  • [ ] 更新マニフェスト署名検証を有効化し、公開鍵とAPI側の鍵ID・ローテーション方針が一致することを確認する。
  • [ ] Android keystore、alias、パスワードをSecret管理から渡し、リポジトリやログへ保存しない。
  • [ ] APK/AABが期待するpackage ID、versionName、versionCode、非debuggable、署名を満たすことを確認する。
  • [ ] PWA ZIPに.env、source map、秘密鍵、開発用設定が含まれないことを確認する。

受入 / 運用

  • [ ] 実APIのGuardian、Staff、Facilityでログイン、権限分離、ログアウト、期限切れ更新を確認する。
  • [ ] Firebase通知、LINE連携、Cloudflare更新配信、外部ストレージを実環境のアカウントで確認する。
  • [ ] 児童氏名などのPIIがAPI応答、ログ、PWA ZIP、Facility/Kiosk APKの平文へ不要に出ないことを確認する。
  • [ ] release/release-manifest-<version>.json とSHA-256 sidecarを保管し、承認対象と一致させる。
  • [ ] ロールバック対象版、DBバックアップ、Secretローテーション、障害時の連絡先を記録する。

ローカルで実行できる検査

powershell
pwsh -ExecutionPolicy Bypass -File ./scripts/verify-local-stack.ps1
pwsh -ExecutionPolicy Bypass -File ./scripts/check-api-compatibility.ps1
pwsh -ExecutionPolicy Bypass -File ./scripts/run-dependency-check.ps1
pwsh -ExecutionPolicy Bypass -File ./scripts/verify-release-config.ps1 -App guardian -EnvFile app/Guardian/.env.production -RequireFirebase

ローカル検査の成功だけでは、本番外部サービス、実アカウント、署名鍵、Cloudflare設定の承認を代替しない。

放課後リンク 開発プロジェクト