Schnellstart: Erstellen einer Richtlinienzuweisung zum Identifizieren nicht konformer Ressourcen mithilfe von Terraform
Zum Verständnis der Konformität in Azure müssen Sie zunächst wissen, wie Sie den Status Ihrer Ressourcen ermitteln. Diese Schnellstartanleitung führt Sie schrittweise durch die Erstellung einer Richtlinienzuweisung zur Identifizierung von virtuellen Computern, die keine verwalteten Datenträger verwenden.
Am Ende dieses Prozesses identifizieren Sie VMs, die keine verwalteten Datenträger in Abonnements verwenden. Sie sind mit der Richtlinienzuweisung nicht konform.
Beim Zuweisen einer integrierten Richtlinien- oder Initiativendefinition ist der Verweis auf eine Version optional. Richtlinienzuweisungen von integrierten Definitionen sind standardmäßig auf die neueste Version festgelegt und erben automatisch Nebenversionsänderungen, sofern nicht anders angegeben.
Voraussetzungen
- Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- In Ihrer Umgebung muss mindestens Version 0.12.0 von Terraform konfiguriert sein. Anweisungen finden Sie unter Konfigurieren von Terraform mit Azure Cloud Shell.
- Für diesen Schnellstart muss mindestens Version 2.13.0 der Azure CLI ausgeführt werden. Führen Sie
az --version
aus, um die Version zu finden. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
Erstellen der Terraform-Konfiguration, -Variablen und -Ausgabedatei
In dieser Schnellstartanleitung erstellen Sie eine Richtlinienzuweisung und weisen die Definition Virtuelle Computer überwachen, die keine verwalteten Datenträger verwenden zu. Mit dieser Richtliniendefinition werden Ressourcen identifiziert, die die in der Richtliniendefinition festgelegten Bedingungen nicht erfüllen.
Konfigurieren Sie die Konfiguration, die Variable und die Ausgabedateien für Terraform. Für die Terraform-Ressourcen für Azure Policy wird der Azure-Anbieter genutzt.
Erstellen Sie einen neuen Ordner mit dem Namen
policy-assignment
, und navigieren Sie zu diesem Verzeichnis.Erstellen Sie
main.tf
mit dem folgenden Code:Hinweis
Verwenden Sie zum Erstellen einer Richtlinienzuweisung in einer Verwaltungsgruppe die Ressource azurerm_management_group_policy_assignment, für eine Ressourcengruppe die Ressource azurerm_resource_group_policy_assignment und für ein Abonnement die Ressource 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" }
Erstellen Sie
variables.tf
mit dem folgenden Code:variable "cust_scope" { default = "{scope}" }
Ein Bereich bestimmt, für welche Ressourcen oder Ressourcengruppe die Richtlinienzuweisung erzwungen wird. Ein solcher Bereich kann eine Verwaltungsgruppe oder auch nur eine einzelne Ressource sein. Stellen Sie sicher, dass Sie
{scope}
basierend auf der deklarierten Ressource durch eines der folgenden Muster ersetzen:- Abonnement:
/subscriptions/{subscriptionId}
- Ressourcengruppe:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
- Ressource:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Abonnement:
Erstellen Sie
output.tf
mit dem folgenden Code:output "assignment_id" { value = azurerm_subscription_policy_assignment.auditvms.id }
Initialisieren von Terraform und Erstellen eines Plans
Initialisieren Sie Terraform, um die erforderlichen Anbieter herunterzuladen, und erstellen Sie dann einen Plan.
Führen Sie den Befehl terraform init aus. Mit diesem Befehl werden die Azure-Module heruntergeladen, die zum Erstellen der Azure-Ressourcen in der Terraform-Konfiguration erforderlich sind.
terraform init
Authentifizieren Sie sich mit der Azure CLI für Terraform. Weitere Informationen finden Sie unter Azure-Anbieter: Authentifizieren mithilfe der Azure CLI.
az login
Erstellen Sie den Ausführungsplan mit dem Befehl terraform plan und dem Parameter out.
terraform plan -out assignment.tfplan
Hinweis
Weitere Informationen zum Beibehalten von Ausführungsplänen und zur Sicherheit finden Sie unter Terraform-Plan: Sicherheitswarnung.
Anwenden des Terraform-Ausführungsplans
Wenden Sie den Ausführungsplan an.
Führen Sie den Befehl terraform apply aus, und geben Sie das bereits erstellte Element assignment.tfplan
an.
terraform apply assignment.tfplan
Mit der Meldung Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
wird die Richtlinienzuweisung jetzt erstellt. Da Sie die Datei outputs.tf
definiert haben, wird außerdem assignment_id zurückgegeben.
Identifizieren nicht konformer Ressourcen
Wenn Sie die nicht konformen Ressourcen unter dieser neuen Zuweisung anzeigen möchten, verwenden Sie die von terraform apply
zurückgegebene Zuweisungs-ID (assignment_id). Führen Sie damit den folgenden Befehl aus, um die Ressourcen-IDs der nicht konformen Ressourcen abzurufen, die in einer JSON-Datei ausgegeben werden:
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>
Ihre Ergebnisse sollten in etwa wie im folgenden Beispiel aussehen:
{
"@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>"
}
]
}
Die Ergebnisse sind vergleichbar mit dem, was üblicherweise in der Azure-Portalansicht unter Nicht konforme Ressourcen zu sehen ist.
Bereinigen von Ressourcen
Verwenden Sie zum Entfernen der erstellten Zuweisung die Azure CLI, oder kehren Sie den Terraform-Ausführungsplan mit terraform destroy
um.
Azure CLI
az policy assignment delete --name 'audit-vm-manageddisks' --scope '/subscriptions/<subscriptionID>/<resourceGroupName>'
Terraform
terraform destroy
Nächste Schritte
In diesem Schnellstart haben Sie eine Richtliniendefinition zum Identifizieren nicht kompatibler Ressourcen in Ihrer Azure-Umgebung zugewiesen.
Weitere Informationen zum Zuweisen von Richtlinien, die die Konformität neuer Ressourcen überprüfen, finden Sie im folgenden Tutorial: