Self-Hosted Runners ve Güvenlik
Self-Hosted Runners & Security
Bu derste neler öğreneceksin
- Self-hosted runner tiplerini ve kapsamlarını açıklamak
- Self-hosted runner güvenlik risklerini ve önlemlerini listelemek
- Runner group politikalarını yapılandırmayı anlamak
Self-hosted runner’lar, müşterinin kendi altyapısında çalışan GitHub Actions execution environment’larıdır. GH-100, runner yönetimi ve güvenlik politikalarını Domain 6 kapsamında sınar.
Runner Türleri ve Kapsamları
| Tür | Kapsam | Kullanım |
|---|---|---|
| GitHub-hosted | GitHub’ın altyapısı | Her job için temiz ortam, ek yük yok |
| Self-hosted | Müşteri altyapısı | Özel donanım, intranet erişimi, belirli yazılımlar |
Self-hosted runner kapsamları:
- Repository runner: Yalnızca bir repo için
- Organization runner: Org genelinde (runner group ile yönetilir)
- Enterprise runner: Tüm enterprise için (enterprise runner group)
Runner Group Politikaları
Organization → Settings → Actions → Runner groups
→ New runner group
→ Access: All repositories / Selected repositories
→ Allow public repositories: Enable/Disable (güvenlik riski!)
Kritik güvenlik noktası: Self-hosted runner’ları public repository’lere erişime açmak tehlikelidir. Fork PR’ları runner üzerinde zararlı kod çalıştırabilir. Public repo’larda self-hosted runner kullanma — ya da “require approval” ile koru.
Self-Hosted Runner Güvenlik Riskleri
- Persistent state: GitHub-hosted runner’lar her job sonrası temizlenir; self-hosted runner’lar temizlenmez → credential leak riski
- Network access: Runner şirket ağındaysa erişim riski büyür
- Privilege escalation: Runner’ın çalıştığı kullanıcı/service account minimum yetkili olmalı
Runner Kayıt ve Kaldırma
Runner kayıt:
./config.sh --url https://github.com/org/repo \
--token {REGISTRATION_TOKEN}
./run.sh
Runner offline olduğunda 30 gün sonra otomatik kaldırılır. Manuel kaldırma:
Settings → Actions → Runners → {Runner} → Remove
Ephemeral Runner (Just-in-time)
Güvenlik açısından tercih edilen yaklaşım: Her job için yeni bir ephemeral runner başlat, job bittikten sonra imha et.
./config.sh --url https://github.com/{org} \
--token {TOKEN} \
--ephemeral
Kubernetes Action Runner Controller (ARC) ile bu otomatikleştirilebilir.