Policy Sentinel per la governance
Impari a scrivere e applicare policy-as-code con HashiCorp Sentinel per garantire conformità e governance in tutti i deployment Terraform.
Policy Sentinel per la governance è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.
Introduzione a Policy-as-Code e Sentinel
E se potesse garantire automaticamente che le distribuzioni dell’infrastruttura rispettino determinate regole? Questo è il potere di Policy-as-Code (PaC). PaC definisce in modo programmabile le regole per la creazione e la modifica dell’infrastruttura, integrando la governance nel flusso di sviluppo. HashiCorp Sentinel è un potente framework PaC progettato proprio per questo scopo.
Il ruolo di Sentinel con Terraform
Sentinel si integra direttamente con Terraform Cloud e Terraform Enterprise. Agisce da controllore, valutando il piano di esecuzione di Terraform prima che vengano applicate modifiche all’ambiente cloud. Questo passaggio fondamentale impedisce che venga effettuato il provisioning di infrastrutture non conformi o non sicure, applicando le regole in modo proattivo.
Policy e livelli di applicazione
Una policy Sentinel è un insieme di regole scritte nel linguaggio Sentinel. Quando una policy viene attivata, restituisce true (superata) oppure false (non superata). Le policy possono essere configurate con diversi livelli di applicazione:
- Advisory: segnala le violazioni, ma consente all’operazione di procedere.
- Soft-Mandatory: richiede una sostituzione esplicita per procedere con modifiche non conformi.
- Hard-Mandatory: blocca completamente le operazioni non conformi e richiede il rispetto della policy.
Struttura di una policy Sentinel
Le policy Sentinel sono definite in file .sentinel. In genere includono importazioni, regole e una condizione principale. La regola main determina l’esito positivo o negativo della policy.
Una policy di base potrebbe essere simile alla seguente:
import "tfplan"
main = rule {
tfplan.resource_changes is empty
}Accesso ai dati del piano Terraform
L’importazione tfplan fornisce una visualizzazione strutturata del piano di esecuzione Terraform. Le policy utilizzano questi dati per esaminare:
tfplan.resource_changes: dettagli sulle risorse da creare, aggiornare o eliminare.tfplan.variables: variabili di input fornite alla configurazione.tfplan.outputs: valori di output della configurazione.
Questi dati sono fondamentali per prendere decisioni informate sulle policy, basate su ciò che Terraform intende fare.
Esempio: negare le regioni non approvate
Scriviamo una policy Sentinel per garantire che tutte le risorse AWS vengano distribuite esclusivamente in us-east-1. Questa policy verifica la regione configurata per ogni risorsa AWS nel piano.
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
}Funzioni e operatori delle policy
Sentinel offre potenti funzioni e operatori integrati per gestire logiche complesse:
- Funzioni per raccolte:
all,any,filter,mapper iterare su liste e mappe. - Funzioni per i tipi:
is,type_ofper verificare i tipi di dati. - Operatori: logici (
and,or,not) e di confronto (==,!=,>,<).
Questi elementi consentono di creare policy solide ed espressive, in grado di coprire diversi scenari.
Esempio: applicare i tag obbligatori
Un requisito comune di governance consiste nell’applicare tag specifici alle risorse per l’allocazione dei costi o l’identificazione. Questa policy garantisce che tutte le risorse aws_instance nuove o aggiornate abbiano un 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
}Test locale delle policy
Prima di distribuire le policy in Terraform Cloud/Enterprise, può testarle localmente utilizzando la CLI di Sentinel. Il comando sentinel test consente di definire casi di test con dati tfplan simulati. Questo permette di verificare il comportamento delle policy e individuare tempestivamente gli errori, assicurando che funzionino come previsto senza influire sugli ambienti in produzione.
Verifica della logica della policy
Deve creare una policy Sentinel che impedisca la creazione di qualsiasi bucket AWS S3 con accesso pubblico in lettura. Quale parte specifica dei dati di tfplan dovrebbe esaminare principalmente per applicare questa regola?
Riepilogo: governance con Sentinel
Abbiamo esaminato HashiCorp Sentinel, un potente framework policy-as-code per la governance:
- Si integra con Terraform Cloud/Enterprise per applicare le regole.
- Le policy valutano
tfplanprima che l’infrastruttura venga applicata. - Diversi livelli di applicazione (advisory, soft, hard) controllano l’impatto delle policy.
- È possibile scrivere policy per negare regioni, applicare tag e molto altro.
- I test locali verificano che le policy funzionino come previsto prima della distribuzione.
Sentinel è fondamentale per mantenere la conformità, la sicurezza e gli standard operativi nelle distribuzioni dell’infrastruttura.
Domande Frequenti
La lezione «Policy Sentinel per la governance» è gratuita?
Sì — il testo completo di «Policy Sentinel per la governance» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.
Cosa imparerò in «Policy Sentinel per la governance»?
Impari a scrivere e applicare policy-as-code con HashiCorp Sentinel per garantire conformità e governance in tutti i deployment Terraform. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare DevOps Bootcamp?
Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Policy Sentinel per la governance»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?
Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Pattern multi-cloud e hybrid cloud
- Policy Sentinel per la governance
- Terraform Cloud ed Enterprise
- Creare provider personalizzati