Guia de início rápido: criar um provedor de atestado do Azure usando o Terraform
O Atestado do Microsoft Azure é uma solução para atestar Ambientes de Execução Confiáveis (TEEs). Este guia de início rápido se concentra no processo de criação de uma política de Atestado do Microsoft Azure usando o Terraform.
Neste artigo, vai aprender a:
- Crie um valor aleatório para o nome do grupo de recursos do Azure usando random_pet.
- Crie um grupo de recursos do Azure usando azurerm_resource_group.
- Crie um provedor de Atestado do Azure usando azurerm_attestation_provider.
Pré-requisitos
Certificado de assinatura de política: você precisa carregar um certificado X.509, que é usado pelo provedor de atestado para validar políticas assinadas. Este certificado é assinado por uma autoridade de certificação ou autoassinado. As extensões de ficheiro suportadas incluem
pem
,txt
ecer
. Este artigo pressupõe que você já tenha um certificado X.509 válido.
Implementar o código Terraform
Nota
O código de exemplo para este artigo está localizado no repositório GitHub do Azure Terraform. Você pode visualizar o arquivo de log que contém os resultados do teste das versões atual e anterior do Terraform.
Veja mais artigos e código de exemplo mostrando como usar o Terraform para gerenciar recursos do Azure
Crie um diretório no qual testar o código Terraform de exemplo e torná-lo o diretório atual.
Crie um arquivo chamado
providers.tf
e insira o seguinte código:terraform { required_version = ">=0.12" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } tls = { source = "hashicorp/tls" version = "4.0.4" } } } provider "azurerm" { features {} }
Crie um arquivo chamado
main.tf
e insira o seguinte código:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } locals { create_signing_cert = try(!fileexists(var.cert_path), true) } resource "tls_private_key" "signing_cert" { count = local.create_signing_cert ? 1 : 0 algorithm = "RSA" rsa_bits = 4096 } resource "tls_self_signed_cert" "attestation" { count = local.create_signing_cert ? 1 : 0 private_key_pem = tls_private_key.signing_cert[0].private_key_pem validity_period_hours = 12 allowed_uses = [ "cert_signing", ] } resource "random_string" "attestation_suffix" { length = 8 numeric = false special = false upper = false } resource "azurerm_attestation_provider" "corp_attestation" { location = azurerm_resource_group.rg.location name = "${var.attestation_provider_name}${random_string.attestation_suffix.result}" resource_group_name = azurerm_resource_group.rg.name policy_signing_certificate_data = try(tls_self_signed_cert.attestation[0].cert_pem, file(var.cert_path)) #https://github.com/hashicorp/terraform-provider-azurerm/issues/21998#issuecomment-1573312297 lifecycle { ignore_changes = [ "open_enclave_policy_base64", "sev_snp_policy_base64", "sgx_enclave_policy_base64", "tpm_policy_base64", ] } }
Crie um arquivo chamado
variables.tf
e insira o seguinte código:variable "attestation_provider_name" { default = "attestation" } variable "cert_path" { default = "~/.certs/cert.pem" } variable "resource_group_location" { default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." }
Pontos principais:
- Ajuste o campo conforme necessário para apontar para o
policy_file
seu arquivo PEM.
- Ajuste o campo conforme necessário para apontar para o
Crie um arquivo chamado
outputs.tf
e insira o seguinte código:output "resource_group_name" { value = azurerm_resource_group.rg.name }
Inicializar o Terraform
Execute terraform init para inicializar a implantação do Terraform. Este comando baixa o provedor do Azure necessário para gerenciar seus recursos do Azure.
terraform init -upgrade
Pontos principais:
- O
-upgrade
parâmetro atualiza os plug-ins de provedor necessários para a versão mais recente que está em conformidade com as restrições de versão da configuração.
Criar um plano de execução do Terraform
Execute o plano de terraforma para criar um plano de execução.
terraform plan -out main.tfplan
Pontos principais:
- O
terraform plan
comando cria um plano de execução, mas não o executa. Em vez disso, ele determina quais ações são necessárias para criar a configuração especificada em seus arquivos de configuração. Esse padrão permite que você verifique se o plano de execução corresponde às suas expectativas antes de fazer quaisquer alterações nos recursos reais. - O parâmetro opcional
-out
permite especificar um arquivo de saída para o plano. O uso do-out
parâmetro garante que o plano revisado seja exatamente o que é aplicado.
Aplicar um plano de execução Terraform
Execute terraform apply para aplicar o plano de execução à sua infraestrutura de nuvem.
terraform apply main.tfplan
Pontos principais:
- O comando de exemplo
terraform apply
pressupõe que você executouterraform plan -out main.tfplan
anteriormente o . - Se você especificou um nome de arquivo diferente para o
-out
parâmetro, use esse mesmo nome de arquivo na chamada paraterraform apply
. - Se você não usou o
-out
parâmetro, ligueterraform apply
sem nenhum parâmetro.
6. Verificar os resultados
Obtenha o nome do grupo de recursos do Azure.
resource_group_name=$(terraform output -raw resource_group_name)
Execute az attestation list para listar os provedores para o nome do grupo de recursos especificado.
az attestation list --resource-group $resource_group_name
Clean up resources (Limpar recursos)
Quando você não precisar mais dos recursos criados via Terraform, execute as seguintes etapas:
Execute o plano de terraforma e especifique o
destroy
sinalizador.terraform plan -destroy -out main.destroy.tfplan
Pontos principais:
- O
terraform plan
comando cria um plano de execução, mas não o executa. Em vez disso, ele determina quais ações são necessárias para criar a configuração especificada em seus arquivos de configuração. Esse padrão permite que você verifique se o plano de execução corresponde às suas expectativas antes de fazer quaisquer alterações nos recursos reais. - O parâmetro opcional
-out
permite especificar um arquivo de saída para o plano. O uso do-out
parâmetro garante que o plano revisado seja exatamente o que é aplicado.
- O
Execute terraform apply para aplicar o plano de execução.
terraform apply main.destroy.tfplan
Solucionar problemas do Terraform no Azure
Solucionar problemas comuns ao usar o Terraform no Azure
Próximos passos
Visão geral do Atestado do Azure.