Sdílet prostřednictvím


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

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.

  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:

    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"
      }
    
  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 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}/]
  4. 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.

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

    Snímek obrazovky se spuštěním příkazu init terraformu, který ukazuje stažení modulu azurerm a zprávu o úspěchu

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

    az login
    
  3. Vytvořte plán provádění pomocí příkazu terraform plan a parametru out .

    terraform plan -out assignment.tfplan
    

    Snímek obrazovky se spuštěním příkazu terraform plan a výstupního parametru zobrazte prostředek Azure, který by se vytvořil.

    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

Snímek obrazovky se spuštěním příkazu terraform apply a výsledného vytvoření prostředku

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 destroypří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: