0Pricing
Terraform Infrastructure as Code · Lekcja

Zasady Sentinel na potrzeby zarządzania

Dowiedz się, jak pisać i egzekwować zasady jako kod za pomocą HashiCorp Sentinel, aby zapewnić zgodność i nadzór nad wdrożeniami Terraform.

Zasady Sentinel na potrzeby zarządzania to bezpłatna lekcja Terraform Infrastructure as Code na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Terraform Infrastructure as Code, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Terraform Infrastructure as Code zawiera 4 lekcji w sumie.

Wprowadzenie do zasad jako kodu i Sentinel

Co by było, gdyby można było automatycznie zagwarantować, że wdrożenia infrastruktury spełniają określone reguły? Na tym polega siła zasad jako kodu (PaC). PaC definiuje w programowalny sposób reguły tworzenia i modyfikowania infrastruktury, wprowadzając zarządzanie zgodnością do procesu tworzenia oprogramowania. HashiCorp Sentinel to zaawansowany system PaC zaprojektowany do tego celu.

Rola Sentinel w Terraform

Sentinel integruje się bezpośrednio z Terraform Cloud i Terraform Enterprise. Działa jak strażnik, oceniając plan wykonania Terraform przed zastosowaniem jakichkolwiek zmian w środowisku chmurowym. Ten kluczowy etap zapobiega udostępnieniu infrastruktury niespełniającej wymagań lub niezabezpieczonej, proaktywnie wymuszając przestrzeganie reguł.

Zasady i poziomy egzekwowania

Zasada Sentinel to zestaw reguł zapisanych w języku Sentinel. Po wywołaniu zasada zwraca wartość true (zaliczenie) lub false (niepowodzenie). Zasady można skonfigurować z różnymi poziomami egzekwowania:

  • Advisory: Ostrzega o naruszeniach, ale pozwala kontynuować operację.
  • Soft-Mandatory: Wymaga jawnego zastąpienia zasady, aby można było kontynuować operację obejmującą zmiany niezgodne z wymaganiami.
  • Hard-Mandatory: Całkowicie blokuje operacje niezgodne z wymaganiami i wymaga przestrzegania zasad.

Struktura zasady Sentinel

Zasady Sentinel definiuje się w plikach .sentinel. Zazwyczaj zawierają one importy, reguły i warunek główny. Reguła main określa wynik zasady: zaliczenie lub niepowodzenie.

Podstawowa zasada może wyglądać tak:

import "tfplan"

main = rule {
  tfplan.resource_changes is empty
}

Uzyskiwanie dostępu do danych planu Terraform

Import tfplan udostępnia ustrukturyzowany widok planu wykonania Terraform. Zasady używają tych danych do sprawdzania:

  • tfplan.resource_changes: Szczegółów dotyczących zasobów tworzonych, aktualizowanych lub usuwanych.
  • tfplan.variables: Zmiennych wejściowych przekazanych do konfiguracji.
  • tfplan.outputs: Wartości wyjściowych z konfiguracji.

Dane te mają kluczowe znaczenie przy podejmowaniu świadomych decyzji dotyczących zasad na podstawie tego, co Terraform zamierza zrobić.

Przykład: odrzucanie niezatwierdzonych regionów

Napiszmy zasadę Sentinel, która zagwarantuje, że wszystkie zasoby AWS będą wdrażane wyłącznie w regionie us-east-1. Ta zasada sprawdza region skonfigurowany dla każdego zasobu AWS w planie.

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
}

Funkcje i operatory zasad

Sentinel udostępnia zaawansowane wbudowane funkcje i operatory na potrzeby złożonej logiki:

  • Funkcje kolekcji: all, any, filter, map do iterowania po listach i mapach.
  • Funkcje typów: is, type_of do sprawdzania typów danych.
  • Operatory: logiczne (and, or, not) oraz porównania (==, !=, >, <).

Pomagają one tworzyć solidne i wyraziste zasady obejmujące różne scenariusze.

Przykład: wymuszanie wymaganych tagów

Częstym wymaganiem w zakresie zarządzania jest wymuszenie określonych tagów na zasobach w celu alokacji kosztów lub identyfikacji. Ta zasada gwarantuje, że wszystkie nowe lub zaktualizowane zasoby aws_instance mają tag Project.

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
}

Lokalne testowanie zasad

Przed wdrożeniem zasad w Terraform Cloud/Enterprise możesz testować je lokalnie za pomocą interfejsu wiersza poleceń Sentinel. Polecenie sentinel test umożliwia definiowanie przypadków testowych z użyciem pozorowanych danych tfplan. Pozwala to zweryfikować działanie zasad i wcześnie wykryć błędy, dzięki czemu można upewnić się, że zasady działają zgodnie z założeniami bez wpływania na działające środowiska.

Sprawdzanie logiki zasady

Musisz utworzyć zasadę Sentinel, która uniemożliwi tworzenie dowolnego zasobnika AWS S3 z publicznym dostępem do odczytu. Którą konkretną część danych tfplan należy przede wszystkim sprawdzić, aby to wymusić?

Podsumowanie: zarządzanie za pomocą Sentinel

Omówiliśmy HashiCorp Sentinel, zaawansowany system zasad jako kodu do zarządzania:

  • Integruje się z Terraform Cloud/Enterprise w celu egzekwowania reguł.
  • Zasady oceniają tfplan przed zastosowaniem infrastruktury.
  • Różne poziomy egzekwowania (advisory, soft, hard) kontrolują wpływ zasad.
  • Możesz pisać zasady odrzucające określone regiony, wymuszające tagi i wiele więcej.
  • Testowanie lokalne pozwala upewnić się przed wdrożeniem, że zasady działają zgodnie z założeniami.

Sentinel ma kluczowe znaczenie dla utrzymania zgodności, bezpieczeństwa i standardów operacyjnych we wszystkich wdrożeniach infrastruktury.

Często zadawane pytania

Czy lekcja „Zasady Sentinel na potrzeby zarządzania” jest bezpłatna?

Tak — pełny tekst „Zasady Sentinel na potrzeby zarządzania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Terraform Infrastructure as Code, przejdź na CoddyKit PRO. Kurs Terraform Infrastructure as Code zawiera 4 lekcji w sumie.

Co nauczysz się w „Zasady Sentinel na potrzeby zarządzania”?

Dowiedz się, jak pisać i egzekwować zasady jako kod za pomocą HashiCorp Sentinel, aby zapewnić zgodność i nadzór nad wdrożeniami Terraform. Ćwiczysz Terraform Infrastructure as Code z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Terraform Infrastructure as Code?

Nie wymagamy żadnego doświadczenia. Terraform Infrastructure as Code w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Zasady Sentinel na potrzeby zarządzania”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Terraform Infrastructure as Code?

Tak. Każda lekcja Terraform Infrastructure as Code zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wzorce środowisk wielochmurowych i hybrydowych
  2. Zasady Sentinel na potrzeby zarządzania
  3. Terraform Cloud i Enterprise
  4. Tworzenie własnych providerów
← Powrót do Terraform Infrastructure as Code