Políticas do Sentinel para governança
Aprenda a escrever e aplicar políticas como código usando o HashiCorp Sentinel para garantir conformidade e governança em suas implantações do Terraform.
Políticas do Sentinel para governança é uma aula grátis de Terraform Infrastructure as Code no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Terraform Infrastructure as Code, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Terraform Infrastructure as Code inclui 4 aulas no total.
Introdução à política como código e ao Sentinel
E se você pudesse garantir automaticamente que suas implantações de infraestrutura atendam a determinadas regras? Esse é o poder da Política como código (PaC). A PaC define regras para a criação e a modificação da infraestrutura de forma programável, incorporando a governança ao seu fluxo de desenvolvimento. O HashiCorp Sentinel é uma estrutura avançada de PaC criada para essa finalidade.
O papel do Sentinel com o Terraform
O Sentinel integra-se diretamente ao Terraform Cloud e ao Terraform Enterprise. Ele atua como um guardião, avaliando o plano de execução do Terraform antes que qualquer alteração seja aplicada ao seu ambiente de nuvem. Essa etapa crucial impede que uma infraestrutura não compatível ou insegura seja provisionada, aplicando as regras de forma proativa.
Políticas e níveis de aplicação
Uma política do Sentinel é um conjunto de regras escritas na linguagem Sentinel. Quando uma política é acionada, ela retorna true (aprovada) ou false (reprovada). As políticas podem ser configuradas com diferentes níveis de aplicação:
- Consultivo: emite um aviso sobre violações, mas permite que a operação continue.
- Obrigatório flexível: exige uma substituição explícita para permitir o prosseguimento com alterações não compatíveis.
- Obrigatório rígido: bloqueia completamente as operações não compatíveis, exigindo o cumprimento da política.
Estrutura de uma política do Sentinel
As políticas do Sentinel são definidas em .sentinel. Elas normalmente incluem importações, regras e uma condição principal. A regra main determina o resultado de aprovação ou reprovação da política.
Uma política básica poderia ser assim:
import "tfplan"
main = rule {
tfplan.resource_changes is empty
}Acessando os dados do plano do Terraform
A importação tfplan fornece uma visão estruturada do plano de execução do Terraform. As políticas usam esses dados para inspecionar:
tfplan.resource_changes: detalhes sobre os recursos que estão sendo criados, atualizados ou excluídos.tfplan.variables: variáveis de entrada fornecidas à configuração.tfplan.outputs: valores de saída da configuração.
Esses dados são essenciais para tomar decisões de política fundamentadas no que o Terraform pretende fazer.
Exemplo: rejeitando regiões não aprovadas
Vamos escrever uma política do Sentinel para garantir que todos os recursos AWS sejam implantados somente em us-east-1. Essa política verifica a região configurada para cada recurso AWS no plano.
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
}Funções e operadores de políticas
O Sentinel fornece funções e operadores integrados avançados para lógica complexa:
- Funções de coleção:
all,any,filter,mappara iterar sobre listas e mapas. - Funções de tipo:
is,type_ofpara verificar tipos de dados. - Operadores: lógicos (
and,or,not) e de comparação (==,!=,>,<).
Eles ajudam você a criar políticas robustas e expressivas para abranger vários cenários.
Exemplo: aplicando etiquetas obrigatórias
Um requisito comum de governança é aplicar etiquetas específicas aos recursos para alocação de custos ou identificação. Essa política garante que todos os recursos aws_instance novos ou atualizados tenham uma etiqueta 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
}Teste local de políticas
Antes de implantar políticas no Terraform Cloud/Enterprise, você pode testá-las localmente usando o CLI do Sentinel. O comando sentinel test permite definir casos de teste com dados simulados de tfplan. Isso ajuda você a verificar o comportamento das políticas e detectar erros antecipadamente, garantindo que elas funcionem conforme o esperado sem afetar ambientes em produção.
Verificação da lógica da política
Você precisa criar uma política do Sentinel que impeça a criação de qualquer bucket S3 da AWS com acesso público de leitura. Qual parte específica dos dados de tfplan você inspecionaria principalmente para aplicar essa regra?
Revisão: governança com o Sentinel
Exploramos o HashiCorp Sentinel, uma estrutura avançada de política como código para governança:
- Ele integra-se ao Terraform Cloud/Enterprise para aplicar regras.
- As políticas avaliam o
tfplanantes que a infraestrutura seja aplicada. - Diferentes níveis de aplicação (consultivo, flexível e rígido) controlam o impacto das políticas.
- Você pode escrever políticas para rejeitar regiões, exigir etiquetas e muito mais.
- Os testes locais garantem que as políticas funcionem conforme o esperado antes da implantação.
O Sentinel é essencial para manter a conformidade, a segurança e os padrões operacionais em todas as implantações da sua infraestrutura.
Perguntas Frequentes
A aula “Políticas do Sentinel para governança” é grátis?
Sim — o texto completo de “Políticas do Sentinel para governança” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Terraform Infrastructure as Code, atualize para CoddyKit PRO. O curso de Terraform Infrastructure as Code inclui 4 aulas no total.
O que vou aprender em “Políticas do Sentinel para governança”?
Aprenda a escrever e aplicar políticas como código usando o HashiCorp Sentinel para garantir conformidade e governança em suas implantações do Terraform. Você pratica Terraform Infrastructure as Code com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Terraform Infrastructure as Code?
Nenhuma experiência prévia é necessária. Terraform Infrastructure as Code no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Políticas do Sentinel para governança”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Terraform Infrastructure as Code?
Sim. Cada aula de Terraform Infrastructure as Code inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Padrões de múltiplas nuvens e nuvem híbrida
- Políticas do Sentinel para governança
- Terraform Cloud e Enterprise
- Criando provedores personalizados