Ana içeriğe geç

API key'leri yönet

Non-interactive caller'lar için (CI script'leri, automation, internal tool'lar) kişisel API key'leri mint edin, listeleyin ve revoke edin.

API key'ler kullanıcı-scope'lu — bir key sizin org membership'inizi, rollerinizi ve permission'larınızı inherit eder. Kendi scope'larını taşımazlar. Blast radius'u sınırlamak için sadece istediğiniz role'lere sahip ayrı bir kullanıcı kullanın ve key'i o kullanıcı altında mint edin.

Konsept modeli için (key aslında neyi authenticate ediyor, neden pk_ prefix'i yok, 2FA key'lerle nasıl etkileşiyor) bkz. Reference: API key'ler.

Nerede yaşar​

Sidebar → Settings → API Keys kartı. Sadece kendi key'lerinizi listeler — "başka kullanıcıların key'lerini gör" admin görünümü yoktur.

Key oluştur​

New API key butonu → drawer:

  • Name — key ne için (örn github-actions-deploy, prometheus-remote-write)
  • Expires in days — varsayılan 90. Daha fazlasını isterseniz server APIKeyMaxExpiryDays'e clamp eder (sessizce — sadece input'unuzu kapar)

Submit. Sonuç sayfası 64 karakterli hex plaintext'i tam bir kez copy-to-clipboard butonuyla gösterir. Şimdi kaydedin:

  • Password manager / CI secret store'a paste edin
  • GitHub Actions için: repo veya org secret olarak ekleyin (örn DTEDGE_API_KEY)
  • Local script'ler için: ~/.config/<tool>/keyring veya benzeri bir yere koyun

Kurtarma yolu yok. Sayfayı kopyalamadan kapatırsanız satırı revoke edip yenisini mint edin.

Key'i HTTP'de kullan​

X-API-Key header'ı olarak gönderin:

curl -H "X-API-Key: <your-64-char-hex>" \
https://your-host/api/orgs/<org_id>/helm/list

İki auth header de (Authorization: Bearer <jwt> ve X-API-Key: <hex>) kabul edilir. İkisini de gönderirseniz JWT öncelik alır.

Generic "auth header" alan SDK'lar için, Authorization yerine X-API-Key göndermelerini yapılandırın.

Key'lerinizi listele, ara, tanı​

API Keys tablosu şunları gösterir:

  • Name — create'te yazdığınız
  • Expires at — mutlak timestamp; asla boş değil
  • Last used — en son istek timestamp'i; hiç kullanılmadıysa boş
  • Actions — Revoke

Plaintext key bir daha gösterilmez — sadece satır metadata'sı. Plaintext'i kaybettiyseniz onu kayıp sayın ve satırı revoke edin.

Key revoke et​

Satır aksiyonları → Revoke → onayla. Satır kaybolur. O key ile sonraki istekler 401 invalid api key döner.

Revocation anında olur — propagation lag yok, beklenen revocation list yok. Cache devrede değil; server her istekte SHA-256 hash'i kontrol eder.

Key rotate et​

Rotation pattern bilinçli, otomatik değil:

  1. Aynı isim + tarih suffix ile yeni key mint et (örn github-actions-deploy-2026-04)

  2. Consumer'ı yeni key'i kullanacak şekilde güncelle

  3. Doğrula — consumer en az bir başarılı istek yapsın; yeni satırın "Last used"'unun güncellendiğini kontrol et

  4. Eski satırı revoke et

  5. adımı atlamayın. Yeni key bozuksa (CI'da typo, yanlış permission), cut-over'dan önce öğrenirsiniz.

Yeni key mint et vs reuse​

  • Consumer başına bir key. İki script arasında bir key paylaşmayın. Biri sızarsa diğerini bozmadan revoke edemezsiniz.
  • Expiry'den önce rotate, expiry'de değil. Default'unuz 90 gün ise rotation'ı 60. günde planlayın. Mid-deploy expire olan bir key, 5 dakikalık preemptive rotation'dan daha kötü bir outage.
  • Kısa-ömürlü script'ler için de mint edin. Per-task key + iş bitince revoke etmek aktif key listenizi temiz tutan ucuz bir alışkanlık.

API key'in YAPMADIĞI​

  • Casbin'i bypass etmez. Kullanıcınızla aynı permission'lar
  • Harici sistemlerden webhook authenticate etmez — onlar HMAC imzaları kullanır, API key değil
  • Policy seviyesinde 2FA'i bypass etmez. Key TOTP prompt'unu atlar (kullanım anında ikinci faktör yok) ama "tüm kullanıcılar 2FA'e enroll olmalı" server policy'si hâlâ interactive login'lerinize uygulanır
  • Lisans gate'ini bypass etmez. LICENSE_MISSING / LICENSE_GRACE_READONLY API key isteklerine de uygulanır
  • Kendi org veya rolünü taşımaz. Daha dar scope istiyorsanız ayrı bir kullanıcı kullanın

Sık hatalar​

  • invalid api key — yanlış key, key revoke edilmiş, key henüz aktif değil. Consumer'ın secret'ını kontrol edin; satırın UI'da hâlâ var olduğunu doğrulayın
  • api key expired — expires_at geçmiş. Yenisini mint edin, consumer'ı güncelleyin
  • USER_DEACTIVATED — kullanıcınızın is_active=false'i. Admin'den reactivate isteyin
  • permission denied — kullanıcınız script'in yapmaya çalıştığı şey için casbin permission'ına sahip değil. Ya kullanıcıya daha geniş bir rol verin, ya da zaten sahip olan bir hesabı kullanın

Ayrıca bakın​