Secrets Management: Uygulama Sırları Nasıl Yönetilir?
Sır yönetimi, parola, API anahtarı ve sertifika gibi gizli bilgilerin merkezi, denetlenebilir ve güvenli biçimde saklanıp dağıtılmasıdır. Nasıl işler, öğrenin.
Sır yönetimi (secrets management) nedir?
Sır yönetimi, bir yazılım sisteminin çalışması için gereken gizli bilgilerin güvenli biçimde saklanması, uygulamalara ulaştırılması, yenilenmesi ve erişimlerinin kayda alınması sürecidir. Burada sır; veritabanı parolası, API anahtarı, erişim jetonu, şifreleme anahtarı, TLS sertifikasının özel anahtarı ve servis hesabı kimlik bilgileri gibi, ele geçirilirse yetkisiz erişime yol açan her türlü kimlik bilgisidir.
Sorun çoğu zaman şifrenin kendisinin zayıf olması değil, yerinin kötü seçilmesidir. Parolanın kaynak koduna yazılması, bir yapılandırma dosyasında düz metin olarak durması ya da ekip sohbetinde paylaşılması, sızıntının en sık görülen yollarındandır. Sır yönetimi bu dağınıklığı tek bir denetlenebilir yapıda toplar.
Sırlar nerede ve nasıl sızar?
Sızıntılar genellikle sıradan alışkanlıklardan doğar:
- Geliştirici bir erişim anahtarını kodun içine yazar ve kod deposuna gönderir. Depo özel olsa bile geçmiş sürümlerde anahtar kalıcı olarak durur.
- Ortam değişkenleri, derleme günlüklerine ya da hata raporlarına yazdırılır.
- Konteyner imajının içine yapılandırma dosyası gömülür ve imaj ortak bir kayıt defterine yüklenir.
- Ayrılan bir çalışanın bildiği paylaşılan parola değiştirilmez.
Bu tür bir ihlal sonrası yalnızca anahtarı silmek yetmez. Anahtarın ele geçirilmiş olabileceği varsayılıp yenisi üretilmeli ve eski olan geçersiz kılınmalıdır. Bu nedenle sır yönetimi, en başta sızıntıyı önlemeye ve olduğunda hızlıca toparlanmaya hizmet eder.
Merkezi sır kasası nasıl çalışır?
Sır yönetiminin çekirdeği, sırların şifrelenmiş olarak tutulduğu merkezi bir kasadır. HashiCorp Vault bu alanda en bilinen çözümlerden biridir; bulut sağlayıcıların kendi sır servisleri de benzer işi görür. Kasanın temel yetenekleri şunlardır:
- Kimlik doğrulama: Uygulamanın ya da kullanıcının kim olduğu doğrulanır. Uygulamalar için çoğunlukla çalıştıkları platformun verdiği kimlik kullanılır, böylece uygulamaya ayrıca bir başlangıç parolası vermek gerekmez.
- Politika ile yetkilendirme: Her kimliğin hangi sırlara, hangi işlemle erişebileceği ayrı ayrı tanımlanır. Ödeme servisi yalnızca kendi veritabanı bilgisine ulaşır.
- Denetim kaydı: Hangi kimliğin hangi sırrı ne zaman okuduğu kaydedilir.
- Şifreleme hizmeti: Uygulama anahtarı hiç görmeden, veriyi şifrelettirmek için kasayı kullanabilir.
Böylece sır, koda ya da imaja gömülmez; uygulama çalışırken kasadan ister.
Statik ve dinamik sır arasındaki fark
Statik sır, elle belirlenmiş ve uzun süre değişmeyen değerdir; dış bir servisin API anahtarı tipik örnektir. Statik sırlar kasada güvenli saklanır ve belirli aralıklarla döndürülür (rotation).
Dinamik sır ise talep edildiği anda üretilir ve kısa ömürlüdür. Örneğin uygulama veritabanına bağlanmak istediğinde kasa o uygulama için geçici bir kullanıcı ve parola oluşturur, süre dolunca bunu siler. Böylece ele geçirilen bir bilgi uzun süre kullanılamaz ve her erişim tek bir uygulamaya kadar izlenebilir. Mümkün olan yerlerde dinamik sır tercih edilir; çünkü sızıntının zararı zaman bakımından sınırlanır.
Uygulamaya sır nasıl ulaştırılır?
Yaygın desenler şunlardır. Bir yaklaşımda uygulama başlarken kasaya bağlanır ve ihtiyacı olan sırları okur. Bir başkasında yardımcı süreç (agent ya da sidecar) uygulamanın yanında çalışır, sırları kasadan alıp dosya ya da ortam değişkeni olarak uygulamaya sunar; uygulama kodunun kasadan haberdar olması gerekmez. Kubernetes gibi ortamlarda dış sır servisleriyle senkronize çalışan bileşenler sırları kümeye güvenli biçimde yansıtır.
Hangi desen seçilirse seçilsin ortak ilke aynıdır: sır kodda ve imajda yer almaz, yalnızca çalışma anında, ihtiyacı olan sürece ve en dar yetkiyle verilir. Sistem günlüklerinde sırların maskelenmesi ve CI/CD hattında sızıntı tarayıcılarının kullanılması bu düzeni tamamlar.
Sır yönetiminde sık yapılan hatalar
Kasa kurmak sorunun yarısıdır; yanlış kullanım güveni boşa çıkarır.
- Kasadan alınan sırrı uygulama günlüğüne yazdırmak.
- Herkesin her sırra erişebildiği geniş yetki tanımlamak.
- Döndürme düzeni kurmayıp aynı anahtarı yıllarca kullanmak.
- Acil durumda anahtarın nasıl iptal edileceğini önceden denememek.
- Geliştirme ortamı ile üretim sırlarını karıştırmak.
İyi uygulama, ortamların birbirinden ayrılmasını, her sırrın sahibinin belli olmasını ve ihlal durumunda hangi sırların hangi sırayla yenileneceğini anlatan bir planı içerir.
Sır yönetimi Mindset programlarında nerede çalışılır?
HashiCorp Vault ile Sır Yönetimi eğitiminde Sır Yönetimi Çerçevesi ve Vault Mimarisi, Politika Tasarımı ve Yetkilendirme, Statik ve Dinamik Secret Engine Kullanımı ve Uygulama Entegrasyon Desenleri gibi modüller bulunur. Ortam Yönetimi ve Sır Yönetimi (Secrets Management) eğitiminde ise Yapılandırma Katmanları ve Ortam Ayrımı, Merkezi Sır Kasası ile Sızıntı Önleme, Döndürme ve Uyumluluk modülleri yer alır.
İlgili Mindset programı
HashiCorp Vault ile Sır Yönetimi
Sık sorulan sorular
Sırları ortam değişkeninde tutmak yeterli mi?
Ortam değişkeni, sırrı koddan ayırdığı için düz yazılmış dosyadan daha iyidir; ancak kendi başına bir sır yönetimi değildir. Değişkenler süreç dökümlerinde, hata raporlarında ve alt süreçlerde görünebilir. Ayrıca kimin okuduğuna dair kayıt ve döndürme imkanı sunmaz. Çoğu zaman kasa ile birlikte, çalışma anında verilen bir yöntem olarak kullanılır.
Kod deposuna yanlışlıkla sır gönderdim, ne yapmalıyım?
Önce o sırrı geçersiz kılıp yenisini üretin; çünkü depo geçmişinden silmek, başkalarının zaten kopyalamış olabileceği bilgiyi geri almaz. Ardından kullanım günlüklerinden yetkisiz erişim olup olmadığını inceleyin. Son olarak sızıntı tarayıcısını commit öncesi ve CI aşamasına ekleyerek tekrarını önleyin.
Sır döndürme (rotation) neden gerekir?
Bir sır ne kadar uzun süre geçerliyse ele geçirilme olasılığı ve ele geçirildiğinde yaratacağı zarar o kadar artar. Düzenli döndürme, bilinmeden sızmış bir bilginin değerini sınırlar ve ayrılan çalışanlar ya da eski sistemler üzerindeki erişimi kapatır. Otomatik döndürme, insan hatasını da azaltır.
Sır yönetimi yalnızca büyük şirketler için midir?
Hayır. Küçük ekipler de API anahtarı ve veritabanı parolası kullanır. Ölçek küçükken tam kapsamlı bir kasa gerekmeyebilir; bulut sağlayıcının sır servisi ya da yönetilen bir çözüm yeterli olabilir. Önemli olan sırların kodda durmaması ve erişimlerin izlenebilir olmasıdır.
Sır yönetimi uyumluluk gereksinimleriyle nasıl ilişkilidir?
Birçok güvenlik standardı ve düzenleme, erişimin yetkilendirilmesini, kayda alınmasını ve kimlik bilgilerinin düzenli yenilenmesini ister. Merkezi bir kasa ve denetim kaydı bu gereksinimleri karşılamayı kolaylaştırır. Hangi standardın hangi koşulu aradığı, ilgili standardın kendi metninden kontrol edilmelidir.