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,mapdo iterowania po listach i mapach. - Funkcje typów:
is,type_ofdo 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ą
tfplanprzed 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
- Wzorce środowisk wielochmurowych i hybrydowych
- Zasady Sentinel na potrzeby zarządzania
- Terraform Cloud i Enterprise
- Tworzenie własnych providerów