Firebase Cloud Functions でのシークレット管理
概要
Firebase Cloud Functions のシークレット(API キー、Webhook URL など)は Google Cloud Secret Manager で一元管理する。
登録方法
# シークレットを登録
firebase functions:secrets:set SECRET_NAME
# ユーザー入力を促される(パスト可能)
# または CI/CD で:
firebase functions:secrets:set SECRET_NAME --data "secret-value"
関数での使用
// functions/src/index.ts
import * as functions from 'firebase-functions/v2';
export const sendMail = functions.https.onCall(
{
secrets: ['SLACK_WEBHOOK_URL', 'SENDGRID_API_KEY']
},
async (request, context) => {
const webhookUrl = process.env.SLACK_WEBHOOK_URL;
const apiKey = process.env.SENDGRID_API_KEY;
// 処理...
}
);
取得方法
デプロイ後、シークレット値を確認する場合:
firebase functions:secrets:access SECRET_NAME
ベストプラクティス
- secrets 配列に列挙する → 必要な値のみロード、セキュリティ向上
- Git リポジトリにはコミットしない → Secret Manager で一元管理
- 環境別に別々のシークレット → dev / prod で切り分け
注意
Astro + CF Functions へ移行する場合は wrangler secrets に移行する。