Rychlý start: Vytvoření přiřazení zásad k identifikaci nevyhovujících prostředků pomocí Terraformu
Prvním krokem k porozumění dodržování předpisů v Azure je zjištění stavu vašich prostředků. Tento rychlý start vás provede procesem vytvoření přiřazení zásady pro identifikaci virtuálních počítačů, které nepoužívají spravované disky.
Na konci tohoto procesu identifikujete virtuální počítače, které nepoužívají spravované disky v rámci předplatného. Neodpovídají přiřazení zásad.
Při přiřazování předdefinované zásady nebo definice iniciativy je volitelné odkazovat na verzi. Přiřazení zásad předdefinovaných definic jsou výchozí pro nejnovější verzi a automaticky dědí změny podverze, pokud není uvedeno jinak.
Požadavky
- Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
- Terraform verze 0.12.0 nebo vyšší nakonfigurovaná ve vašem prostředí. Pokyny najdete v tématu Konfigurace Terraformu pomocí Azure Cloud Shellu.
- Tento rychlý start vyžaduje, abyste spustili Azure CLI verze 2.13.0 nebo novější. Verzi zjistíte spuštěním příkazu
az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Vytvoření konfigurace, proměnné a výstupního souboru Terraformu
V tomto rychlém startu vytvoříte přiřazení zásady a přiřadíte definici Auditovat virtuální počítače, které nepoužívají spravované disky. Tato definice zásady identifikuje prostředky, které nevyhovují podmínkám nastaveným v definici zásady.
Nakonfigurujte konfiguraci, proměnnou a výstupní soubory Terraformu. Prostředky Terraformu pro Azure Policy používají poskytovatele Azure.
Vytvořte novou složku s názvem
policy-assignment
a změňte do ní adresáře.Vytvořte
main.tf
pomocí následujícího kódu:Poznámka:
Pokud chcete vytvořit přiřazení zásad ve skupině pro správu, použijte pro skupinu prostředků azurerm_management_group_policy_assignment prostředek azurerm_resource_group_policy_assignment a pro předplatné použijte prostředek azurerm_subscription_policy_assignment.
provider "azurerm" { features {} } terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 2.96.0" } } } resource "azurerm_subscription_policy_assignment" "auditvms" { name = "audit-vm-manageddisks" subscription_id = var.cust_scope policy_definition_id = "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d" description = "Shows all virtual machines not using managed disks" display_name = "Audit VMs without managed disks assignment" }
Vytvořte
variables.tf
pomocí následujícího kódu:variable "cust_scope" { default = "{scope}" }
Obor určuje, pro které prostředky nebo seskupení prostředků se toto přiřazení zásady bude vynucovat. Může se lišit od skupiny pro správu až po jednotlivé prostředky. Nezapomeňte nahradit
{scope}
jedním z následujících vzorů na základě deklarovaného prostředku:- Předplatné:
/subscriptions/{subscriptionId}
- Skupina prostředků:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
- Prostředek:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Předplatné:
Vytvořte
output.tf
pomocí následujícího kódu:output "assignment_id" { value = azurerm_subscription_policy_assignment.auditvms.id }
Inicializace Terraformu a vytvoření plánu
Inicializace Terraformu, aby si stáhla potřebné poskytovatele, a pak vytvořte plán.
Spusťte příkaz init terraformu. Tento příkaz stáhne moduly Azure potřebné k vytvoření prostředků Azure v konfiguraci Terraformu.
terraform init
Ověřování pomocí Azure CLI pro Terraform Další informace najdete v tématu Poskytovatel Azure: Ověřování pomocí Azure CLI.
az login
Vytvořte plán provádění pomocí příkazu terraform plan a parametru out .
terraform plan -out assignment.tfplan
Poznámka:
Informace o zachování plánů provádění a zabezpečení najdete v tématu Terraform Plan: Upozornění zabezpečení.
Použití plánu provádění Terraformu
Použijte plán provádění.
Spusťte příkaz terraform apply a zadejte assignment.tfplan
již vytvořený příkaz.
terraform apply assignment.tfplan
Se zprávou Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
se teď vytvoří přiřazení zásady. Vzhledem k tomu, že jsme soubor definovali outputs.tf
, vrátí se také assignment_id .
Zjištění nevyhovujících prostředků
Pokud chcete zobrazit prostředky, které nedodržují předpisy v rámci tohoto nového přiřazení, použijte assignment_id vrácené terraform apply
. Spuštěním následujícího příkazu získejte ID prostředků prostředků, které nedodržují předpisy, které jsou výstupem do souboru JSON:
armclient post "/subscriptions/<subscriptionID>/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$filter=IsCompliant eq false and PolicyAssignmentId eq '<policyAssignmentID>'&$apply=groupby((ResourceId))" > <json file to direct the output with the resource IDs into>
Vaše výsledky budou vypadat přibližně jako v následujícím příkladu:
{
"@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
"@odata.count": 3,
"value": [
{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"ResourceId": "/subscriptions/<subscriptionId>/resourcegroups/<rgname>/providers/microsoft.compute/virtualmachines/<virtualmachineId>"
},
{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"ResourceId": "/subscriptions/<subscriptionId>/resourcegroups/<rgname>/providers/microsoft.compute/virtualmachines/<virtualmachine2Id>"
},
{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"ResourceId": "/subscriptions/<subscriptionName>/resourcegroups/<rgname>/providers/microsoft.compute/virtualmachines/<virtualmachine3ID>"
}
]
}
Tyto výsledky jsou srovnatelné s tím, co se obvykle zobrazuje v části Nekompatibilní prostředky v zobrazení na webu Azure Portal.
Vyčištění prostředků
Pokud chcete odebrat vytvořené přiřazení, použijte Azure CLI nebo převrácení plánu provádění Terraformu pomocí terraform destroy
příkazu .
Azure CLI
az policy assignment delete --name 'audit-vm-manageddisks' --scope '/subscriptions/<subscriptionID>/<resourceGroupName>'
Terraform
terraform destroy
Další kroky
V tomto rychlém startu jste přiřadili definici zásady pro identifikaci prostředků, které nedodržují předpisy, ve vašem prostředí Azure.
Další informace o přiřazování zásad pro ověření, že nové prostředky vyhovují předpisům, najdete v tomto kurzu: