API Anahtarı ve Sır Yönetimi (Secrets Management) Rehberi
Sır yönetimi, API anahtarları ve parolalar gibi hassas bilgileri güvenli saklama disiplinidir. Koda gömülü sırların tehlikesi, doğru yaklaşım (sır kasası, en az yetki, döndürme), sızan sırrın silinmeyip iptal edilmesi ve geliştirme sürecine yerleştirme.
Hızlı cevap: Sır yönetimi (secrets management), yazılımların kullandığı API anahtarları, veritabanı parolaları, şifreleme anahtarları ve erişim tokenları gibi hassas bilgileri güvenli biçimde saklama, dağıtma ve döndürme disiplinidir. En yaygın ve en tehlikeli hata, bu sırları doğrudan kaynak koduna yazmak (hardcode etmek) ya da bir kod deposuna göndermektir; çünkü koda giren bir sır, o depoya erişen herkese ve depo herkese açıksa tüm internete açılır. Doğru yaklaşım: sırları asla koda yazmayın, onları koddan ayrı bir sır kasasında (secrets manager) ya da ortam değişkenlerinde tutun, erişimi en az yetkiyle sınırlayın, sırları düzenli olarak döndürün ve bir sır sızarsa hemen iptal edin. Sızmış bir API anahtarı, saldırganlara sisteminize doğrudan bir kapı açar; bu yüzden sır yönetimi modern yazılım güvenliğinin temel taşlarından biridir.
Modern bir uygulama, onlarca farklı sırla çalışır: bir veritabanına bağlanmak için parola, bir ödeme servisini çağırmak için API anahtarı, verileri şifrelemek için anahtarlar. Bu sırlar, uygulamanın kalbine giden anahtarlardır; biri sızarsa, saldırgan doğrudan içeri girer. Yine de en yaygın güvenlik hatalarından biri, bu sırları özensizce yönetmek, hatta doğrudan koda yazıp bir kod deposuna göndermektir. Bu yazı, sır yönetiminin ne olduğunu, en sık yapılan hataları ve doğru yaklaşımı anlatıyor.
Sorun: koda gömülü sırlar
En yaygın ve en tehlikeli hata, bir sırrı doğrudan kaynak koduna yazmaktır. Geliştirici, hızlıca çalışsın diye bir API anahtarını koda yapıştırır ve unutur; sonra o kod bir depoya gönderilir. Artık o sır, depoya erişen herkes tarafından görülebilir. Depo herkese açıksa (örneğin bir açık kaynak proje ya da yanlışlıkla herkese açık bırakılmış bir depo), sır tüm internete açılmış demektir. Saldırganlar, kod depolarını bu tür sızmış sırlar için otomatik olarak tarar; sızan bir anahtar dakikalar içinde kötüye kullanılabilir.
Daha da sinsisi, sırrı sonradan koddan silmenin yetmemesidir; kod deposu tüm geçmişi tutar, yani sır silinse bile eski sürümlerde durmaya devam eder. Bu yüzden sızan bir sır, silinmez, iptal edilir.
Doğru yaklaşım
| İlke | Ne demek |
|---|---|
| Sırları koddan ayır | Asla hardcode etme, koda yazma |
| Sır kasası kullan | Merkezi, şifreli bir secrets manager |
| En az yetki | Her sırra sadece gereken erişebilsin |
| Düzenli döndürme | Sırları periyodik olarak yenile |
| Sızıntı tespiti | Depoları ve dış yüzeyi sızmış sır için tara |
| Anında iptal | Bir sır sızarsa hemen geçersiz kıl |
Bu ilkelerin ortak amacı, bir sırrın hem sızmasını zorlaştırmak hem de sızdığında hasarı sınırlamaktır.
Sır kasası (secrets manager)
Doğru çözümün merkezinde bir sır kasası vardır. Bu, tüm sırları şifreli biçimde saklayan, uygulamalara ihtiyaç anında güvenli biçimde veren ve erişimi denetleyen merkezi bir sistemdir. Sırlar koda değil, bu kasaya konur; uygulama çalışırken sırrı kasadan çeker. Böylece sır hiçbir zaman koda ya da depoya girmez. Küçük ölçekte, sırları koddan ayrı ortam değişkenlerinde tutmak da bir başlangıçtır; ama büyüdükçe merkezi bir kasa gerekir.
Döndürme ve iptal
Sırlar sabit kalmamalıdır. Bir parolayı ya da API anahtarını yıllarca aynı tutmak, bir gün sızarsa uzun süre açık kalması demektir. Düzenli döndürme (rotation), sırları periyodik olarak yenileyerek bu pencereyi daraltır. Ve bir sır sızdığından şüphelenildiğinde, öncelik onu hemen iptal etmektir; çünkü sızan bir sır, siz iptal edene kadar geçerli bir anahtardır. Bu, bir olay müdahale sürecinin de parçasıdır.
Geliştirme sürecine yerleştirmek
Sır yönetimi tek seferlik bir iş değil, sürekli bir disiplindir. En etkili yaklaşım, sır sızıntısı tespitini geliştirme sürecine yerleştirmektir: her kod gönderiminde, kodun içine sızmış bir sır olup olmadığı otomatik taranır. Bu, güvenliği yazılım sürecine gömme (DevSecOps) yaklaşımının bir parçasıdır; statik analiz ve kod incelemesiyle birlikte çalışır. Bu yaklaşımı SAST, DAST ve güvenli kod incelemesi yazısında ele aldık. Ayrıca sızmış kimlik bilgilerinin dış yüzeyde izlenmesi, bir dark web ve veri sızıntısı izleme çalışmasıyla tamamlanır.
KAOS ve DSET yaklaşımı
DSET, kurumların sır yönetimini güvenli biçimde kurmasına yardım eder. Yerel yapay zekâ motorumuz KAOS, bir kurumun kod depolarını ve dış yüzeyini tarayarak koda gömülü ya da sızmış API anahtarları, parolalar ve tokenları tespit eder ve her bulguyu çalışan bir kanıtla, yanlış pozitif olmadan raporlar. Amaç, sızmış bir sır bir saldırgana kapı açmadan önce onu bulup iptal ettirmektir.
Sık sorulan sorular
API anahtarımı koda yazmak neden bu kadar tehlikeli? Çünkü koda giren bir sır, o koda erişen herkese açılır ve kod deposu tüm geçmişi tuttuğu için silseniz bile eski sürümlerde kalır. Depo yanlışlıkla herkese açık kalırsa, sır tüm internete açılmış olur ve saldırganlar depoları bu tür sırlar için otomatik tarar. Sızan bir API anahtarı dakikalar içinde kötüye kullanılabilir. Doğru yol, sırları asla koda yazmamaktır.
Sırrı koddan sildim, artık güvende miyim? Hayır. Kod depoları tüm geçmişi tutar; bir sırrı sonradan silseniz bile, eski sürümlerde durmaya devam eder ve oradan çekilebilir. Bu yüzden sızan bir sır silinmez, iptal edilir. Şüphelendiğiniz anda o anahtarı ya da parolayı geçersiz kılın ve yenisini üretin; asıl güvenlik, sırrı iptal etmekle sağlanır, koddan silmekle değil.
Küçük bir projede sır kasası şart mı? Küçük ölçekte, sırları koddan ayrı ortam değişkenlerinde tutmak bir başlangıçtır ve en yaygın hatayı (koda gömme) önler. Ama proje ve ekip büyüdükçe, merkezi bir sır kasası gerekir; çünkü sırların kim tarafından, nasıl erişildiğini denetlemek ve düzenli döndürmeyi yönetmek elle zorlaşır. Önemli olan, en baştan sırları koddan ayrı tutma alışkanlığını kurmaktır.
Kaynaklar
- OWASP sır yönetimi rehberi: https://owasp.org
- NIST anahtar yönetimi (SP 800-57): https://csrc.nist.gov
- DSET Siber Güvenlik ve Uygulama Güvenliği Hizmetleri: https://dset.com.tr/hizmetler
Kurumunuzun sır yönetimini güvene almak ve sızmış anahtarları tespit etmek için DSET ile iletişime geçin. Ankara Hacettepe Teknokent laboratuvarımızdan uygulama güvenliği danışmanlığı sağlıyoruz.
Kimliğinizi doğrulayın
Yetkilendirilmiş erişim alanı. Tüm giriş denemeleri kayıt altına alınır.