← 活動記録一覧

FACTUAL ACTIVITY RECORD · 実際の作業をもとにした活動記録

管理画面をAccess認証へ移し公開OfficeのCPUを抑える

Browserから秘密情報を遠ざけ、server側の認可と公開queryの軽量化を同時に整える

対象期間:

目的

管理画面の認証とデータ操作をbrowserへ委ねず、server側で検証する境界が必要だった。同時に、公開Officeは繰り返しqueryでCPU上限を超えていたため、応答を維持できる読込経路へ改める必要があった。

実装

管理用hostを公開hostと分け、Cloudflare AccessのJWTをserver側で検証する構成へ移した。Issuer、audience、有効期限、署名、必要に応じた開始時刻、許可されたidentityとhostをfail closedで検査し、browserからdatabaseを直接操作する経路を閉じた。管理操作はserver-onlyのcredentialと用途別RPCを通す。

Secretをruntime設定へ分離し、bundleへ混入していないことをscanする検査を加えた。公開Officeでは必要な列だけを取得し、子要素や最新messageを行ごとに読み直す処理をまとめ、同じ結果を少ないqueryで返すようにした。

一次差分の認証moduleから、署名、issuer、audience、必須claimを同時検証し、失敗時に未認証へ閉じる境界を確認した。

管理認証と公開Office取得を分離したcutoff時点の二経路

図を描画しています…

確認したこと

確認結果

Accessを通した管理画面で認証、管理操作、拒否経路を実環境で確認した。JWTの不正値や許可外identityはserver側で拒否される。

Migrationの適用と巻き戻し、権限境界、build、secret scanを確認した。

公開Officeは連続100回と並列20回の負荷確認ですべて成功し、以前のCPU超過による応答失敗が解消した。cutoff時点で両変更は対象環境へ反映済みだった。

完了とした根拠

管理操作がAccessとserver-only権限を通ること、secretが公開bundleへ出ないこと、公開Officeが負荷確認を完走することを確認して完了とした。