İçeriğe Atla
Teknoloji · 11 dk okuma · görüntülenme
100%

Self-Hosted CI Runner Güvenliği: İzolasyon, OIDC ve Secret’lar

Self-hosted CI runner kullanırken izolasyon, ağ sınırı ve OIDC tabanlı kısa ömürlü yetkilendirme ile supply-chain riskini azaltan pratik model.

Self-hosted runner izolasyonu ve OIDC ile kısa ömürlü erişimi gösteren kapak görseli

Self-hosted CI runner, hız ve kontrol sağlar: daha hızlı build, özel network erişimi, maliyet optimizasyonu… Ama aynı zamanda en kolay suistimal edilen yürütme yüzeylerinden biridir. Çünkü CI job’ı, pratikte “sizin adınıza kod çalıştırma” yetkisi alır.

Bu yazı, GitHub Actions gibi sistemlerde self-hosted runner kullanan ekipler için, sahada en çok fark yaratan üç ekseni bir araya getirir:

  1. İzolasyon (runner’ın “tek seferlik” ve sınırlı olması)
  2. OIDC (statik secret yerine kısa ömürlü erişim)
  3. Secret disiplini (deploy yetkisini ayrıştırmak)
Self-hosted runner izolasyonu ve OIDC ile kısa ömürlü erişimi gösteren kapak görseli
CI güvenliği, “secret’ı saklamak” değil; yetki yüzeyini tasarlamaktır.

1) Tehdit modeli: Runner’da ne yanlış gidebilir?

Self-hosted runner için pratik tehdit modeli:

  • Pull request ile keyfi komut çalıştırma
  • Runner’dan ağ keşfi (internal scan)
  • Artifact veya cache üzerinden backdoor taşıma
  • Deploy credential’larını sızdırma
  • Runner host’u kalıcı ele geçirme (persistence)

2) Birincil kontrol: Runner’ı kalıcı değil, geçici tasarla

En sağlam model: ephemeral runner.

Pratik seçenekler:

  • Her job için yeni VM/instance aç, job bitince imha et
  • Container runner kullanıyorsan: “privileged yok”, host mount yok, node paylaşımsız
  • Cache’i “repo bazlı” ve sınırlı tut, cross-repo paylaşımı azalt

Amaç: saldırgan runner’a girse bile kalıcılık kuramasın.

3) Ağ sınırı: Runner’ın egress’i “default deny” olmalı

Self-hosted runner çoğu kurumda şuraya erişir:

  • artifact registry
  • package repo
  • container registry
  • deploy API (cloud, k8s, etc.)

Risk: “internal her yere çıkabilen” runner, lateral movement için altın bilettir.

Minimum pratik:

  • Runner subnet’i ayrı olsun
  • Egress allowlist: yalnızca gerekli domain/IP/port’lar
  • DNS log + proxy log ile “beklenmeyen çıkış” alarmı

4) Secret stratejisi: Build ile deploy’u ayır

Runner’ı güvenli tasarlamanın en hızlı kazanımı:

  • Build runner: kodu derler/test eder, deploy yetkisi yok
  • Deploy runner: sadece main/tag ve onay sonrası çalışır, daha kısıtlı ve izlenir

Eğer aynı runner hem PR build hem prod deploy yapıyorsa, bir gün PR üzerinden prod anahtarlarını taşırsınız. Genelde fark edilmez; ta ki olay olana kadar.

5) OIDC: Statik anahtarları CI’dan çıkar

Statik cloud key’leri (access key/secret) CI secret store’da duruyorsa:

  • sızar
  • unutulur
  • rotasyon yapılmaz

OIDC ile yaklaşım:

  1. CI job’ı kısa ömürlü bir kimlik token’ı alır
  2. Cloud tarafında bu kimlik “sadece şu repo/branch/job için” yetkilendirilir
  3. Token süresi bittiğinde erişim biter

Operasyonel kazanım: Rotasyon işi azalır, audit izi güçlenir, yetki daha daralır.

6) Minimum viable runner güvenlik kontrol listesi

  • Ephemeral runner veya “temiz imaj + sık reset” modeli var
  • PR job’ları deploy yetkisi almıyor
  • Deploy job’ları korunmuş branch/tag + onay ile çalışıyor
  • Runner egress allowlist (default deny)
  • OIDC ile kısa ömürlü yetkilendirme
  • Token izinleri minimum (repo token permissions dar)
  • Artifact imzalama / checksum doğrulama
  • Runner log + network log + audit log korelasyonu

Self-hosted runner güvenliği, tek bir ayar değil; izolasyon + yetki ayrımı + kısa ömürlü kimlik kombinasyonudur. Bu üçlü bir araya geldiğinde CI, kurum içinde “gizli admin makinesi” olmaktan çıkar ve yönetilebilir bir otomasyon yüzeyine dönüşür.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

Yeni yazılardan haberdar olun

Haftada bir yeni içerikler ve kaynaklar doğrudan e-postanıza gelsin.

Spam yok. Yalnızca yeni ve önemli içerikler için e-posta gönderilir.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar