Naar hoofdinhoud gaan

Geheimen

Kazzle heeft een ingebouwde versleutelde kluis voor het opslaan van API-sleutels, databaseinloggegevens, tokens en andere gevoelige waarden die uw app nodig heeft. Geheimen zijn versleuteld in rust met AES-256-GCM met KMS-verpakte gegevensversleutelingssleutels — onversleutelde waarden raken nooit de database.

Concepten

Collecties groeperen gerelateerde geheimen (bijv. stripe-keys, database-credentials). Elke collectie heeft een slug (kleine letters, met koppeltekens) die u in configuratiebestanden en CLI-opdrachten gebruikt. Omgevingen zijn optionele bereiken binnen een collectie (bijv. production, staging). Geheimen kunnen aan een specifieke omgeving worden gekoppeld of op collectieniveau als standaardwaarden blijven staan. Resolutievolgorde: bij het oplossen van geheimen voor een bepaalde collectie + omgeving overschrijven omgevingsspecifieke geheimen geheimen op collectieniveau met dezelfde naam. Dit stelt u in staat om de meeste geheimen in omgevingen te delen terwijl u specifieke waarden per omgeving overschrijft.

Geheimen beheren

In de app

Open Instellingen > Kluis om collecties, omgevingen en geheimen via de UI te maken.

Met de AI

De AI kan collecties maken, omgevingen maken, geheimen opslaan, deze tussen bereiken verplaatsen en ze voor u verwijderen. De AI ziet geheimennamen en metagegevens, maar niet de versleutelde waarden.

Met de CLI

# Voer een opdracht uit met geheimen geïnjecteerd als omgevingsvariabelen
kazzle run --collection=stripe-keys --env=production -- bun run server.ts

# Exporteer geheimen als KEY=value-regels
kazzle secrets.export --collection=stripe-keys --env=production

Geheimen uit uw app refereren

Wijs de env van een component naar een geheimencollectie en omgeving in kazzle.config.ts. Elk geheim in dat bereik wordt geïnjecteerd als een procesomgevingsvariabele waarvan de naam overeenkomt met de geheimennaam:
import { defineConfig } from './kazzle.types';

export default defineConfig({
  components: [
    {
      name: 'API Server',
      type: 'process',
      path: './server',
      env: {
        collection: 'stripe-keys',
        environment: 'production'
      }
    }
  ]
});
env.collection en env.environment zijn slugs, geen weergavenamen. Gebruik env.include om alleen een subset van de geheimen van de collectie in te voegen:
env: {
  collection: 'stripe-keys',
  environment: 'production',
  include: ['STRIPE_SECRET_KEY']
}

Hoe geheimen omgevingsvariabelen worden

Wanneer geheimen voor een component worden opgelost:
  1. De collectie wordt op slug in uw ruimte gevonden
  2. Geheimen die aan de opgegeven omgeving zijn gekoppeld, worden geladen
  3. Geheimen op collectieniveau (geen omgeving) worden als standaardwaarden opgenomen
  4. Omgevingsspecifieke geheimen overschrijven geheimen op collectieniveau met dezelfde naam
  5. Geheimverwijzingen in waarden worden opgelost
  6. Geheimennamen worden omgezet naar omgevingsvariabelindeling: hoofdletters, niet-alfanumerieke tekens worden onderstrepen
Een geheim met de naam Stripe Secret Key wordt STRIPE_SECRET_KEY. Elk geheim heeft een body-modus die bepaalt hoe het wordt geïnjecteerd:
  • string geheimen (API-sleutels, tokens, URI’s) worden geïnjecteerd als gewone scalaire tekenreeksen
  • json geheimen (gestructureerde configuratie) worden geïnjecteerd als JSON-tekenreeksen
  • fields geheimen (inloggegevens, getypeerde veldenverzamelingen) worden geïnjecteerd als JSON-tekenreeksen

Wanneer geheimen worden geïnjecteerd

ContextGeïnjecteerd?Details
Deploy (procescomponent)JaToegevoegd als runtimeomgevingsvariabelen in productie
Deploy (UI-component)GedeeltelijkAlleen geheimen met VITE_* voorvoegsel worden tijdens het bouwen doorgegeven
CLI (kazzle run)JaGeïnjecteerd in de omgeving van de opdracht
CLI (secrets.export)JaGeëxporteerd als KEY=value-regels
Dev-previewNog nietDe preview-starter lost component env nog niet op — gebruik kazzle run voor nu

Sjabloonverwijzingen

Geheimwaarden kunnen verwijzen naar andere geheimenvelden met dezelfde syntaxis die Kazzle elders gebruikt:
postgresql://${secret.123e4567-e89b-12d3-a456-426614174000.username}:${secret.123e4567-e89b-12d3-a456-426614174000.password}@db.example.com:5432/mydb
Ondersteunde indelingen:
  • ${secret.<uuid>.<field>} — specifiek veld of JSON-pad. Gebruik deze indeling voor app-omgeving/configuratie.
  • ${secret.<uuid>} — hele geheimlichaam. Gebruik alleen wanneer een tool expliciet om het volledige onbewerkte geheim vraagt; gebruik dit niet in app-omgeving/configuratie.
Verwijzingen worden opgelost nadat geheimen zijn geladen. Circulaire of verbroken verwijzingen mislukken in plaats van stilzwijgend terug te vallen.