背景
#34 で .env.example の実 anon JWT を除去したが、Supabase は新しい API キー形式
(sb_publishable_* / sb_secret_*) を導入済みで、現行の anon / service_role
JWT は legacy 扱いになっている。新キー形式へ移行することで以下のメリットが得られる:
- 不透明(opaque)な短い文字列 + チェックサム形式で、JWT 署名鍵から独立してローテーション可能
- API キーのローテーションがユーザーセッション JWT を無効化しない(署名鍵は別レイヤ)
- 公式 Next.js quickstart も
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY を既に採用
参考ドキュメント
対応スコープ
1. 環境変数の rename
| 旧 |
新 |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY |
SUPABASE_SERVICE_ROLE_KEY |
SUPABASE_SECRET_KEY |
Secret key は NEXT_PUBLIC_ プレフィックスを付けずサーバー専用とする(ブラウザに露出させない)。
2. コード変更対象(環境変数参照のみ差し替え)
@supabase/ssr の createBrowserClient / createServerClient および
@supabase/supabase-js の createClient の API 自体は不変。第二引数に渡す
環境変数名を差し替えるだけで動作する。
3. OSS sync スクリプトの更新
4. README.md の説明文更新
移行手順
- Supabase ダッシュボード
Project Settings → API Keys で Publishable / Secret
キーを発行(または既存の値を取得)。
- 上記コード群を新環境変数名へ差し替え。
- 本番 / プレビュー環境(Vercel 等)の環境変数を新名へ更新。
.env.example を新名へ更新(OSS sync テンプレートも合わせて更新)。
- README.md の手順を更新。
- 動作確認: ローカル
bun dev でログイン、middleware、admin(Service Role 系)
の各経路を通す。
後方互換性
Supabase 側で新旧キーは同時受け付け(Kong gateway 経由)のため段階移行可能。
ただし本リポジトリではコード上のキー名一本化が望ましいため、フラグデー方式で
一括切り替えを推奨。
参照
優先度
Medium — 即時の漏洩リスクは #34 で除去済み。legacy key が正式に廃止される前に
マイグレーションを完了させる。
背景
#34 で
.env.exampleの実 anon JWT を除去したが、Supabase は新しい API キー形式(
sb_publishable_*/sb_secret_*) を導入済みで、現行のanon/service_roleJWT は legacy 扱いになっている。新キー形式へ移行することで以下のメリットが得られる:
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYを既に採用参考ドキュメント
対応スコープ
1. 環境変数の rename
NEXT_PUBLIC_SUPABASE_ANON_KEYNEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYSUPABASE_SERVICE_ROLE_KEYSUPABASE_SECRET_KEYSecret key は
NEXT_PUBLIC_プレフィックスを付けずサーバー専用とする(ブラウザに露出させない)。2. コード変更対象(環境変数参照のみ差し替え)
@supabase/ssrのcreateBrowserClient/createServerClientおよび@supabase/supabase-jsのcreateClientの API 自体は不変。第二引数に渡す環境変数名を差し替えるだけで動作する。
src/lib/supabase/config.tssrc/lib/supabase/client.tssrc/lib/supabase/server.tssrc/lib/supabase/middleware.tssrc/lib/supabase/db.tssrc/lib/supabase/admin.ts(SUPABASE_SERVICE_ROLE_KEY→SUPABASE_SECRET_KEY)src/types/env.d.ts.env.example3. OSS sync スクリプトの更新
scripts/oss-sync/prepare-oss-package.jsのprepareEnvExample()内(行 106-121 付近)にハードコードされている
.env.exampleテンプレートを新キー名へ更新。
4. README.md の説明文更新
「Supabase の Publishable Key」に更新。
Project Settings → API Keysまたは Connect ダイアログ)へのリンクを追記。
移行手順
Project Settings → API Keysで Publishable / Secretキーを発行(または既存の値を取得)。
.env.exampleを新名へ更新(OSS sync テンプレートも合わせて更新)。bun devでログイン、middleware、admin(Service Role 系)の各経路を通す。
後方互換性
Supabase 側で新旧キーは同時受け付け(Kong gateway 経由)のため段階移行可能。
ただし本リポジトリではコード上のキー名一本化が望ましいため、フラグデー方式で
一括切り替えを推奨。
参照
.env.exampleから実 JWT を除去)優先度
Medium — 即時の漏洩リスクは #34 で除去済み。legacy key が正式に廃止される前に
マイグレーションを完了させる。