Dinamik Secret’lar Nasıl Çalışır
Dinamik secret, ihtiyaç duyulduğu ana kadar var olmayan bir kimlik bilgisidir. Bir istemci — bir uygulama, bir pipeline, bir mühendis — erişim talep ettiğinde, secret motoru o istemciye ve o amaca özel taze bir kimlik bilgisi üretir, ona tanımlı bir ömre sahip bir lease iliştirir ve teslim eder. Lease süresi dolduğunda kimlik bilgisi hedef sistemde otomatik olarak iptal edilir; kimsenin temizlemeyi hatırlaması gerekmez. Statik secret ise tersine çalışır: bir kez oluşturulur, yapılandırma dosyalarına ve pipeline’lara kopyalanır ve biri rotasyonu hatırlayana kadar yaşamaya devam eder. Pratikte bu, aylar hatta yıllar sürebilir.
Bu örüntü, kimlik bilgilerini programatik olarak oluşturup silebilen her arka uca uyar. En yaygın hedefler veritabanlarıdır: paylaşılan bir hesap yerine her oturum kendi kısa ömürlü veritabanı kullanıcısını alır. Bulut sağlayıcılarında uzun ömürlü erişim anahtarları yerine görev başına geçici kimlik bilgileri verilir. Kubernetes’te ise servis hesabı token’ları saklanmak yerine talep anında üretilir. Her durumda hedef sistem, yalnızca yakın zamanda doğmuş ve yakında ölecek kimlik bilgileri görür.
Neden Önemli
Güvenlik argümanı basittir: var olmayan bir kimlik bilgisi çalınamaz. Statik secret’lar kod depolarında, CI değişkenlerinde ve yapılandırma dosyalarında birikir ve her kopya, rotasyona kadar geçerli kalan sabit bir hedeftir. Dinamik secret’larda ise çalınacak sabit bir şey yoktur: bir makineyi ele geçiren saldırgan, en kötü ihtimalle dakikalar veya saatler içinde süresi dolacak bir kimlik bilgisi bulur. Böylece herhangi bir sızıntının patlama yarıçapı, lease uzunluğuyla sınırlanır. Her üretim ve her iptal secret motorundan geçtiği için, hangi kimlik bilgisini kimin ne zaman aldığına dair eksiksiz bir denetim izi oluşur.
Aynı nedenle eylemlerin sahibini bulmak da kolaylaşır. Beş servis tek bir veritabanı parolasını paylaştığında, veritabanı günlüğü belirli bir sorguyu hangisinin çalıştırdığını söyleyemez. Her istemci kendi kimlik bilgisini aldığında ise hedef sistemdeki her eylem belirli bir kimliğe kadar izlenebilir. Dinamik secret’ların sıfır kalıcı ayrıcalık (zero standing privilege) ve tam zamanında (JIT) erişim ilkeleriyle bağlantısı da buradadır: erişim, boşta durup kötüye kullanılmayı beklemek yerine yalnızca kullanıldığı anda var olur; talep üzerine verilir ve otomatik olarak geri alınır.
Dinamik Secret’lara Geçiş
Başlıca mühendislik sonucu, uygulamaların kimlik bilgisi yenilenmesine dayanıklı olması gerektiğidir. Hiç değişmeyen bir parolaya göre yazılmış kod, lease süresi dolduğunda kırılır; bu yüzden istemciler kimlik bilgilerini başlangıçta almalı, süresi dolmadan yenilemeli veya yeniden talep etmeli ve kimlik bilgisi değiştiğinde bağlantıyı sorunsuz biçimde yeniden kurmalıdır. Modern veritabanı sürücülerinin ve bulut SDK’larının çoğu bunu iyi yönetir; yine de bu, varsayılmak yerine uygulama başına doğrulanması gereken bir tasarım özelliğidir. Lease uzunluğu bir ayar kararıdır: maruziyeti sınırlayacak kadar kısa, bağlantıları gereksiz yere yenilemeyecek kadar uzun.
İkinci gereksinim merkezî kontroldür. Lease’ler tek bir yerden iptal edilebilmelidir: bir olay yaşandığında veya bir makine ele geçirildiğinde operatör, hedef sistemleri tek tek taramak yerine o istemciye verilmiş her kimlik bilgisini anında kesebilmelidir. Dinamik secret’ların el yordamıyla yazılmış betiklerle değil, bir secret yönetimi platformuyla sunulmasının nedeni budur: üretim, yenileme, iptal ve denetim kaydını tek bir yaşam döngüsü olarak platform üstlenir. Monopam’ın secret yönetimi; PostgreSQL, MSSQL, MySQL ve Kubernetes için otomatik süresi dolan lease’lerle dinamik kimlik bilgileri üretir.