Ana içeriğe atla

Sırlar

Kazzle, API anahtarlarını, veritabanı kimlik bilgilerini, tokenları ve uygulamanızın ihtiyaç duyduğu diğer hassas değerleri depolamak için yerleşik bir şifreli kasaya sahiptir. Sırlar, KMS tarafından sarılmış veri şifreleme anahtarları kullanılarak AES-256-GCM ile beklemede şifrelenir — düz metin değerler hiçbir zaman veritabanına ulaşmaz.

Kavramlar

Koleksiyonlar ilgili sırları bir araya getirir (örn. stripe-keys, database-credentials). Her koleksiyonun, yapılandırma dosyalarında ve CLI komutlarında başvurduğunuz bir slug (küçük harf, tire ile ayrılmış) vardır. Ortamlar bir koleksiyon içindeki isteğe bağlı kapsamlardır (örn. production, staging). Sırlar belirli bir ortama kapsamlandırılabilir veya koleksiyon düzeyinde varsayılan olarak bırakılabilir. Çözümleme sırası: belirli bir koleksiyon + ortam için sırları çözerken, ortama özgü sırlar aynı ada sahip koleksiyon düzeyindeki sırları geçersiz kılar. Bu, çoğu sırrı ortamlar arasında paylaşmanıza ve ortam başına belirli değerleri geçersiz kılmanıza olanak tanır.

Sırları yönetme

Uygulamada

Koleksiyonlar, ortamlar ve sırları UI aracılığıyla oluşturmak için Ayarlar > Kasa’yı açın.

AI ile

AI, koleksiyonlar oluşturabilir, ortamlar oluşturabilir, sırları depolayabilir, bunları kapsamlar arasında taşıyabilir ve sizin için silebilir. AI, sır adlarını ve meta verileri görür ancak şifreli değerleri görmez.

CLI ile

# Sırlar ortam değişkenleri olarak enjekte edilerek bir komut çalıştırın
kazzle run --collection=stripe-keys --env=production -- bun run server.ts

# Sırları KEY=value satırları olarak dışa aktarın
kazzle secrets.export --collection=stripe-keys --env=production

Uygulamanızdan sırlara başvurma

Bir bileşenin env öğesini kazzle.config.ts içinde bir sır koleksiyonuna ve ortamına yönlendirin. Bu kapsamdaki her sır, sır adıyla eşleşen bir işlem ortam değişkeni olarak enjekte edilir:
import { defineConfig } from './kazzle.types';

export default defineConfig({
  components: [
    {
      name: 'API Server',
      type: 'process',
      path: './server',
      env: {
        collection: 'stripe-keys',
        environment: 'production'
      }
    }
  ]
});
env.collection ve env.environment slug’lardır, görünen adlar değildir. Koleksiyonun sırlarının yalnızca bir alt kümesini enjekte etmek için env.include kullanın:
env: {
  collection: 'stripe-keys',
  environment: 'production',
  include: ['STRIPE_SECRET_KEY']
}

Sırlar ortam değişkenleri nasıl olur

Sırlar bir bileşen için çözümlendiğinde:
  1. Koleksiyon, alanınız içinde slug tarafından bulunur
  2. Belirtilen ortama kapsamlandırılan sırlar yüklenir
  3. Koleksiyon düzeyindeki sırlar (ortam yok) varsayılan olarak dahil edilir
  4. Ortama özgü sırlar aynı ada sahip koleksiyon düzeyindeki sırları geçersiz kılar
  5. Değerler içindeki sır başvuruları çözümlenir
  6. Sır adları ortam değişkeni biçimine dönüştürülür: büyük harfli, alfasayısal olmayan karakterler alt çizgi olur
Stripe Secret Key adlı bir sır STRIPE_SECRET_KEY olur. Her sırnın, nasıl enjekte edileceğini belirleyen bir gövde modu vardır:
  • string sırları (API anahtarları, tokenlar, URI’ler) düz skaler dizeler olarak enjekte edilir
  • json sırları (yapılandırılmış yapılandırma) JSON dizeler olarak enjekte edilir
  • fields sırları (giriş kimlik bilgileri, yazılı alan çantaları) JSON dizeler olarak enjekte edilir

Sırlar ne zaman enjekte edilir

BağlamEnjekte edildi mi?Ayrıntılar
Dağıt (işlem bileşeni)EvetÜretimde çalışma zamanı ortam değişkenleri olarak eklenir
Dağıt (UI bileşeni)KısmiYalnızca VITE_* ön ekli sırlar derleme zamanında iletilir
CLI (kazzle run)EvetKomutun ortamına enjekte edilir
CLI (secrets.export)EvetKEY=value satırları olarak dışa aktarılır
Dev önizlemesiHenüz değilÖnizleme başlatıcısı henüz bileşen env öğesini çözmez — şimdilik kazzle run kullanın

Şablon başvuruları

Sır değerleri, Kazzle’nin başka yerlerde kullandığı aynı söz dizimini kullanarak diğer sır alanlarına başvurabilir:
postgresql://${secret.123e4567-e89b-12d3-a456-426614174000.username}:${secret.123e4567-e89b-12d3-a456-426614174000.password}@db.example.com:5432/mydb
Desteklenen biçimler:
  • ${secret.<uuid>.<field>} — belirli alan veya JSON yolu. Uygulama ortamı/yapılandırması için bu biçimi kullanın.
  • ${secret.<uuid>} — tüm sır gövdesi. Yalnızca bir araç açıkça tüm ham sırrı istediğinde kullanın; uygulama ortamı/yapılandırmasında bunu kullanmayın.
Başvurular sırlar yüklendikten sonra çözümlenir. Döngüsel veya bozuk başvurular sessizce geri dönmek yerine başarısız olur.