メインコンテンツへスキップ

シークレット

Kazzle には、API キー、データベース認証情報、トークン、およびアプリが必要とするその他の機密値を保存するための組み込み暗号化ボルトがあります。シークレットは AES-256-GCM で保存時に暗号化され、KMS でラップされたデータ暗号化キーを使用します。平文の値がデータベースに触れることはありません。

概念

コレクションは関連するシークレットをグループ化します(例:stripe-keys、database-credentials)。すべてのコレクションにはスラッグ(小文字、ハイフン区切り)があり、これを設定ファイルと CLI コマンドで参照します。 環境はコレクション内のオプションのスコープです(例:production、staging)。シークレットは特定の環境にスコープするか、コレクションレベルのデフォルトとして保持できます。 解決順序: 指定されたコレクション + 環境のシークレットを解決する場合、環境固有のシークレットは同じ名前のコレクションレベルのシークレットをオーバーライドします。これにより、ほとんどのシークレットを環境全体で共有しながら、環境ごとに特定の値をオーバーライドできます。

シークレットの管理

アプリ内

設定 > ボルトを開いて、UI を通じてコレクション、環境、シークレットを作成します。

AI を使用

AI はコレクションの作成、環境の作成、シークレットの保存、スコープ間での移動、削除をできます。 AI はシークレット名とメタデータを見ることができますが、暗号化された値は見ることができません。

CLI を使用

アプリからシークレットを参照

kazzle.config.ts でコンポーネントの env をシークレットコレクションと環境にポイントします。そのスコープ内のすべてのシークレットは、シークレット名と一致する名前のプロセス環境変数として注入されます:
env.collection と env.environment はスラッグであり、表示名ではありません。env.include を使用して、コレクションのシークレットのサブセットのみを注入します:

シークレットが環境変数になる方法

コンポーネントのシークレットが解決される場合:
  1. コレクションはスペース内のスラッグで検出されます
  2. 指定された環境にスコープされたシークレットが読み込まれます
  3. コレクションレベルのシークレット(環境なし)がデフォルトとして含まれます
  4. 環境固有のシークレットは同じ名前のコレクションレベルのシークレットをオーバーライドします
  5. 値内のシークレット参照が解決されます
  6. シークレット名が環境変数形式に変換されます:大文字化、英数字以外の文字はアンダースコアになります
Stripe Secret Key という名前のシークレットは STRIPE_SECRET_KEY になります。 各シークレットには、それがどのように注入されるかを決定するボディモードがあります:
  • string シークレット(API キー、トークン、URI)は平文のスカラー文字列として注入されます
  • json シークレット(構造化設定)は JSON 文字列として注入されます
  • fields シークレット(ログイン認証情報、型付きフィールドバッグ)は JSON 文字列として注入されます

シークレットが注入される場合

テンプレート参照

シークレット値は、Kazzle が他の場所で使用するのと同じ構文で他のシークレットフィールドを参照できます:
サポートされている形式:
  • ${secret.<uuid>.<field>} — シークレット値またはボルト参照が有効なツールパラメータ内の特定のフィールドまたは JSON パス。
  • ${secret.<uuid>} — シークレット全体。ツールが明示的に生のシークレット全体を要求する場合にのみ使用します。アプリの env/config では使用しないでください。
参照はシークレットが読み込まれた後に解決されます。循環参照または壊れた参照は、サイレントにフォールバックするのではなく失敗します。