シークレット
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 を使用して、コレクションのシークレットのサブセットのみを注入します。
シークレットが環境変数になる方法
コンポーネントのシークレットが解決される場合:- コレクションはスペース内のスラッグで検出されます
- 指定された環境にスコープされたシークレットが読み込まれます
- コレクション レベルのシークレット(環境なし)がデフォルトとして含まれます
- 環境固有のシークレットは同じ名前のコレクション レベルのシークレットをオーバーライドします
- 値内のシークレット参照が解決されます
- シークレット名が環境変数形式に変換されます:大文字化、英数字以外の文字がアンダースコアになります
Stripe Secret Key という名前のシークレットは STRIPE_SECRET_KEY になります。
各シークレットには、注入方法を決定する ボディ モード があります。
stringシークレット(API キー、トークン、URI)は平文スカラー文字列として注入されますjsonシークレット(構造化設定)は JSON 文字列として注入されますfieldsシークレット(ログイン認証情報、型付きフィールド バッグ)は JSON 文字列として注入されます
シークレットが注入される場合
| コンテキスト | 注入される? | 詳細 |
|---|---|---|
| デプロイ(プロセス コンポーネント) | はい | 本番環境でランタイム環境変数として追加されます |
| デプロイ(UI コンポーネント) | 部分的 | VITE_* プレフィックス付きシークレットのみがビルド時に渡されます |
CLI(kazzle run) | はい | コマンドの環境に注入されます |
CLI(secrets.export) | はい | KEY=value 行としてエクスポートされます |
| 開発プレビュー | まだ | プレビュー スターターはコンポーネント env をまだ解決しません。現在は kazzle run を使用してください |
テンプレート参照
シークレット値は、Kazzle が他の場所で使用するのと同じ構文で他のシークレット フィールドを参照できます。${secret.<uuid>.<field>}— 特定のフィールドまたは JSON パス。アプリ env/設定に使用します。${secret.<uuid>}— シークレット全体。ツールが明示的に生のシークレット全体を要求する場合のみ使用します。アプリ env/設定では使用しないでください。