シークレット管理
安全な資格情報ストレージ
アプリケーションが外部サービスに接続する必要がある場合 — SendGridを通じてメールを送信したり、Stripeで支払いを処理したり、AI機能にOpenAIを使用したりする場合 — APIキーと資格情報を安全に保存する必要があります。Klivのシークレット管理システムはこれを自動的に処理します。
シークレットを安全にするもの:
- データベースでの暗号化ストレージ
- 保存後に完全に表示されない
- 必要に応じてエッジ関数に自動的に注入される
- アカウント全体で各キーを一度だけ保存
- シークレットが作成または更新されたときを追跡する監査証跡
シークレットの仕組み
外部サービスと統合したいとAIに伝えると、必要な資格情報を求められます。APIキーを提供すると、AIは説明的な名前(OPENAI_API_KEYやSTRIPE_SECRET_KEYなど)で安全に保存します。その後、その資格情報が必要なエッジ関数は自動的にアクセスできます。
マスクされた表示:シークレットを保存すると、管理UIには部分的にマスクされたバージョンのみが表示されます。たとえば、sk-proj-abc123xyz789はsk-p****9789として表示されます。これにより、完全な値を公開せずにどのキーがどれかを確認できます。
自動注入:エッジ関数が実行されると、すべてのシークレットが環境変数として自動的に利用可能になります。AIは関数コードに適切なシークレットを含め、プラットフォームは実行時に実際の値を注入します。
シークレットの管理
管理インターフェースを通じて、次のことができます:
- すべてのシークレットを表示(マスクされた値で)
- 新しいシークレットを追加または既存のものを更新
- 不要になったシークレットを削除
- 各シークレットがいつ作成または最終更新されたかを確認
構築したい統合を説明すると、AIもシークレットを作成および更新できます。
シークレットの一般的な用途
- メールサービス:SendGrid、Mailgun、またはSMTP資格情報
- 支払い処理:Stripe、PayPal、またはその他の支払いAPIキー
- AIサービス:OpenAI、Anthropic、またはGoogle APIキー
- SMS/通話:Twilio認証トークン
- 外部API:アプリが統合する任意のサードパーティサービス
- Webhook:受信Webhookを検証するための署名シークレット
- データベース接続:外部データベースの接続文字列
ベストプラクティス
✅ 説明的な名前を使用 - key1やsecretではなく、SENDGRID_API_KEYのように明確にシークレットに名前を付けます。
✅ 定期的にローテーション - 特に重要なサービスの場合、定期的にシークレットを更新します。
✅ 完了したら削除 - 使用しなくなったサービスのシークレットを削除します。
❌ シークレットを共有しない - 各環境(テスト、本番)は異なるAPIキーを使用する必要があります。
❌ コードにコミットしない - シークレットは理由があってコードとは別に保存されます。APIキーをソースファイルに直接入れないでください。
関連ドキュメント: