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>/keyringveya 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:
-
Aynı isim + tarih suffix ile yeni key mint et (örn
github-actions-deploy-2026-04) -
Consumer'ı yeni key'i kullanacak şekilde güncelle
-
Doğrula — consumer en az bir başarılı istek yapsın; yeni satırın "Last used"'unun güncellendiğini kontrol et
-
Eski satırı revoke et
-
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_READONLYAPI 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ınapi key expired—expires_atgeçmiş. Yenisini mint edin, consumer'ı güncelleyinUSER_DEACTIVATED— kullanıcınızınis_active=false'i. Admin'den reactivate isteyinpermission 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
- Reference: API key'ler
- Nasıl yapılır: 2FA kur
- Reference: hata mesajları
- Backend docs: Concept → API Keys