Skip to main content

シークレット

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

概念

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

シークレットの管理

アプリ内

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

AI を使用

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

CLI を使用

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

kazzle.config.ts でコンポーネントの env をシークレット コレクションと環境にポイントします。そのスコープ内のすべてのシークレットは、シークレット名と一致する名前のプロセス環境変数として注入されます。
env.collectionenv.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 では使用しないでください。
参照はシークレットが読み込まれた後に解決されます。循環参照または壊れた参照は、サイレント フォールバックの代わりに失敗します。