Megosztás a következőn keresztül:


Rövid útmutató: Szabályzat-hozzárendelés létrehozása a nem megfelelő erőforrások azonosításához a Terraform használatával

Az Azure-ral való megfelelőség megértéséhez szükséges első lépés a saját erőforrásai állapotának megállapítása. Ez a rövid útmutató végigvezeti Önt a folyamaton, amellyel létrehozhat egy felügyelt lemezeket nem használó virtuális gépek azonosítására szolgáló szabályzat-hozzárendelést.

A folyamat végén azonosítja azokat a virtuális gépeket, amelyek nem használnak felügyelt lemezeket az előfizetések között. Ezek a szabályzat-hozzárendelés szempontjából nem megfelelőnek minősülnek.

Beépített szabályzat- vagy kezdeményezésdefiníciók hozzárendelésekor nem kötelező egy verzióra hivatkozni. A beépített definíciók házirend-hozzárendelései alapértelmezés szerint a legújabb verzióhoz lesznek hozzárendelve, és ha másként nincs megadva, automatikusan öröklik az alverzió módosításait.

Előfeltételek

A Terraform-konfiguráció, a változó és a kimeneti fájl létrehozása

Ebben a rövid útmutatóban létre fog hozni egy szabályzat-hozzárendelést, és hozzá fogja rendeli a Felügyelt lemezek nélküli virtuális gépek naplózása definíciót. Ez a szabályzatdefiníció azonosítja azokat az erőforrásokat, amelyek nem felelnek meg a szabályzatdefinícióban megadott feltételeknek.

Konfigurálja a Terraform-konfigurációt, a változót és a kimeneti fájlokat. Az Azure Policy Terraform-erőforrásai az Azure Providert használják.

  1. Hozzon létre egy új nevű mappát policy-assignment , és módosítsa a címtárakat.

  2. Létrehozás main.tf a következő kóddal:

    Feljegyzés

    Ha szabályzat-hozzárendelést szeretne létrehozni egy felügyeleti csoportban, használja a azurerm_management_group_policy_assignment erőforrást, egy erőforráscsoportnál használja a azurerm_resource_group_policy_assignment , előfizetés esetén pedig a azurerm_subscription_policy_assignment erőforrást.

      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. Létrehozás variables.tf a következő kóddal:

    variable "cust_scope" {
        default = "{scope}"
    }
    

    A hatókör határozza meg, hogy a szabályzat-hozzárendelés milyen erőforrások vagy erőforráscsoportok esetében lesz kényszerítve. A felügyeleti csoporttól az egyes erőforrásokig terjedhet. A deklarált erőforrás alapján mindenképpen cserélje le {scope} az alábbi minták egyikét:

    • Előfizetés: /subscriptions/{subscriptionId}
    • Erőforráscsoport: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
    • Forrás: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
  4. Létrehozás output.tf a következő kóddal:

    output "assignment_id" {
        value = azurerm_subscription_policy_assignment.auditvms.id
    }
    

Terraform inicializálása és terv létrehozása

Inicializálja a Terraformot a szükséges szolgáltatók letöltéséhez, majd hozzon létre egy tervet.

  1. Futtassa a terraform init parancsot. Ez a parancs letölti az Azure-erőforrások Terraform-konfigurációban való létrehozásához szükséges Azure-modulokat.

    terraform init
    

    Képernyőkép a terraform init parancs futtatásáról, amely az azurerm modul letöltését és egy sikeres üzenetet jelenít meg.

  2. Hitelesítés a Terraformhoz készült Azure CLI-vel. További információ: Azure Provider: Authenticating using the Azure CLI.

    az login
    
  3. Hozza létre a végrehajtási tervet a Terraform Plan paranccsal és a out paraméterrel.

    terraform plan -out assignment.tfplan
    

    Képernyőkép a terraform-terv parancs futtatásáról és a kifelé mutató paraméterről a létrehozandó Azure-erőforrás megjelenítéséhez.

    Feljegyzés

    A végrehajtási tervek és a biztonság megőrzéséről további információt a Terraform-terv: Biztonsági figyelmeztetés című témakörben talál.

A Terraform végrehajtási terv alkalmazása

Alkalmazza a végrehajtási tervet.

Futtassa a terraform apply parancsot, és adja meg a assignment.tfplan már létrehozott parancsot.

terraform apply assignment.tfplan

Képernyőkép a terraform apply parancs futtatásáról és az eredményként kapott erőforrás-létrehozásról.

Az üzenettel Apply complete! Resources: 1 added, 0 changed, 0 destroyed. létrejön a szabályzat-hozzárendelés. Mivel definiáltuk a outputs.tf fájlt, a assignment_id is visszaadja.

A nem megfelelő erőforrások azonosítása

Az új hozzárendelésben nem megfelelő erőforrások megtekintéséhez használja a visszaadott terraform applyassignment_id. Futtassa a következő parancsot a nem megfelelő erőforrások erőforrásazonosítóinak JSON-fájlba való lekéréséhez:

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>

Az eredmények a következő példához hasonlók:

{
  "@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>"
    }
  ]
}

Az eredmények hasonlók ahhoz, amit általában az Azure Portal nézetében a Nem megfelelő erőforrások területen láthat.

Az erőforrások eltávolítása

A létrehozott hozzárendelés eltávolításához használja az Azure CLI-t, vagy fordítsa vissza a Terraform végrehajtási tervét a következővel terraform destroy: .

  • Azure CLI

    az policy assignment delete --name 'audit-vm-manageddisks' --scope '/subscriptions/<subscriptionID>/<resourceGroupName>'
    
  • Terraform

    terraform destroy
    

Következő lépések

Ebben a rövid útmutatóban hozzárendelt egy szabályzatdefiníciót az Azure-környezetben megtalálható, nem megfelelő erőforrások azonosítása céljából.

Ha többet szeretne megtudni arról, hogyan rendelhet hozzá szabályzatokat annak ellenőrzéséhez, hogy az új erőforrások megfelelnek-e, folytassa a következő oktatóanyagokkal: