# シークレット Rotation 手順

各種トークン・API キーの更新手順。定期 rotation（年 1 回 or 漏洩時）。

## 1Password Service Account Token

`OP_SERVICE_ACCOUNT_TOKEN` は GitHub Actions・ローカル CLI 双方で使用。

### 更新手順

1. 1Password Web → Service Accounts → 対象 SA → 「Generate new token」
2. ローカル `~/.op/sa_token.txt` を新トークンで上書き
3. GitHub Secrets 更新
   - URL: `https://github.com/high-field/parky/settings/secrets/actions`
   - シークレット名: `OP_SERVICE_ACCOUNT_TOKEN`
   - 新トークン値を貼り付け
4. 動作確認: `OP_SERVICE_ACCOUNT_TOKEN=$(cat ~/.op/sa_token.txt) op vault list`

## Cloudflare API Token

Wrangler / Pages / GitHub Actions が使用。

### 更新手順

1. https://dash.cloudflare.com/profile/api-tokens → 該当 token → 「Roll」
2. 1Password に新 token を保存（レコード上書き、旧 token は履歴で保持）
3. GitHub Secrets (`CLOUDFLARE_API_TOKEN`) を新値で上書き
4. 動作確認: `wrangler whoami`

## Supabase service_role_key / anon_key

### 更新手順

1. Supabase Dashboard → Project Settings → API → 「Reset service_role key」
2. 1Password に新キーを保存
3. Cloudflare Workers secrets を更新:
   ```bash
   cd parky/api
   wrangler secret put SUPABASE_SERVICE_ROLE_KEY --env dev
   wrangler secret put SUPABASE_SERVICE_ROLE_KEY --env prod
   ```
4. 各 Pages プロジェクトの環境変数も更新（Dashboard）
5. GitHub Secrets 更新
6. deploy-api-\*.yml を手動再実行して反映

## Firebase Admin SDK Private Key

FCM 配信で使用（`api/` Workers）。

### 更新手順

1. Firebase Console → プロジェクト設定 → サービスアカウント → 「新しい秘密鍵の生成」
2. 1Password に保存
3. `wrangler secret put FIREBASE_ADMIN_PRIVATE_KEY --env <env>` で更新

## チェックリスト（rotation 共通）

- [ ] 1Password の対応レコードを更新
- [ ] GitHub Secrets を更新
- [ ] Cloudflare Workers / Pages secrets を更新
- [ ] 動作確認（認証が通るか、ヘルスチェック OK か）
- [ ] 旧 token を revoke（新 token で問題ないこと確認後）

TODO:
- [ ] 定期 rotation カレンダー化
- [ ] secrets 一覧の棚卸しドキュメント
