Kazanimlar:
- DevSecOps'u ve secrets yönetiminin altın kurallarını (koda girmez, kasada tutulur, çalışma anında enjekte edilir, döndürülür, en az yetki) kavrayabilme
- Yapay zekayı güvenlik tarama çıktılarını (SCA, SAST, imaj, IaC, secret) önceliklendirmek ve kodu savunma amaçlı denetlemek için kullanabilme
- Bir secret sızıntısında ilk adımın iptal/döndürme olduğunu bilme ve yapay zekayı yalnızca yetkili sistemlerde, savunma amacıyla, yasal sınırlar içinde kullanma
Bir sistemin ne kadar hızlı deploy edildiği, ele geçirildiği gün bir anlam ifade etmez. DevOps hıza odaklanırken güvenlik bazen sona bırakılır — ve sona bırakılan güvenlik, çoğu zaman hiç gelmez. DevSecOps, güvenliği DevOps akışının en başına ve her adımına yerleştiren yaklaşımdır: "güvenliği sola kaydırmak" (shift left) — yani bir açığı prod'da değil, kod yazılırken, pipeline'da yakalamak. DevSecOps profesyoneli için güvenlik ayrı bir ekibin işi değil, her commit'in, her imajın, her manifestin parçasıdır.
Bu ünitede iki ana eksen var. Birincisi secrets yönetimi: parolalar, anahtarlar, sertifikalar gibi gizli bilgilerin güvenli üretilmesi, saklanması, dağıtılması ve döndürülmesi (rotation). İkincisi güvenlik taraması ve sağlamlaştırma: bağımlılıklardaki, imajlardaki, yapılandırmalardaki açıkları bulmak. YZ her ikisinde de güçlü bir yardımcıdır — açıkları açıklar, tarama çıktılarını önceliklendirir, düzeltme önerir. Ama en kritik uyarı burada geçerlidir: YZ savunma içindir; başkasının sistemine yetkisiz erişim, izinsiz tarama veya saldırı aracı üretmek yasa dışıdır ve bu platformun kesin sınırıdır.
Secrets yönetiminin altın kuralları
- Secret asla kaynak koduna girmez. Ne Dockerfile'a, ne YAML'a, ne betiğe, ne Git'e. Git'e bir kez giren secret geçmişte kalıcıdır.
- Secret'lar merkezi bir kasada tutulur. HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager — bunlar secret'ları şifreli saklar, erişimi denetler ve kaydını tutar.
- Çalışma anında enjekte edilir. Uygulama, secret'ı diskte değil, çalışırken kasadan veya ortam değişkeninden alır.
- Düzenli döndürülür (rotation). Bir secret ne kadar uzun yaşarsa, sızma riski o kadar artar. Otomatik döndürme idealdir.
- En az yetki. Her secret'a yalnızca ihtiyacı olan servis erişebilir.
İpucu: En etkili tek önlem, pipeline'a bir secret tarayıcı (git-secrets, gitleaks, trufflehog gibi) koymaktır: bir secret yanlışlıkla commit edilmeye çalışıldığında commit'i durdurur. Bu, sızıntıyı kaynağında keser. YZ bu tarayıcıların pipeline entegrasyonunu yazmakta yardımcıdır.
Adım adım: bir secret sızıntısına müdahale
Bir secret sızarsa panik değil, sıra önemlidir:
- Derhal iptal et ve döndür (rotate). Sızan anahtarı geçersiz kıl, yenisini üret. Sadece silmek yetmez — geçmişte kalır.
- Etkiyi değerlendir. Bu anahtar nereye erişiyordu? Kötüye kullanılmış mı? Logları incele.
- Kaynağı kapat. Nasıl sızdı? Kodu, geçmişi temizle; ama unutma: iptal etmek temizlemekten önce gelir.
- Önle. Secret tarayıcıyı pipeline'a ekle ki tekrarlamasın.
Dikkat: Sızan bir secret'ı "kimse görmedi herhalde" diye döndürmemek en pahalı bahistir. Halka açık bir depoya düşen bir anahtar saniyeler içinde botlar tarafından taranır. Şüphe varsa döndürün — döndürmenin maliyeti düşük, sızıntının maliyeti felakettir.
Güvenlik taraması türleri
DevSecOps birden çok tarama katmanı kullanır; YZ her birinin çıktısını yorumlamada yardımcıdır:
- SCA (Software Composition Analysis): Kullandığınız açık kaynak bağımlılıklardaki bilinen açıkları (CVE) bulur.
- SAST (Static Application Security Testing): Kaynak kodu çalıştırmadan güvenlik açıkları için tarar.
- DAST (Dynamic Application Security Testing): Çalışan uygulamayı dışarıdan test eder.
- İmaj tarama: Konteyner imajındaki zafiyetleri bulur (trivy, docker scout).
- IaC tarama: Terraform/manifest'lerdeki yanlış yapılandırmaları bulur (tfsec, checkov).
Dikkat: Bir tarayıcı yüzlerce bulgu döker; hepsini aynı anda düzeltmek imkânsızdır. YZ'yi bulguları önceliklendirmek için kullanın: hangisi gerçekten sömürülebilir (exploitable), hangisi teoride açık ama pratikte erişilemez? Ama nihai önceliklendirmeyi kendi bağlamınızla doğrulayın.
Tarama katmanları tablosu
Katman
Neyi tarar
Örnek araç
Ne zaman
SCA
Bağımlılık açıkları (CVE)
Dependabot, Snyk
Her build
SAST
Kaynak kod açıkları
Semgrep, CodeQL
Her PR
İmaj tarama
Konteyner zafiyetleri
Trivy, Scout
Build sonrası
IaC tarama
Yanlış yapılandırma
tfsec, checkov
Terraform PR'ı
Secret tarama
Sızan secret'lar
gitleaks
Her commit
Üç mini vaka
Vaka 1 — 300 CVE, 12 gerçek risk. Bir imaj taraması 300 zafiyet bildirdi; ekip felç oldu. Tarama çıktısını YZ'ye verip "hangileri uzaktan sömürülebilir ve çalışma yolunda (reachable) mı?" diye önceliklendirttiler. YZ 12 gerçek riskli bulguyu öne çıkardı. Ekip önce onları kapattı; kalanları planlı işe aldı. Panik yerine öncelik.
Vaka 2 — döndürme bir saldırıyı boşa çıkardı. Bir geliştirici, bir bulut anahtarını yanlışlıkla halka açık bir depoya push etti. Alarm çaldı; ekip anahtarı 4 dakikada iptal edip döndürdü. Loglarda anahtarın zaten bir bottan sorgulandığı görüldü — ama artık geçersizdi. Hızlı döndürme, potansiyel bir fatura felaketini ve veri sızıntısını önledi.
Vaka 3 — IaC taraması açık bir bucket'ı yakaladı. YZ destekli bir IaC taraması, Terraform kodundaki bir depolama kovasının "herkese açık okuma" iznine sahip olduğunu prod'a gitmeden yakaladı. Geliştirici "test için" açmış, kapatmayı unutmuştu. Pipeline commit'i durdurdu; açık, prod'a hiç ulaşmadı. Sola kaydırmanın tam da amacı buydu.
Dört kopyalanabilir şablon
1) Tarama çıktısını önceliklendirme:
Aşağıdaki güvenlik tarama çıktısını önceliklendir. Her bulgu için:(1) gerçekten sömürülebilir mi (uzaktan/kimlik doğrulamasız?),(2) bizim bağlamımızda erişilebilir mi, (3) düzeltme eforu,(4) önerilen öncelik (kritik/yüksek/orta/düşük). En acil 5'i öne çıkar.Kesin konuşma; her önceliği bağlamımla doğrulamam gerektiğini belirt.Çıktı: [TARAMA]
2) Secret yönetimi tasarımı:
[UYGULAMA/ALTYAPI] için bir secrets yönetim yaklaşımı öner:hangi kasa, secret'lar çalışma anında nasıl enjekte edilir,döndürme (rotation) nasıl otomatikleşir, en az yetki nasıl uygulanır?Secret'ı ASLA koda gömmeyen somut bir akış tarif et.
3) Kodda güvenlik açığı arama (savunma):
Aşağıdaki KENDİ kodumu güvenlik açısından denetle (yetkim var):enjeksiyon, gömülü secret, güvensiz varsayılan, doğrulanmamış girdivar mı? Her bulguyu önem ve düzeltmesiyle ver. Amaç savunma vesağlamlaştırmadır. Kod: [KOD]
4) Secret sızıntısı müdahale planı:
Bir [SECRET TÜRÜ] yanlışlıkla [YER]'e sızmış olabilir. Bana adımadım müdahale sırasını ver: önce ne yapmalıyım (iptal/döndürme),etkiyi nasıl değerlendiririm, tekrarını nasıl önlerim? Sadecesilmenin neden yetmediğini de açıkla.
Zayıf prompt / Güçlü prompt
Zayıf: "Bu sistemi nasıl hacklerim / bu açığı nasıl sömürürüm?"
Bu istem hem etik dışı hem de bu platformun kesin sınırı dışındadır. YZ'yi saldırı için kullanmak yasa dışıdır.
Güçlü: "Yetkim olan kendi uygulamamın kodunu güvenlik açısından denetle: gömülü secret, enjeksiyon riski ve güvensiz varsayılanları bul, her birini düzeltmesiyle ver. Amaç sistemi sağlamlaştırmak."
Fark: ikinci istem savunma amaçlı, yetki sınırları içinde ve sağlamlaştırmaya dönüktür. DevSecOps'ta YZ'nin doğru kullanımı budur.
Sık yapılan hatalar
- Secret'ı koda/geçmişe gömmek. En yaygın ve en kalıcı güvenlik açığı.
- Sızan secret'ı döndürmemek. "Kimse görmemiştir" en pahalı bahis.
- Tüm tarama bulgularını eşit görmek. Önceliklendirmeden felç olmak veya gerçek riski kaçırmak.
- Güvenliği sona bırakmak. Prod'da bulunan açık, pipeline'da bulunandan kat kat pahalı.
- En az yetkiyi atlamak. Her şeye erişen bir secret/rol, tek bir sızıntıyı felakete çevirir.
- YZ'yi saldırı için kullanmaya çalışmak. Yasa dışı ve platform sınırı dışı.
Özetle
DevSecOps, güvenliği DevOps akışının başına ve her adımına yerleştirir — açığı prod'da değil, kod ve pipeline aşamasında yakalar. Secrets yönetiminin altın kuralları: secret koda girmez, merkezi kasada tutulur, çalışma anında enjekte edilir, düzenli döndürülür ve en az yetkiyle erişilir. Bir sızıntıda ilk adım her zaman iptal/döndürmedir. YZ, tarama çıktılarını önceliklendirmekte, secret akışları tasarlamakta ve kodu savunma amaçlı denetlemekte güçlüdür — ancak yalnızca yetkiniz olan sistemlerde, savunma amacıyla ve yasal sınırlar içinde kullanılır.
Uygulama görevi
Kendi (yetkiniz olan) bir projenizi ele alın. (1) "Kodda güvenlik açığı arama" şablonuyla gömülü secret ve güvensiz varsayılanları denetletin. (2) Bir güvenlik tarama çıktısını (gerçek veya örnek) "önceliklendirme" şablonuyla sıralatın ve en acil 3 bulguyu belirleyin. (3) Projeniz için "secret yönetimi tasarımı" şablonuyla, secret'ı koddan tamamen çıkaran bir akış taslağı üretin.
Kontrol listesi
- [ ] Kodumda, imajımda ve manifestlerimde hiçbir gömülü secret olmadığını doğruladım.
- [ ] Secret'ları merkezi bir kasada tutup çalışma anında enjekte ediyorum.
- [ ] Bir sızıntı senaryosunda ilk adımın iptal/döndürme olduğunu biliyorum.
- [ ] Tarama bulgularını sömürülebilirlik ve bağlamıma göre önceliklendirdim.
- [ ] Güvenlik taramalarını pipeline'ın erken adımlarına (sola) taşıdım.
- [ ] YZ'yi yalnızca yetkim olan sistemlerde, savunma amacıyla kullandım.