DevSecOps’a giriş: Git, Semgrep, CI
Güvenliği geliştirme hattına yerleştirmek.
Seviye 101 · 19 ders · 15 pratik lab
Dersler
Temeller
- DevSecOps nedir: DevSecOps'un güvenliği sürecin sonuna bırakmak yerine her adıma nasıl yerleştirdiğini ve bunun neden daha ucuz ve hızlı olduğunu anlarsın.
- Güvenliği sola kaydırmak: hatayı erken yakalamanın değeri
- Hata ve debug bilgisi sızıntısı: Ayrıntılı hata ve debug çıktılarının dışarıya iç yapı bilgisi sızdırabildiğini görür, üretimde bunları nasıl kapatacağını öğrenirsin.
- Servis yüzeyini küçültmek: Bir serviste gereksiz özellikleri ve açık uç noktaları kapatarak saldırı yüzeyini küçültmeyi ve bunu bir kontrol listesine dökmeyi öğrenirsin.
- Servis dosyalarında en az yetki: Bir servisin dosya ve yapılandırmalarına yalnızca gereken kullanıcıların erişmesini sağlar, yanlış izinleri nasıl bulup düzelteceğini öğrenirsin.
- Kısa görev: örnek bir servisin açıkta kalan uçlarını ve fazla yetkilerini listele
Kod ve bağımlılıklar
- Git'te sır tutmamak: Parola ve anahtarların Git geçmişine neden asla girmemesi gerektiğini, yanlışlıkla girenleri nasıl bulup değiştireceğini ve doğru saklama yollarını öğrenirsin.
- Bağımlılık taraması: Projenin kullandığı üçüncü taraf kütüphanelerdeki bilinen açıkları taramayı ve çıkan uyarıları önem sırasına göre ele almayı öğrenirsin.
- Parametreli sorgular: Parametreli sorguların girdiyi komuttan ayırarak SQL enjeksiyonunu kökten nasıl önlediğini görür ve kendi kodunda uygulamayı öğrenirsin.
- Statik analiz: Semgrep: Semgrep ile kodu çalıştırmadan riskli kalıpları taramayı, çıkan bulguları yorumlamayı ve yanlış alarmları ayıklamayı öğrenirsin.
- Güvenlik regresyon testleri: Bir kez kapatılan güvenlik açığının sonradan geri gelmediğini otomatik testlerle güvence altına almayı öğrenirsin.
- Loglara sızan gizli bilgileri testle yakalamak: Parola ve belirteçlerin loglara yazılmasını yakalayan bir test ekleyip aynı hatanın yeniden ortaya çıkmasını önleyebileceksin.
- Kısa görev: küçük bir projede gizli bilgi, bağımlılık ve statik analiz taramasını çalıştır
Konteyner ve hat
- Konteynerde root olmamak: Konteynerin neden root yerine sıradan bir kullanıcıyla çalışması gerektiğini ve bunu imaj tanımında nasıl ayarlayacağını öğrenirsin.
- CI belirteç izinleri ve güvenilmeyen girdi: Otomatik derleme hattındaki belirteçlere (token) yalnızca gereken izinleri vermeyi ve dışarıdan gelen güvenilmeyen girdiyi hatta sokmamayı öğrenirsin.
- Sürüm doğrulama: sağlama toplamı: İndirilen veya yayımlanan bir sürümün sağlama toplamını (checksum) doğrulayarak dosyanın yolda değişmediğinden emin olmayı öğrenirsin.
- Güvenlik kapısı: denetim başarısızsa sürümü durdurmak: Bağımlılık ve kod taramalarının sonucuna göre derleme hattının yayını kendiliğinden durdurmasını sağlayabileceksin.
- Kısa görev: bir hattın güvenlik kapısını kasıtlı bir açıkla dene
Bitirme
- Bitirme görevi: güvenli bir hat kur: Hayali bir şirketin küçük projesi için derleme, tarama ve doğrulama adımlarını içeren güvenli bir dağıtım hattını lab'da kurarsın.
Pratik lablar
- Örnek servisin açıkta kalan uçlarını listele: Çalışan servisin dinlediği portları ve yanıt veren adres yollarını çıkar, herkese açık olmaması gerekenleri işaretle.
- Hata ayıklama sayfasından sızan bilgiyi kapat: Hata durumunda yığın izini ve ortam değişkenlerini gösteren ayarı bul, kapat ve kullanıcıya yalnızca genel bir ileti döndüğünü doğrula.
- Servis dosyalarında en az yetkiyi uygula ve kanıtla: Yapılandırma, günlük ve yükleme dizinlerinin sahipliğini ve izinlerini servis kullanıcısına göre daralt, servis hesabının kod dosyalarını değiştiremediğini göster.
- Küçük bir projede gizli bilgi taraması çalıştır: Depoyu gitleaks ile tara, bulunan anahtarın hangi dosyada ve hangi commit’te olduğunu yaz.
- Açık içeren bağımlılığı bul ve güvenli sürüme yükselt: Bağımlılık taramasını çalıştır, bildirilen paketi düzeltilmiş sürüme çek ve testlerin hâlâ geçtiğini göster.
- Geçmişe gömülü anahtarı temizle ve yenisini güvenle ver: Sızan anahtarı geçersiz say, yenisini ortam dosyasından okut, depoyu yeniden tara ve eski anahtarın artık hiçbir yerde geçerli olmadığını kanıtla.
- Semgrep ile ilk taramayı yap ve bir bulguyu oku: Hazır kural kümesiyle projeyi tara ve en yüksek önemli bulgunun kuralını, dosyasını ve satırını yaz.
- Dizgi birleştirmeyle kurulan sorguyu parametreli hale getir: Semgrep’in işaret ettiği sorguyu parametreli sorguya çevir, taramayı yinele ve davranışın değişmediğini testle göster.
- Üç taramanın bulgularını tek öncelik listesinde birleştir: Gizli bilgi, bağımlılık ve statik analiz sonuçlarını önem ve erişilebilirliğe göre sırala, ilk üçünü düzelt ve yeniden tarayarak kanıtla.
- Bir güvenlik açığı için başarısız olan testi çalıştır: Hazır regresyon testini çalıştır, hangi girdiyle neden başarısız olduğunu çıktıdan oku.
- Loglara sızan parolayı testle yakala: Giriş isteğinden sonra log çıktısında parola geçmediğini doğrulayan bir test yaz, başarısız olduğunu gör ve loglamayı düzelt.
- Düzeltilen üç açığın geri gelmesini engelleyen test paketini yaz: Enjeksiyon, yetki ve bilgi sızıntısı düzeltmeleri için birer regresyon testi yaz, düzeltmeyi geri alınca testlerin kırıldığını göster.
- Konteynerin root olarak çalıştığını göster ve düzelt: Çalışan konteynerde kullanıcı kimliğini kontrol et, Dockerfile’a ayrıcalıksız kullanıcı ekle ve yeniden doğrula.
- Sürüm dosyasını sağlama toplamıyla doğrula: İndirilen sürümün SHA-256 özetini yayımlanan değerle karşılaştır, kurcalanmış kopyayı ayırt et ve doğrulamayı hatta ekle.
- Güvenlik kapısını kasıtlı bir açıkla sına: Hatta tarama başarısızsa sürümü durduran adımı kur, bilinen açıklı bir bağımlılık ekleyip hattın durduğunu, düzeltince geçtiğini göster.
Kurs hakkında
Güvenliği geliştirme hattına yerleştirmek.
Ne öğreneceksin
- Temeller
- Kod ve bağımlılıklar
- Konteyner ve hat
- Bitirme
Ön koşullar
Ön bilgi gerekmez; kurs sıfırdan başlar.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde ve ona bağlı özel bir lab ağında geçer. Kurulum gerekmez.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs başlangıç düzeyindedir; her terim ilk geçtiği yerde açıklanır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.