Snabbstart: Skapa en Azure-attesteringsprovider med terraform
Microsoft Azure Attestation är en lösning för attestera betrodda körningsmiljöer (TEE). Den här snabbstarten fokuserar på processen att skapa en Microsoft Azure Attestation-princip med Terraform.
I den här artikeln kan du se hur du:
- Skapa ett slumpmässigt värde för Azure-resursgruppens namn med hjälp av random_pet.
- Skapa en Azure-resursgrupp med hjälp av azurerm_resource_group.
- Skapa en Azure Attestation-provider med hjälp av azurerm_attestation_provider.
Förutsättningar
Certifikat för principsignering: Du måste ladda upp ett X.509-certifikat som används av attesteringsprovidern för att verifiera signerade principer. Det här certifikatet är antingen signerat av en certifikatutfärdare eller självsignerat. Filnamnstillägg som stöds är
pem
,txt
ochcer
. Den här artikeln förutsätter att du redan har ett giltigt X.509-certifikat.
Implementera Terraform-koden
Kommentar
Exempelkoden för den här artikeln finns på Azure Terraform GitHub-lagringsplatsen. Du kan visa loggfilen som innehåller testresultaten från aktuella och tidigare versioner av Terraform.
Se fler artiklar och exempelkod som visar hur du använder Terraform för att hantera Azure-resurser
Skapa en katalog där du kan testa Terraform-exempelkoden och göra den till den aktuella katalogen.
Skapa en fil med namnet
providers.tf
och infoga följande kod: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 {} }
Skapa en fil med namnet
main.tf
och infoga följande kod: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", ] } }
Skapa en fil med namnet
variables.tf
och infoga följande kod: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." }
Viktiga punkter:
- Justera fältet
policy_file
efter behov för att peka på PEM-filen.
- Justera fältet
Skapa en fil med namnet
outputs.tf
och infoga följande kod:output "resource_group_name" { value = azurerm_resource_group.rg.name }
Initiera Terraform
Kör terraform init för att initiera Terraform-distributionen. Det här kommandot laddar ned den Azure-provider som krävs för att hantera dina Azure-resurser.
terraform init -upgrade
Viktiga punkter:
- Parametern
-upgrade
uppgraderar nödvändiga provider-plugin-program till den senaste versionen som uppfyller konfigurationens versionsbegränsningar.
Skapa en Terraform-körningsplan
Kör terraform-planen för att skapa en körningsplan.
terraform plan -out main.tfplan
Viktiga punkter:
- Kommandot
terraform plan
skapar en körningsplan, men kör den inte. I stället avgör den vilka åtgärder som krävs för att skapa den konfiguration som anges i konfigurationsfilerna. Med det här mönstret kan du kontrollera om körningsplanen matchar dina förväntningar innan du gör några ändringar i faktiska resurser. - Med den valfria
-out
parametern kan du ange en utdatafil för planen. Med hjälp av parametern-out
ser du till att planen du granskade är exakt vad som tillämpas.
Tillämpa en Terraform-körningsplan
Kör terraform gäller för att tillämpa körningsplanen på din molninfrastruktur.
terraform apply main.tfplan
Viktiga punkter:
terraform apply
Exempelkommandot förutsätter att du tidigare kördeterraform plan -out main.tfplan
.- Om du har angett ett annat filnamn för parametern
-out
använder du samma filnamn i anropet tillterraform apply
. - Om du inte använde parametern
-out
anroparterraform apply
du utan några parametrar.
6. Kontrollera resultatet
Hämta namnet på Azure-resursgruppen.
resource_group_name=$(terraform output -raw resource_group_name)
Kör az attestation list för att lista leverantörerna för det angivna resursgruppsnamnet.
az attestation list --resource-group $resource_group_name
Rensa resurser
Gör följande när du inte längre behöver de resurser som skapats via Terraform:
Kör terraform-plan och ange
destroy
flaggan.terraform plan -destroy -out main.destroy.tfplan
Viktiga punkter:
- Kommandot
terraform plan
skapar en körningsplan, men kör den inte. I stället avgör den vilka åtgärder som krävs för att skapa den konfiguration som anges i konfigurationsfilerna. Med det här mönstret kan du kontrollera om körningsplanen matchar dina förväntningar innan du gör några ändringar i faktiska resurser. - Med den valfria
-out
parametern kan du ange en utdatafil för planen. Med hjälp av parametern-out
ser du till att planen du granskade är exakt vad som tillämpas.
- Kommandot
Kör terraform tillämpa för att tillämpa körningsplanen.
terraform apply main.destroy.tfplan
Felsöka Terraform i Azure
Felsöka vanliga problem när du använder Terraform i Azure