Modül 6 · Modül 6 — Domain 6: GitHub Actions Automation & Policies · ⏱ 10-15 dakika

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ürKapsamKullanım
GitHub-hostedGitHub’ın altyapısıHer job için temiz ortam, ek yük yok
Self-hostedMüş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

  1. Persistent state: GitHub-hosted runner’lar her job sonrası temizlenir; self-hosted runner’lar temizlenmez → credential leak riski
  2. Network access: Runner şirket ağındaysa erişim riski büyür
  3. 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.