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.

  1. Vytvořte novou složku s názvem policy-assignment a změňte do ní adresáře.

  2. Vytvořte main.tf pomocí 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"
    }
    
  3. 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 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}/]
  4. Vytvořte output.tf pomocí 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.

  1. 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
    

    Snímek obrazovky s příkazem terraformu init, který ukazuje stažení modulu azurerm a zprávy o úspěchu

  2. Ověřování pomocí Azure CLI pro terraformu. Další informace najdete v tématu poskytovatel Azure: ověřování pomocí Azure CLI.

    az login
    
  3. Vytvořte plán spouštění pomocí příkazu terraformu Plan a parametr out .

    terraform plan -out assignment.tfplan
    

    Snímek obrazovky s parametrem příkazového řádku terraformu a out a s ním se zobrazí prostředek Azure, který se vytvoří.

    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

Snímek obrazovky s příkazem terraformu Applu a výsledným vytvořením prostředku

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: