DevOps Bootcamp · Ders

Yönetişim için Sentinel Politikaları

Terraform dağıtımlarınız genelinde uyumluluk ve yönetişim sağlamak için HashiCorp Sentinel kullanarak politika olarak kod yazmayı ve uygulamayı öğrenin.

2. ders / 411 adım

Yönetişim için Sentinel Politikaları, CoddyKit'te ücretsiz bir DevOps Bootcamp dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp kursu toplamda 4 dersten oluşur.

Kod Olarak İlkeye ve Sentinel'e Giriş

Altyapı dağıtımlarınızın belirli kuralları otomatik olarak karşılamasını sağlayabilseydiniz ne olurdu? Kod Olarak İlkenin (PaC) gücü budur. PaC, altyapı oluşturma ve değiştirme kurallarını programlanabilir bir şekilde tanımlar ve yönetişimi geliştirme iş akışınıza taşır. HashiCorp Sentinel, bu amaç için tasarlanmış güçlü bir PaC çerçevesidir.

Sentinel'in Terraform'daki Rolü

Sentinel, Terraform Cloud ve Terraform Enterprise ile doğrudan bütünleşir. Bir bekçi gibi davranarak Terraform yürütme planınızı, bulut ortamınıza herhangi bir değişiklik uygulanmadan önce değerlendirir. Bu kritik adım, kurallara uymayan veya güvenli olmayan altyapının herhangi bir zaman sağlanmasını önler ve kuralları proaktif olarak uygular.

İlkeler ve Uygulama Düzeyleri

Sentinel ilkesi, Sentinel dilinde yazılmış bir kurallar kümesidir. Bir ilke tetiklendiğinde true (başarılı) veya false (başarısız) sonucunu döndürür. İlkeler farklı uygulama düzeyleriyle yapılandırılabilir:

  • Danışma: İhlaller hakkında uyarır ancak işlemin sürdürülmesine izin verir.
  • Yumuşak Zorunlu: Kurallara uymayan değişikliklerle devam etmek için açık bir geçersiz kılma işlemi gerektirir.
  • Kesin Zorunlu: Kurallara uymayan işlemleri tamamen engeller ve ilkeye uyulmasını zorunlu kılar.

Sentinel İlkesi Yapısı

Sentinel ilkeleri .sentinel dosyalarında tanımlanır. Genellikle içe aktarmalar, kurallar ve bir ana koşul içerir. main kuralı, ilkenin başarılı ya da başarısız sonucunu belirler.

Basit bir ilke şu şekilde görünebilir:

import "tfplan"

main = rule {
  tfplan.resource_changes is empty
}

Terraform Plan Verilerine Erişme

tfplan içe aktarması, Terraform yürütme planının yapılandırılmış bir görünümünü sağlar. İlkeler bu verileri şunları incelemek için kullanır:

  • tfplan.resource_changes: Oluşturulan, güncellenen veya silinen kaynakların ayrıntıları.
  • tfplan.variables: Yapılandırmaya sağlanan giriş değişkenleri.
  • tfplan.outputs: Yapılandırmadan alınan çıkış değerleri.

Bu veriler, Terraform'un ne yapmayı amaçladığına dayanarak bilinçli ilke kararları almak için kritik öneme sahiptir.

Örnek: Onaylanmayan Bölgeleri Reddetme

Tüm AWS kaynaklarının yalnızca us-east-1 bölgesinde dağıtılmasını sağlamak için bir Sentinel ilkesi yazalım. Bu ilke, plandaki her AWS kaynağı için yapılandırılan bölgeyi denetler.

import "tfplan/v2" as tfplan

allowed_regions = ["us-east-1"]

is_region_allowed = func(resource_change) {
  if resource_change.provider.name is "aws" {
    region = resource_change.provider.config.region else "us-east-1"
    return region in allowed_regions
  }
  return true # Not an AWS resource, allow
}

all_regions_compliant = all tfplan.resource_changes as _, rc {
  is_region_allowed(rc)
}

main = rule {
  all_regions_compliant
}

İlke İşlevleri ve İşleçleri

Sentinel, karmaşık mantık için güçlü yerleşik işlevler ve işleçler sağlar:

  • Koleksiyon İşlevleri: Listeler ve eşlemeler üzerinde yineleme yapmak için all, any, filter, map.
  • Tür İşlevleri: Veri türlerini denetlemek için is, type_of.
  • İşleçler: Mantıksal (and, or, not) ve karşılaştırma (==, !=, >, <) işleçleri.

Bunlar, çeşitli senaryoları kapsayan sağlam ve ifade gücü yüksek ilkeler oluşturmanıza yardımcı olur.

Örnek: Gerekli Etiketleri Zorunlu Kılma

Yaygın bir yönetişim gereksinimi, maliyet dağıtımı veya tanımlama amacıyla kaynaklarda belirli etiketleri zorunlu kılmaktır. Bu ilke, tüm yeni veya güncellenmiş aws_instance kaynaklarının bir Project etiketine sahip olmasını sağlar.

import "tfplan/v2" as tfplan

required_tags = ["Project"]

resource_has_required_tags = func(resource_change) {
  if resource_change.type is "aws_instance" {
    # Check if 'tags' attribute exists in the planned state
    if not ("tags" in resource_change.change.after) {
      return false
    }
    
    missing_tags = filter required_tags as tag {
      not (tag in resource_change.change.after.tags)
    }
    return missing_tags is empty
  }
  return true # Not an aws_instance, allow
}

all_instances_tagged = all tfplan.resource_changes as _, rc {
  (rc.change.actions contains "create" or rc.change.actions contains "update") ?
    resource_has_required_tags(rc) :
    true # Only check on create/update actions
}

main = rule {
  all_instances_tagged
}

Yerel İlke Sınaması

İlkeleri Terraform Cloud/Enterprise'a dağıtmadan önce Sentinel CLI'yi kullanarak bunları yerel olarak sınayabilirsiniz. sentinel test komutu, sahte tfplan verileriyle sınama durumları tanımlamanıza olanak tanır. Bu, canlı ortamları etkilemeden ilkelerin beklediğiniz gibi çalıştığını doğrulamanıza ve hataları erkenden yakalamanıza yardımcı olur.

İlke Mantığı Denetimi

Herhangi bir AWS S3 paketinin genel okuma erişimiyle oluşturulmasını önleyen bir Sentinel ilkesi oluşturmanız gerekiyor. Bunu uygulamak için tfplan verilerinin hangi belirli bölümünü öncelikle incelersiniz?

Özet: Sentinel ile Yönetişim

Yönetişim için güçlü bir kod olarak ilke çerçevesi olan HashiCorp Sentinel'i inceledik:

  • Kuralları uygulamak için Terraform Cloud/Enterprise ile bütünleşir.
  • İlkeler, altyapı uygulanmadan önce tfplan'ı değerlendirir.
  • Farklı uygulama düzeyleri (danışma, yumuşak, kesin), ilkenin etkisini denetler.
  • Bölgeleri reddetmek, etiketleri zorunlu kılmak ve çok daha fazlası için ilkeler yazabilirsiniz.
  • Yerel sınama, dağıtımdan önce ilkelerin beklenen şekilde çalışmasını sağlar.

Sentinel, altyapı dağıtımlarınız genelinde uyumluluk, güvenlik ve işletim standartlarını korumak için kilit öneme sahiptir.

Başlamak ücretsiz

Yapay zeka eğitmeniyle DevOps Bootcamp öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
142
Dersler
568

Sıkça Sorulan Sorular

“Yönetişim için Sentinel Politikaları” dersi ücretsiz mi?

Evet — “Yönetişim için Sentinel Politikaları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp kursu toplamda 4 dersten oluşur.

“Yönetişim için Sentinel Politikaları” dersinde ne öğreneceğim?

Terraform dağıtımlarınız genelinde uyumluluk ve yönetişim sağlamak için HashiCorp Sentinel kullanarak politika olarak kod yazmayı ve uygulamayı öğrenin. DevOps Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Yönetişim için Sentinel Politikaları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her DevOps Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Çoklu Bulut ve Hibrit Bulut Örüntüleri
  2. Yönetişim için Sentinel Politikaları
  3. Terraform Cloud ve Enterprise
  4. Özel Sağlayıcılar Oluşturma
← DevOps Bootcamp Sayfasına Dön