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

シークレット

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

概念

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

シークレットの管理

アプリ内

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

AI を使用

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

CLI を使用

# シークレットを環境変数として注入してコマンドを実行
kazzle run --collection=stripe-keys --env=production -- bun run server.ts

# シークレットを KEY=value 行としてエクスポート
kazzle secrets.export --collection=stripe-keys --env=production

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

kazzle.config.ts でコンポーネントの env をシークレット コレクションと環境にポイントします。そのスコープ内のすべてのシークレットは、シークレット名と一致する名前のプロセス環境変数として注入されます。
import { defineConfig } from './kazzle.types';

export default defineConfig({
  components: [
    {
      name: 'API Server',
      type: 'process',
      path: './server',
      env: {
        collection: 'stripe-keys',
        environment: 'production'
      }
    }
  ]
});
env.collectionenv.environmentスラッグ であり、表示名ではありません。env.include を使用して、コレクションのシークレットのサブセットのみを注入します。
env: {
  collection: 'stripe-keys',
  environment: 'production',
  include: ['STRIPE_SECRET_KEY']
}

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

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

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

コンテキスト注入される?詳細
デプロイ(プロセス コンポーネント)はい本番環境でランタイム環境変数として追加されます
デプロイ(UI コンポーネント)部分的VITE_* プレフィックス付きシークレットのみがビルド時に渡されます
CLIkazzle runはいコマンドの環境に注入されます
CLIsecrets.exportはいKEY=value 行としてエクスポートされます
開発プレビューまだプレビュー スターターはコンポーネント env をまだ解決しません。現在は kazzle run を使用してください

テンプレート参照

シークレット値は、Kazzle が他の場所で使用するのと同じ構文で他のシークレット フィールドを参照できます。
postgresql://${secret.123e4567-e89b-12d3-a456-426614174000.username}:${secret.123e4567-e89b-12d3-a456-426614174000.password}@db.example.com:5432/mydb
サポートされている形式:
  • ${secret.<uuid>.<field>} — 特定のフィールドまたは JSON パス。アプリ env/設定に使用します。
  • ${secret.<uuid>} — シークレット全体。ツールが明示的に生のシークレット全体を要求する場合のみ使用します。アプリ env/設定では使用しないでください。
参照はシークレットが読み込まれた後に解決されます。循環参照または壊れた参照は、サイレント フォールバックの代わりに失敗します。