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

Terraform Plan Politikaları için OPA Pipeline

Terraform plan çıktısını OPA ile denetleyerek altyapı değişikliklerini politika kapısından geçirmek için pratik rehber.

Terraform plan, OPA policy engine ve CI kararı gösteren teknik kapak görseli

Infrastructure as Code kullanan ekiplerin sık düştüğü tuzak, terraform plan çıktısını sadece insan gözüne bırakmaktır. Kod incelemesi değerlidir; fakat etiket standardı, internetten erişilebilir kaynaklar, bölge seçimi, maliyet sınırı veya şifreleme zorunluluğu gibi kuralları her PR’da elle kontrol etmek sürdürülebilir değildir. OPA tabanlı bir pipeline, plan çıktısını politika kararına çevirerek değişiklikleri insan yorumuna ek bir güvenlik katmanından geçirir.

Terraform plan ve OPA akışını gösteren diyagram

Temel akış

Amaç, Terraform kodunu apply aşamasından önce iki kapıdan geçirmek:

  1. terraform plan ile oluşacak değişikliği üretmek
  2. Plan JSON çıktısını OPA policy seti ile değerlendirmek

Bu yaklaşım sayesinde “bulut hesabında ne olacak?” sorusu ile “bu değişikliğe izin var mı?” sorusu birbirinden ayrılır ama aynı pipeline içinde birleşir.

Plan çıktısını JSON olarak üretmek

İlk adım standarttır:

terraform init
terraform plan -out=tfplan.binary
terraform show -json tfplan.binary > tfplan.json

OPA veya Conftest tarafı genelde tfplan.json üzerinden çalışır. Önemli nokta, policy motorunun HCL dosyasına değil gerçek plan sonucuna bakmasıdır. Çünkü modül genişlemesi, değişken çözümü ve provider davranışları ancak plan aşamasında netleşir.

Örnek politika senaryoları

Başlangıç için yüksek değer üreten kurallar şunlardır:

  • Public IP alan üretim kaynağı reddedilsin
  • Zorunlu etiketler yoksa plan başarısız olsun
  • Şifreleme kapalı storage kaynakları engellensin
  • Belirli bölgeler dışına kaynak açılması reddedilsin
  • Yüksek maliyetli instance tipleri için uyarı üretilebilsin

Basit bir Rego örneği:

package terraform.guardrails

deny[msg] {
  some rc in input.resource_changes
  rc.type == "aws_s3_bucket"
  after := rc.change.after
  after.tags.environment == "production"
  not after.server_side_encryption_configuration
  msg := sprintf("production bucket encryption missing: %s", [rc.address])
}

Bu kural tek başına yeterli değildir ama yaklaşımı net gösterir: kaynak değişikliği, hedef durum ve iş bağlamı birlikte değerlendirilir.

Pipeline tasarımı

CI akışı genelde şu sırayla kurulabilir:

  1. Format ve validate
  2. Plan üretimi
  3. Plan JSON çıkarımı
  4. OPA veya Conftest policy değerlendirmesi
  5. Sonuçların PR yorumuna yazılması

Bu akışta policy sonucu sadece “geçti/kaldı” olmamalıdır. Hangi kaynağın hangi kurala takıldığı PR üzerinde açık görünmelidir. Aksi halde geliştirici için düzeltme döngüsü uzar.

Politika setini yönetmek

Başarısız policy projelerinin çoğunda teknik değil yönetişim sorunu vardır. Şunlar netleşmelidir:

  • Policy deposu uygulama kodundan ayrı mı?
  • Versiyonlama nasıl yapılacak?
  • Acil istisna mekanizması var mı?
  • Uyarı ile engelleme kuralları nasıl ayrılıyor?

Tüm kuralları ilk günden bloklayıcı yapmak ekiplerde tepki üretir. Sağlıklı model, önce görünürlük sağlamak sonra kritik kuralları kapı haline getirmektir.

Kurumsal kullanım için ek kontroller

Kurumsal yapılarda sadece güvenlik değil platform ve finans ekipleri de policy üretir. Bu yüzden kuralları üç gruba ayırmak işe yarar:

  • Güvenlik guardrail’leri
  • Operasyon ve gözlemlenebilirlik zorunlulukları
  • Maliyet ve yönetişim kuralları

Örneğin her üretim kaynağında log toplama ajanı veya izleme etiketi zorunlu tutulabilir. Böylece IaC doğrulaması ile observability standardı da birlikte taşınır.

Sonuç

Terraform plan çıktısını OPA pipeline üzerinden geçirmek, IaC pratiğini “kod yaz ve um” seviyesinden çıkarır. En büyük kazanım, platform bilgisini insan hafızasından alıp tekrar edilebilir politika setine dönüştürmektir. Küçük bir kural kümesiyle başlayıp plan tabanlı görünürlük oluşturursanız, zamanla güvenlik ve yönetişim kararlarını çok daha az sürtünmeyle standardize edebilirsiniz.

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