シークレット管理
Speakeasy で使用するシークレット(機密情報)の一覧と管理方法です。
シークレット管理の原則
Section titled “シークレット管理の原則”- コードにシークレットを含めない —
.dev.varsはバージョン管理対象外 - Wrangler Secrets を使用 — 本番/dev 環境のシークレットは Wrangler CLI で設定
- 最小権限 — 各サービスは必要なシークレットのみアクセス可能
- ローテーション対応 — 定期的なキーローテーションを実施
- Mule 一元管理 — 外部 API キーは Mule Egress Gateway に集約
シークレット一覧
Section titled “シークレット一覧”Proof(認証サービス)
Section titled “Proof(認証サービス)”| シークレット | 説明 | ローテーション |
|---|---|---|
BETTER_AUTH_SECRET | better-auth のセッション署名キー | 年次 |
GOOGLE_CLIENT_ID | Google OAuth クライアント ID | 必要時 |
GOOGLE_CLIENT_SECRET | Google OAuth クライアントシークレット | 必要時 |
Mule(Egress Gateway)
Section titled “Mule(Egress Gateway)”全外部 API キーを一元管理する Egress Gateway。他サービスは Service Binding(Native RPC)経由でアクセスする。
| シークレット | 説明 | ローテーション |
|---|---|---|
RESEND_API_KEY | Resend メール API キー | 必要時 |
LINE_MESSAGING_ACCESS_TOKEN | LINE Messaging API チャネルアクセストークン | 必要時 |
VAPID_PUBLIC_KEY | Web Push VAPID 公開鍵 | 年次 |
VAPID_PRIVATE_KEY | Web Push VAPID 秘密鍵 | 年次 |
PURELOVERS_API_KEY | purelovers API 認証キー | 必要時 |
PURELOVERS_BASIC_AUTH | purelovers レビュー環境 Basic Auth | dev のみ |
PURELOVERS_COOKIES | purelovers レビュー環境 Cookie | dev のみ |
LINE_CHANNEL_ID | LINE Login チャネル ID | 必要時 |
LINE_CHANNEL_SECRET | LINE Login チャネルシークレット | 必要時 |
Penthouse(管理画面)
Section titled “Penthouse(管理画面)”| シークレット | 説明 | ローテーション |
|---|---|---|
CLOUDFLARE_ACCOUNT_ID | Cloudflare アカウント ID | 不変 |
CLOUDFLARE_API_TOKEN | Cloudflare API トークン | 年次 |
その他のサービス
Section titled “その他のサービス”Bell, Fizz, Base, Vintage, Tap, Door は Service Bindings 経由で通信するため、直接シークレットを保持しない。
GitHub Actions
Section titled “GitHub Actions”| シークレット | 説明 | ローテーション |
|---|---|---|
CLOUDFLARE_API_TOKEN | Wrangler デプロイ用 API トークン | 年次 |
CLOUDFLARE_ACCOUNT_ID | Cloudflare アカウント ID | 不変 |
BETTER_AUTH_SECRET | Proof 用(デプロイ時に同期) | 年次 |
GOOGLE_CLIENT_ID | Proof 用(デプロイ時に同期) | 必要時 |
GOOGLE_CLIENT_SECRET | Proof 用(デプロイ時に同期) | 必要時 |
RESEND_API_KEY | Mule 用(デプロイ時に同期) | 必要時 |
LINE_MESSAGING_ACCESS_TOKEN | Mule 用(デプロイ時に同期) | 必要時 |
VAPID_PUBLIC_KEY | Mule 用(デプロイ時に同期) | 年次 |
VAPID_PRIVATE_KEY | Mule 用(デプロイ時に同期) | 年次 |
PURELOVERS_API_KEY | Mule 用(デプロイ時に同期) | 必要時 |
LINE_CHANNEL_ID | Mule 用(デプロイ時に同期) | 必要時 |
LINE_CHANNEL_SECRET | Mule 用(デプロイ時に同期) | 必要時 |
GEMINI_API_KEY | リリースノート生成用 | 必要時 |
シークレットの設定方法
Section titled “シークレットの設定方法”一括設定スクリプト(dev 環境)
Section titled “一括設定スクリプト(dev 環境)”# .env にシークレットを記述して実行bash scripts/sync_secrets.shWrangler CLI(本番/dev 環境)
Section titled “Wrangler CLI(本番/dev 環境)”# 本番環境にシークレットを設定cd services/proofecho "your-secret-value" | npx wrangler secret put BETTER_AUTH_SECRET
# dev 環境にシークレットを設定echo "your-secret-value" | npx wrangler secret put BETTER_AUTH_SECRET --env dev
# シークレット一覧の確認npx wrangler secret listnpx wrangler secret list --env dev
# シークレットの削除npx wrangler secret delete OLD_SECRETローカル開発(.dev.vars)
Section titled “ローカル開発(.dev.vars)”ローカル開発では .dev.vars ファイルにシークレットを記述:
# .dev.vars(各サービスディレクトリに配置)BETTER_AUTH_SECRET=local-dev-secretGOOGLE_CLIENT_ID=xxx.apps.googleusercontent.comGOOGLE_CLIENT_SECRET=xxxGitHub Actions
Section titled “GitHub Actions”GitHub リポジトリの Settings > Secrets and variables > Actions で設定:
- Repository secrets に追加
- ワークフローファイルで
${{ secrets.SECRET_NAME }}で参照
VAPID 鍵の生成
Section titled “VAPID 鍵の生成”Web Push の VAPID 鍵ペアを生成する場合:
npx web-push generate-vapid-keys出力された公開鍵と秘密鍵をそれぞれ VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY として設定します。
ローテーション手順
Section titled “ローテーション手順”1. BETTER_AUTH_SECRET のローテーション
Section titled “1. BETTER_AUTH_SECRET のローテーション”# 1. 新しいシークレットを生成openssl rand -hex 32
# 2. Proof サービスに設定cd services/proofecho "new-secret" | npx wrangler secret put BETTER_AUTH_SECRETecho "new-secret" | npx wrangler secret put BETTER_AUTH_SECRET --env dev
# 3. GitHub Actions secrets も更新# Settings > Secrets and variables > Actions > BETTER_AUTH_SECRET2. VAPID 鍵のローテーション
Section titled “2. VAPID 鍵のローテーション”# 1. 新しい鍵ペアを生成npx web-push generate-vapid-keys
# 2. Mule Egress Gateway に設定cd gateways/muleecho "new-public-key" | npx wrangler secret put VAPID_PUBLIC_KEYecho "new-private-key" | npx wrangler secret put VAPID_PRIVATE_KEY
# 3. GitHub Actions secrets も更新3. LINE チャネルアクセストークンのローテーション
Section titled “3. LINE チャネルアクセストークンのローテーション”# LINE Developers Console でトークンを再発行# Mule Egress Gateway に設定cd gateways/muleecho "new-token" | npx wrangler secret put LINE_MESSAGING_ACCESS_TOKENセキュリティベストプラクティス
Section titled “セキュリティベストプラクティス”| 項目 | 推奨事項 |
|---|---|
| シークレットの共有 | パスワードマネージャー(1Password 等)を使用 |
| アクセス権限 | Cloudflare API トークンは最小権限で発行 |
| 監査ログ | Cloudflare Dashboard の Audit Log を定期確認 |
| ローテーション | 年次でのキーローテーションを推奨 |
| 漏洩時 | 即座にローテーションし、影響範囲を確認 |
| CI/CD 同期 | GitHub Actions secrets を更新したら即座にデプロイで反映 |