Rychlý Start: vytvoření přiřazení zásady pro 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. 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.
- Terraformu 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řit konfiguraci, proměnnou a výstupní soubor Terraformu
V tomto rychlém startu vytvoříte přiřazení zásady a přiřadíte virtuální počítače auditu, které nepoužívají definici Managed disks ( 06a78e20-9358-41c9-923c-fb736d382a4d ). Tato definice zásady identifikuje prostředky, které nesplňují podmínky nastavené v definici zásady.
Nejdřív nakonfigurujte konfiguraci, proměnnou a výstupní soubory Terraformu. Terraformu prostředky pro Azure Policy použít poskytovatele Azure.
Vytvořte novou složku s názvem
policy-assignmenta změňte do ní adresáře.Vytvořte
main.tfpomocí následujícího kódu:provider "azurerm" { version = "~>2.0" features {} } resource "azurerm_policy_assignment" "auditvms" { name = "audit-vm-manageddisks" scope = 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.tfpomocí 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 být v rozsahu od skupiny pro správu k individuálnímu prostředku. Nezapomeňte nahradit
{scope}jedním z následujících způsobů:- Předplatné:
/subscriptions/{subscriptionId} - Skupina prostředků:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName} - Partner
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Předplatné:
Vytvořte
output.tfpomocí následujícího kódu:output "assignment_id" { value = azurerm_policy_assignment.auditvms.id }
Inicializovat Terraformu a vytvořit plán
Dále inicializujte Terraformu, abyste stáhli potřebné poskytovatele a pak vytvořili plán.
Spusťte příkaz terraformu 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 terraformu. Další informace najdete v tématu poskytovatel Azure: ověřování pomocí Azure CLI.
az loginVytvořte plán spouštění pomocí příkazu terraformu Plan a parametr out .
terraform plan -out assignment.tfplan
Poznámka
Informace o zachování plánů provádění a zabezpečení najdete v tématu plán terraformu: upozornění zabezpečení.
Použití plánu provádění Terraformu
Nakonec použijte plán spuštění.
Spusťte příkaz terraformu Apply a zadejte assignment.tfplan již vytvořenou.
terraform apply assignment.tfplan
Při použití možnosti použít Hotovo Prostředky: 1 Přidání, 0 změněno, 0 zničeno. zpráva: přiřazení zásad je nyní vytvořeno. Vzhledem k tomu outputs.tf , že jsme soubor definovali, je vráceno také _ ID přiřazení .
Zjištění nevyhovujících prostředků
Chcete-li zobrazit prostředky, které nedodržují předpisy v rámci tohoto nového přiřazení, použijte _ ID přiřazení vrácené terraform apply . Spuštěním následujícího příkazu načtete ID prostředků neodpovídajících prostředků, které jsou ve výstupu, do souboru JSON:
armclient post "/subscriptions/<subscriptionID>/resourceGroups/<rgName>/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řevratte plán spuštění Terraformu s terraform destroy .
Azure CLI
az policy assignment delete --name 'audit-vm-manageddisks' --scope '/subscriptions/<subscriptionID>/<resourceGroupName>'Terraform
terraform destroy assignment.tfplan
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 k ověření, že jsou nové prostředky kompatibilní, najdete v tomto kurzu: