Langsung ke konten utama

Rahasia

Kazzle memiliki vault terenkripsi bawaan untuk menyimpan kunci API, kredensial database, token, dan nilai sensitif lainnya yang dibutuhkan aplikasi Anda. Rahasia dienkripsi saat istirahat dengan AES-256-GCM menggunakan kunci enkripsi data yang dibungkus KMS — nilai plaintext tidak pernah menyentuh database.

Konsep

Koleksi mengelompokkan rahasia terkait bersama (misalnya stripe-keys, database-credentials). Setiap koleksi memiliki slug (huruf kecil, dengan tanda hubung) yang Anda referensikan dalam file konfigurasi dan perintah CLI. Lingkungan adalah cakupan opsional dalam koleksi (misalnya production, staging). Rahasia dapat dibatasi ke lingkungan tertentu atau dibiarkan di tingkat koleksi sebagai default. Urutan resolusi: saat menyelesaikan rahasia untuk koleksi + lingkungan tertentu, rahasia khusus lingkungan menimpa rahasia tingkat koleksi dengan nama yang sama. Ini memungkinkan Anda berbagi sebagian besar rahasia di seluruh lingkungan sambil menimpa nilai tertentu per lingkungan.

Mengelola rahasia

Di aplikasi

Buka Settings > Vault untuk membuat koleksi, lingkungan, dan rahasia melalui UI.

Dengan AI

AI dapat membuat koleksi, membuat lingkungan, menyimpan rahasia, memindahkannya antar cakupan, dan menghapusnya untuk Anda. AI melihat nama dan metadata rahasia tetapi bukan nilai terenkripsi.

Dengan CLI

# Jalankan perintah dengan rahasia disuntikkan sebagai variabel env
kazzle run --collection=stripe-keys --env=production -- bun run server.ts

# Ekspor rahasia sebagai baris KEY=value
kazzle secrets.export --collection=stripe-keys --env=production

Mereferensikan rahasia dari aplikasi Anda

Arahkan env komponen ke koleksi rahasia dan lingkungan di kazzle.config.ts. Setiap rahasia dalam cakupan itu disuntikkan sebagai variabel env proses yang namanya cocok dengan nama rahasia:
import { defineConfig } from './kazzle.types';

export default defineConfig({
  components: [
    {
      name: 'API Server',
      type: 'process',
      path: './server',
      env: {
        collection: 'stripe-keys',
        environment: 'production'
      }
    }
  ]
});
env.collection dan env.environment adalah slug, bukan nama tampilan. Gunakan env.include untuk menyuntikkan hanya sebagian dari rahasia koleksi:
env: {
  collection: 'stripe-keys',
  environment: 'production',
  include: ['STRIPE_SECRET_KEY']
}

Bagaimana rahasia menjadi variabel env

Saat rahasia diselesaikan untuk komponen:
  1. Koleksi ditemukan berdasarkan slug dalam space Anda
  2. Rahasia yang dibatasi ke lingkungan yang ditentukan dimuat
  3. Rahasia tingkat koleksi (tanpa lingkungan) disertakan sebagai default
  4. Rahasia khusus lingkungan menimpa yang tingkat koleksi dengan nama yang sama
  5. Referensi rahasia di dalam nilai diselesaikan
  6. Nama rahasia dikonversi ke format variabel env: huruf besar, karakter non-alfanumerik menjadi garis bawah
Rahasia bernama Stripe Secret Key menjadi STRIPE_SECRET_KEY. Setiap rahasia memiliki mode body yang menentukan cara penyuntikannya:
  • Rahasia string (kunci API, token, URI) disuntikkan sebagai string skalar biasa
  • Rahasia json (konfigurasi terstruktur) disuntikkan sebagai string JSON
  • Rahasia fields (kredensial login, tas bidang yang diketik) disuntikkan sebagai string JSON

Saat rahasia disuntikkan

KonteksDisuntikkan?Detail
Deploy (komponen proses)YaDitambahkan sebagai variabel lingkungan runtime dalam produksi
Deploy (komponen UI)SebagianHanya rahasia dengan awalan VITE_* yang dilewatkan saat build
CLI (kazzle run)YaDisuntikkan ke lingkungan perintah
CLI (secrets.export)YaDiekspor sebagai baris KEY=value
Pratinjau devBelumStarter pratinjau belum menyelesaikan env komponen — gunakan kazzle run untuk saat ini

Referensi template

Nilai rahasia dapat mereferensikan bidang rahasia lain dengan sintaks yang sama yang digunakan Kazzle di tempat lain:
postgresql://${secret.123e4567-e89b-12d3-a456-426614174000.username}:${secret.123e4567-e89b-12d3-a456-426614174000.password}@db.example.com:5432/mydb
Format yang didukung:
  • ${secret.<uuid>.<field>} — bidang tertentu atau jalur JSON. Gunakan format ini untuk env/config aplikasi.
  • ${secret.<uuid>} — seluruh badan rahasia. Gunakan hanya saat alat secara eksplisit meminta seluruh rahasia mentah; jangan gunakan ini dalam env/config aplikasi.
Referensi diselesaikan setelah rahasia dimuat. Referensi melingkar atau rusak gagal daripada diam-diam kembali.