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

Terraform CI Guardrails: Plan/Apply, Drift ve Policy Check

IaC’de güvenlik ve hız dengesi: plan/apply ayrımı, drift tespiti, policy-as-code ve onay akışıyla prod değişikliklerini kontrollü yönetme rehberi.

Terraform CI guardrails akışını gösteren kapak görseli

Terraform kullanan ekiplerde iki uç yaklaşım görürsünüz:

  • “Her PR’da apply yapalım, hızlıyız.” (risk büyür)
  • “Apply sadece haftada bir, değişiklikten korkuyoruz.” (hız biter)

İyi bir CI tasarımı; plan ile apply’ı ayırır, drift’i görünür kılar ve policy-as-code ile “yanlış değişikliği” daha merge olmadan durdurur. Bu yazı; prod altyapı değişiklikleri için sahada işleyen guardrail setini, ürün bağımsız prensiplerle anlatır.

Terraform CI guardrails akışını gösteren kapak görseli
Hızlı olmak; kontrolsüz olmak değildir. Guardrail’ler, prod’e giden yolu kısaltır.

Hedef: “PR = karar”, “Apply = eylem”

PR’da amaç:

  • Değişikliği anlamak (review)
  • Etkisini görmek (plan)
  • Politika uyumunu doğrulamak (policy check)

Apply’da amaç:

  • Onaylanmış değişikliği kontrollü uygulamak
  • Geri dönüş planını hazır tutmak

Bu ayrım; hem güvenlik hem operasyonel olgunluk için temel.

Minimum guardrail seti

Benim “minimum viable” guardrail’lerim:

  1. Format + validate (her PR’da)
  2. Plan (her PR’da; ortam bazlı)
  3. Policy-as-code (plan çıktısı üzerinden)
  4. Drift detection (günlük/haftalık)
  5. Apply sadece korumalı koşullarda (manual onay + branch koruması)

Plan stratejisi: Hangi ortama plan alacağım?

Tek bir “prod plan” yaklaşımı her repo için doğru değil. Pratik seçim:

  • Küçük ekip/az ortam: PR’da dev + prod plan
  • Büyük ekip/çok ortam: PR’da dev plan, merge sonrası prod plan + onay

Buradaki karar; secrets, maliyet ve saldırı yüzeyi ile ilgilidir. Prod plan için prod credential’ı PR context’inde vermek bazı kurumlarda kabul edilemez.

Policy check: Plan’ı okuyup “dur” diyebilmek

Policy check’in amacı:

  • “Bu değişiklik teknik olarak çalışır” yetmez
  • “Bu değişiklik kuruma uygun mu?” sorusunu otomatik cevaplamak

Örnek policy kuralları:

  • Public S3 bucket yasak
  • Security group 0.0.0.0/0 inbound kısıtlı
  • KMS encryption zorunlu
  • Prod DB instance class limitli
  • Tag standardı zorunlu (cost center, owner)

Araç isimleri değişebilir; önemli olan plan çıktısından kaynağın niyetini okumak.

Drift: “Gerçek dünya” ile “repo” farklıysa ne olacak?

Drift; çoğu IaC kazasının başlangıcıdır:

  • Console’dan hotfix yapıldı (ve unutuldu)
  • Incident sırasında bypass edildi
  • Automation dışında bir sistem değiştirdi

Drift detection için iki pratik kural:

  • Düzenli plan al (apply etme)
  • Drift varsa issue aç + owner’a ata

Kritik: Drift’i “suç” gibi değil, “sinyal” gibi yönetin. Drift; ya süreç açığıdır ya da IaC kapsamı eksiktir.

Apply kontrolü: Kim, ne zaman, hangi koşulla?

Prod apply için sahada en güvenli model:

  • Apply sadece main (veya release branch) üzerinden
  • Manual approval (en az 2 kişi)
  • Apply job’ı kısıtlı runner’da (network + IAM)
  • State backend lock ve audit açık

Ek guardrail’ler:

  • “Destructive change” uyarısı (plan parse ile)
  • “Maintenance window” kontrolü
  • Slack/Teams bildirimleri + değişiklik kaydı

Çok repo / çok workspace: Ölçek büyüyünce ne değişir?

Ölçek büyüyünce iki risk artar:

  • Workspace sayısı (kompleksite)
  • Yetki alanı (blast radius)

Bu noktada iyi pratikler:

  • Modül versiyonlama (registry veya git tag)
  • Environment klasörleri (ayrı state)
  • “Per-service” ownership ve review
  • Kademeli rollout (önce staging, sonra prod)

Kapanış: Guardrail’leri ‘pipeline’ olarak düşünün

Terraform CI’da amaç; tek bir “mükemmel YAML” yazmak değil, riskli değişiklikleri erken yakalamak ve prod uygulamayı kontrollü hale getirmektir.

Başlangıç için önerdiğim küçük adımlar:

  • PR’da fmt + validate + plan
  • Plan üzerinden policy check
  • Drift plan’ını düzenli çalıştır
  • Prod apply’ı manual onay + korumalı runner ile sınırla
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