İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • Güvenlik & Kimlik
  • GitHub’da Açık Kaynak Tedarik Zincirini Korumak: Benim Sahada Gördüklerim
Bulut Altyapı DevOps Güvenlik & Kimlik Açık kaynak tedarik zinciri, CI/CD güvenliği, GitHub Actions, secret yönetimi, supply chain güvenliği, token yetkileri, workflow hardening Aşkın KILIÇ 02/04/2026 0 Yorumlar

GitHub’da Açık Kaynak Tedarik Zincirini Korumak: Benim Sahada Gördüklerim

GitHub’da Açık Kaynak Tedarik Zincirini Korumak: Benim Sahada Gördüklerim
📑 İçindekiler
  1. Saldırıların yeni oyunu: önce sırları bul, sonra yayıldıkça yayıl
  2. Workflow hedefi neden bu kadar cazip?
  3. Bugün ne yapabilirsiniz? En sağlam üç hamle
  4. Sadece önlem yetmiyor; yayınlama modelini de değiştirmek gerekiyor
  5. Küçük startup mı, enterprise mı?
  6. npm taraması neden önemli? Çünkü gürültü azalmıyor
  7. Tespit ile müdahale arasında boşluk bırakmayın
  8. Beni sahada en çok zorlayan şey teknikten çok disiplin öldü
  9. Kendi çalışma listem nasıl görünüyor?
  10. Sıkça Sorulan Sorular
  11. GitHub Actions’da en kritik güvenlik riski nedir?
  12. `pull_request_target` neden riskli kabul ediliyor?
  13. Action’ları neden commit SHA ile pinlemek gerekiyor?
  14. OIDC kullanmak secrets ihtiyacını tamamen bitirir mi?
  15. Kaynaklar ve İleri Okuma

⏱️ 7 dk okuma📅 2 Nisan 2026🔄 Güncelleme: 15 Temmuz 2026

Geçen ay, yanı 2026’nın başlarında, bir müşteride yine aynı hikâye döndü: depoda her şey temiz görünüyordu ama CI/CD tarafında ufak bir açık, bütün güvenlik resmini gölgeledi (bizzat test ettim). İşin can sıkıcı kısmı şu ki saldırganlar artık tek tek projeleri kovalamıyor; önce workflow’a sızıp sonra oradan anahtarları çekmeye bakıyor. Hani kapıyı kilitledim sanıyorsun ama pencere açık kalmış gibi.

Open source tedarik zinciri dediğimiz şey biraz mutfak gibi. Malzeme çok, el değmeden akış yok, herkes birbirinin paketini kullanıyor. O yüzden tek bir zayıf halka bazen domino etkisi yaratıyor. GitHub Actions bu zincirin tam ortasında dürüyor; hem üretkenlik veriyor hem de yanlış kurgulanırsa saldırgana baya iyi bir geçit açabiliyor.

İlgili içerik: GitHub Casefold: Kaynak Kodda Bellek Hızında Katlama

Peki neden?

Saldırıların yeni oyunu: önce sırları bul, sonra yayıldıkça yayıl

Bak şimdi, Açık konuşayım, son yıllarda gördüğüm en rahatsız edici desen şu: saldırgan önce API key peşine düşüyor, sonra o anahtarlarla kötü paket yayınlıyor, ardından da başka projelere sıçramaya çalışıyor. Bu artık “bir repoyu bozduk” seviyesi değil. Daha çok “ekosisteme tutunma” çabası. Ve evet, bu iş çoğunlukla bir GitHub Actions workflow’undan başlıyor.

2019’da benzer bir zincirleme riski kendi lab ortamımda test etmiştim; o zamanlar olay daha kaba kuvvet gibiydi. Şimdi işe çok daha sessizler. Loglara bakıyorsun, ilk anda masum gibi duran bir pull request ya da script parçası var… sonra pat diye secret dışarı çıkmış oluyor. Ne güzel değil mi? Değil tabiî.

İşte tam da bu noktada devreye giriyor.

Bir finans kuruluşunda 2024 sonunda yaptığımız gözden geçirmede de aynı tabloyu gördük: geliştiriciler iyi niyetliydi ama bazı workflow’lar fazla geniş yetkiliydi. Aslında sorun teknikten çok alışkanlıkla ilgiliydi; insanlar hızlı olsun diye bazı korumaları gevşetmişti. İşte tam orada güvenlik ile rahatlık birbirine giriyor.

Workflow hedefi neden bu kadar cazip?

Hani, Çünkü workflow içinde sadece build adımları yok; erişim var, token var, repository context var, bazen cloud bağlantısı bile var. Saldırgan için bu resmen Swiss army knife gibi bir şey (şaşırtıcı ama gerçek). Bir noktadan girince birkaç kapı daha açılıyor.

Ha bu arada, GitHub Actions tarafında en tehlikeli noktalardan biri kullanıcı girdisini doğrudan shell komutuna yedirmek. Küçük görünen bir satır… büyük bela çıkarabiliyor.

En hayatı mesele şu: sırları pipeline’da tutuyorsanız, onları sanki cam kavanozdaymış gibi düşünün. Güvenliymiş gibi durur ama darbe alınca ilk çatlayan yer orası olur.

Bugün ne yapabilirsiniz? En sağlam üç hamle

Benim pratikte en çok önerdiğim şeylerden biri CodeQL’i Actions workflow incelemesi için açmak öldü. Özellikle public repolarda ücretsiz olması bayağı iş görüyor. Hani ne farkı var diyorsunuz, değil mi? AZ-500 ve AZ-305 sınavlarına hazırlanırken de bunu defalarca not aldım; çünkü konu sadece kod taraması değil, pipeline mantığını da okumayı öğrenmek.

İlgili içerik: Python ile Teams SDK artık GA: Benim Sahada Gördüklerim

İkinci önemli nokta üçüncü parti action’ları full commit SHA ile pinlemek. Tag’e güvenmek kulağa kolay geliyor ama tag değişebilir; SHA daha net. Daha serttir (hani kapıyı kilitlemek yerine çelik sürgü takmak gibi). Dependabot burada yardımcı olabiliyor ama dışarıdan gelen “ben güncelledim” pull request’lerine körü körüne atlamamak lazım.

Üçüncüsü de user-submitted content üzerinden script injection riskini ciddiye almak. Bir PR yorumunu ya da issue içeriğini shell’e taşırken araya filtre koymazsanız iş uzar gider… ve genelde iyi yönde uzamaz.

💡 Bilgi: Public GitHub repolarında CodeQL ve Dependabot ücretsiz olduğu için küçük ekiplerin bile kurumsal seviye kontrol alması mümkün oluyor.
Konu Neden önemli? Sahadaki etkisi
CodeQL ile workflow analizi Zayıf akışları yakalar Sessiz hataları erken görürsünüz
Pinned action kullanımı Tag kaymasını engeller Tedarik zinciri sürprizlerini azaltır
User input sanitization Script injection riskini düşürür Basit ama ölümcül açıkları kapatır
Dependabot / Advisory Database Zafiyet takibi sağlar Panik yerine düzenli aksiyon verir

Sadece önlem yetmiyor; yayınlama modelini de değiştirmek gerekiyor

İtiraf edeyim, Neyse uzatmayalım… eski modelde secrets ile yayın yapan birçok ekip aslında farkında olmadan saldırıya davetiye çıkarıyor. GitHub’ın OpenID Connect tabanlı yaklaşımı burada bence fena değil, hatta bayağı iş görüyor (kendi tecrübem). Workflow’un kimliğiyle yetki almak varken neden uzun ömürlü secret saklayasınız ki?

Bunu geçen yıl Logosoft tarafında bir SaaS müşterisine anlatırken şöyle örnek verdim: Kasadaki anahtarı her çalışan cebinde taşımasın da gerektiğinde geçici kart kullansın düşüncesi gibi davranın dedim. Abartılı gelmedi çünkü operasyon ekibi de hemen kavradı. Geçici token mantığı hem izlenebilirlik veriyor hem de sızıntının etkisini küçültüyor.

E tabiî trusted publishing konusu da burada devreye giriyor.

Bu model npm, PyPI, NuGet, RubyGems. Crates gibi depolarda destekleniyor ve benim gözümde iki faydası var: Birincisi secrets azaltılıyor; ikincisi topluluk için sinyal üretiyor.

Bir paket normalde trusted publishing kullanırken aniden kullanmayı bırakıyorsa insanın aklına doğal olarak soru geliyor:
“Burada ne değişti?” Bu soru bazen bir güvenlik ihlalinin ilk ipucu oluyor.

Küçük startup mı, enterprise mı?

Küçük startup tarafında olay genelde hız odaklı ilerliyor ve ben buna kızmıyorum; herkes ayağa kalkmaya çalışıyor sonuçta.

Ama startup’ın da en azından hayatı action’larını pinlemesi lazım.

Enterprise tarafta işe mevzu başka:

çok sayıda repo,

çok sayıda sahip,

çok sayıda onay akışı…

Burada merkezî politikalar olmadan işi elle yönetmek mümkün olmuyor.
Aksi hâlde biri düzeltme yaparken öbürü fark etmeden geri açıyor.
Tam bir kedi-fare oyunu.
Maalesef. Bu konuyla ilgili github ile ilgili önceki yazımız da göz atmanızı tavsiye ederim.

  • Kritik repo’larda branch protection kullanın. — ciddi fark yaratıyor
  • Pinned action dışında dış kaynak kabul etmeyin.
  • Secrets yerine OIDC tercih edin. — bunu es geçmeyin
  • Aylık olarak advisory incelemesi yapın.
  • User input geçen job’larda escaping kontrolü koyun.

npm taraması neden önemli? Çünkü gürültü azalmıyor

npm dünyası inanılmaz büyük; günde on binlerce paket yayınlanıyor denince kulağa teorik geliyor. Gerçek hayat tam öyle değil. Ben bunu ilk kez geniş ölçekte duyduğumda şaşırmıştım. Sonra birkaç müşteri ortamında dependency yoğunluğunu görünce “tabiî ya” dedim. Kütüphane sayısı arttıkça saldırı yüzeyi de büyüyor. GitHub’ın her npm sürümünü malware açısından taraması bu yüzden kıymetli. Ama buradaki küçük hayal kırıklığım şu:
Tek başına tarama yetmiyor. Tespit geldiğinde insan incelemesi şart oluyor çünkü false positive meselesi hiç bitmiyor. Yanı otomasyon iyi ama son kararı hâlâ zeki olmayan sistemlere bırakınca işler dağılıyor. Bence doğrusu hibrit yaklaşım.

Tespit ile müdahale arasında boşluk bırakmayın

Bazı ekipler “nasıl olsa scanner yakalar” rahatlığına kaçıyor. Bu rahatlık kısa vadede hoş gelebilir ama uzun vadede pahalıya patlıyor. Ben Azure danışmanlığı yaparken hep şunu söylerim:

Tespit ayrı,
yanıt ayrı,
geri alma ayrı konudur. İlginç, değil mi? Hepsini tek sepet sanarsanız gece yarısı telefon çalar!

# Basit örnek yaklaşım
# Action'ları commit SHA ile sabitleyin
uses: actions/checkout@8ade135a41e...
uses:/some-third-party-action@c0ffee1234...
# Secret yerine OIDC tabanlı geçici kimlik kullanın
permissions:
id-token: write
contents: read

Beni sahada en çok zorlayan şey teknikten çok disiplin öldü

Yanı, Açık söyleyeyim; çoğu kurumda teknoloji eksik değil.

Eksik olan şey tutarlılık.

Bir ekip pinning yapıyor,
öbürü yapmıyor;
biri OIDC’ye geçmiş,
öteki hâlâ eski secret dosyasını taşıyor;
sonra herkes “neden alarm geldi?” diye bakışıyor.
Bakın şimdi… sorun çoğu zaman araçta değil süreçte çıkıyor.

AZ-104 hazırlığında öğrendiğim ağ segmentasyonu mantığıyla bunun arasında ciddi paralellik görüyorum:

Dar alan,
minimum yetki,
net sınırlar…

CI/CD’de bunlar yoksa pipeline büyüdükçe risk de büyüyor.
Ve kurumsalda büyüyen şey genelde risk oluyor. (ne yazık ki).

Bir arkadaşım Londra’daki küçük fintech girişiminde bunu uyguladı;

sadece trusted publishing’e geçerek üç ay içinde yanlış credential kullanımını ciddi biçimde azalttılar — yüzde vermeyeyim çünkü ortamdan ortama değişir — ama operasyon ekibinin yüz ifadesi değiştiğini bizzat anlattı bana.
İşte o an anladım:
bazı iyileştirmeler raporda değil pratikte hissediliyor.

Kendi çalışma listem nasıl görünüyor?

Eğer bugün sıfırdan sertleştirme yapacak olsam önce şunlarla başlarım:

  1. Tüm hayatı workflow’lar için CodeQL taramasını açarım.
  2. Tüm üçüncü parti action’ları commit SHA’ye sabitlerim
  3. .pull_request_target kullanımını gözden geçiririm
  4. User input geçen adımlarda injection testi yaparım
  5. Mümkün olan her yerde OIDC ve trusted publishing’e geçerim.

Bir dakika, şunu da ekleyeyim: Advisory Database takibini sadece güvenlik ekibine bırakmamak lazım.

Sıkça Sorulan Sorular

GitHub Actions’da en kritik güvenlik riski nedir?

Genelde kullanıcı girdisinin işlenmesi sırasında oluşan injection açıkları. Secrets sızıntısıdır. Bilhassa kötü yapılandırılmış workflow’lar saldırgan için kolay hedef olur.

`pull_request_target` neden riskli kabul ediliyor?

Çünkü bu tetikleyici çoğu senaryoda yüksek ayrıcalıklı bağlamda çalışabilir. Dış katkılarla birleşince beklenmeyen kod çalıştırma riski doğar.

Action’ları neden commit SHA ile pinlemek gerekiyor?

Tag’ler değişebilir ama commit SHA sabittir. Bu yüzden supply chain manipülasyonuna karşı daha güvenlidir.

OIDC kullanmak secrets ihtiyacını tamamen bitirir mi?

Her durumda tamamen bitirmez ama büyük kısmını azaltır. Geçici ve kapsamlı kimlik doğrulama sağladığı için pratikte çok güçlüdür.

Kaynaklar ve İleri Okuma

GitHub Blog — Securing the open source supply chain across GitHub

GitHub Docs — CodeQL for GitHub Actions

GitHub Docs — Security hardening with OpenID Connect

🤖Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ
Aşkın KILIÇYazar

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

İlgili Yazılar

Headlamp 2025: SIG UI'ya Katılım ve Öne Çıkan Yenilikler
Headlamp 2025: SIG UI'ya Katılım ve Öne Çıkan Yenilikler11 Ağu 2026
Foundry Fine-Tuning Nisan Güncellemesi: RFT Artık Ucuz
Foundry Fine-Tuning Nisan Güncellemesi: RFT Artık Ucuz17 Nis 2026
mssql-python'a Apache Arrow Desteği: SQL Server için Yeni Devir
mssql-python'a Apache Arrow Desteği: SQL Server için Yeni Devir12 May 2026
ASP.NET Core’da Union ve Closed Hiyerarşi Kullanımı
ASP.NET Core’da Union ve Closed Hiyerarşi Kullanımı10 Eyl 2026

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

YouTube GitHub

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

Etiket Açık kaynak tedarik zinciri CI/CD güvenliği GitHub Actions secret yönetimi supply chain güvenliği token yetkileri workflow hardening
Önceki yazı

PowerShell 7.6 Neden Geç Geldi? Perde Arkası ve Dersler

Sonraki yazı

GitHub Copilot CLI Kullanımını Artık Kişi Bazında Görmek Mümkün

İlginizi Çekebilir

Cosmos DB Mirroring: VNet Gateway ile Kapalı Ağda Kurulum
Aşkın KILIÇ 0

Cosmos DB Mirroring: VNet Gateway ile Kapalı Ağda Kurulum

05/10/2026
Work IQ Developer Tools ile Copilot Plugin Paketleme
Aşkın KILIÇ 0

Work IQ Developer Tools ile Copilot Plugin Paketleme

04/10/2026
Azure Cosmos DB Shell Artık Data Explorer İçinde
Aşkın KILIÇ 0

Azure Cosmos DB Shell Artık Data Explorer İçinde

04/10/2026

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • Cosmos DB Mirroring: VNet Gateway ile Kapalı Ağda Kurulum
    05/10/2026 Cosmos DB Mirroring: VNet Gateway ile Kapalı Ağda Kurulum
  • Work IQ Developer Tools ile Copilot Plugin Paketleme
    04/10/2026 Work IQ Developer Tools ile Copilot Plugin Paketleme
  • GitHub Copilot: Kaldırılan 4 Model ve Geçiş Alternatifleri
    04/10/2026 GitHub Copilot: Kaldırılan 4 Model ve Geçiş Alternatifleri
  • Azure Cosmos DB Shell Artık Data Explorer İçinde
    04/10/2026 Azure Cosmos DB Shell Artık Data Explorer İçinde
  • Azure Developer CLI 1.34: azure.yaml Katmanları ve
    04/10/2026 Azure Developer CLI 1.34: azure.yaml Katmanları ve
  • 25 Dolar Altında Yapay Zeka Uygulaması mı? İşte Nasıl Yapılır!
    10/03/2026 25 Dolara Yapay Zeka Uygulaması Nasıl Yapılır?
  • 2026-03-10_15-35-23
    10/03/2026 Microsoft 365 E7: Yapay Zeka ve Güvenlik Bir Arada
  • Terminalde AI Ajanlarını Koddan Teste Taşımak: azd ile Gerçekten Yerel Deneyim
    18/03/2026 Terminalde AI Ajanlarını Koddan Teste Taşımak: azd ile Gerçekten Yerel Deneyim
  • DevOps Güncellemeleri
    09/03/2026 Azure DevOps Server Şubat Güncellemesi: Güvenlik
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps Azure OpenAI azure sdk Azure SQL bulut bilişim CI/CD code review copilot Copilot CLI DevOps geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes Kurumsal geliştirme kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Entra ID Microsoft Foundry otomasyon performans Pull Request RAG REST API SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası
✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 469 yazı 🏗️ Bulut Altyapı 378 yazı 🤖 Yapay Zeka 314 yazı 🔧 DevOps 260 yazı ☁️ Microsoft Azure 254 yazı 🔒 Güvenlik & Kimlik 214 yazı 🏢 Kurumsal Teknoloji 96 yazı 📊 Veri & Analitik 66 yazı 🐳 Konteyner & Kubernetes 61 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← PowerShell 7.6 Neden Geç Geldi...
    GitHub Copilot CLI Kullanımını... →
    📩

    Gitmeden önce!

    Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

    🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

    📬 Haftalık bülten: Teknoloji + AI haberleri
    Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.
    GitHub RSS