Rychlý start: Vytvoření přiřazení zásady k identifikaci prostředků, které nedodržují předpisy, 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 úspěšně identifikujete virtuální počítače, které nepoužívají spravované disky v rámci předplatného. Neodpovídají přiřazení zásad.
Požadavky
- Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
- Terraform verze 0.12.0 nebo vyšší nakonfigurovaný ve vašem prostředí Pokyny najdete v tématu Konfigurace Terraformu pomocí Azure Cloud Shell.
- 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 (06a78e20-9358-41c9-923c-fb736d382a4d
). Tato definice zásady identifikuje prostředky, které nevyhovují podmínkám nastaveným v definici zásady.
Nejprve nakonfigurujte konfiguraci Terraformu, proměnnou a výstupní soubory. Prostředky Terraformu pro Azure Policy používat poskytovatele Azure.
Vytvořte novou složku s názvem
policy-assignment
a změňte do ní adresáře.Vytvořte
main.tf
s následujícím kódem:Poznámka
Pokud chcete vytvořit přiřazení zásad ve skupině pro správu, použijte prostředek azurerm_management_group_policy_assignment , v případě skupiny prostředků použijte azurerm_resource_group_policy_assignment a pro předplatné 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
s následujícím kódem: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 pohybovat 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}
- Zdrojů:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Předplatné:
Vytvořte
output.tf
s následujícím kódem:output "assignment_id" { value = azurerm_subscription_policy_assignment.auditvms.id }
Inicializace Terraformu a vytvoření plánu
Dále inicializujte Terraform, aby se stáhli potřební poskytovatelé, a pak vytvořte plán.
Spusťte příkaz terraform init . 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 spuštění pomocí příkazu Terraform plan a parametru out .
terraform plan -out assignment.tfplan
Poznámka
Informace o zachování plánů spuštění a zabezpečení najdete v tématu Terraform Plan: Upozornění zabezpečení.
Použití plánu provádění Terraformu
Nakonec použijte plán provádění.
Spusťte příkaz Terraform apply a zadejte již vytvořenou assignment.tfplan
hodnotu.
terraform apply assignment.tfplan
Pomocí možnosti "Použít dokončeno! Zdroj: 1 přidáno, 0 změněno, 0 zničeno. Teď se vytvoří přiřazení zásad. 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ácenou nástrojem terraform apply
. Spuštěním následujícího příkazu získejte ID prostředků nedodržovaných předpisů, 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 vytvořené přiřazení odebrat, použijte Azure CLI nebo použijte obrácený plán 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 dodržují předpisy, najdete v tomto kurzu: