Quickstart: Een beleidstoewijzing maken om niet-conforme resources met Terraform te identificeren
De eerste stap in het begrijpen van naleving in Azure is het identificeren van de status van uw resources. In deze quickstart gaat u een beleidstoewijzing maken voor het identificeren van virtuele machines die geen beheerde schijven gebruiken.
Als u dit proces helemaal hebt doorlopen, kunt u virtuele machines identificeren die geen beheerde schijven gebruiken. Ze zijn niet-compatibel met de beleidstoewijzing.
Vereisten
- Als u nog geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
- Terraform versie 0.12.0 of hoger geconfigureerd in uw omgeving. Zie Terraform configureren met behulp van Azure Cloud Shellvoor instructies.
- Voor deze quickstart moet u versie 2.13.0 of hoger van Azure CLI uitvoeren. Voer
az --versionuit om de versie te bekijken. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.
De configuratie, de variabele en het uitvoerbestand van Terraform maken
In deze quickstart maakt u een beleidstoewijzing en wijst u de definitie Controleer virtuele machines die niet gebruikmaken van beheerde schijven (06a78e20-9358-41c9-923c-fb736d382a4d) toe. Deze beleidsdefinitie identificeert resources die niet voldoen aan de voorwaarden die zijn vastgelegd in de beleidsdefinitie.
Configureer eerst de configuratie, de variabele en het uitvoerbestand van Terraform De Terraform-resources voor Azure Policy gebruiken de Azure-provider.
Maak een nieuwe map met de naam
policy-assignmenten zet de mappen hierin.Maak
main.tfmet de volgende code: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" }Maak
variables.tfmet de volgende code:variable "cust_scope" { default = "{scope}" }Het bereik bepaalt op welke resources of groep resources de beleidstoewijzing wordt afgedwongen. Het kan variëren van een beheergroep tot een afzonderlijke resource. Zorg dat u
{scope}vervangt door een van de volgende patronen:- Abonnement:
/subscriptions/{subscriptionId} - Resourcegroep:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName} - Resource:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Abonnement:
Maak
output.tfmet de volgende code:output "assignment_id" { value = azurerm_policy_assignment.auditvms.id }
Terraform initialiseren en een plan maken
Initialiseer vervolgens Terraform om de benodigde providers te downloaden en maak vervolgens een plan.
Voer de opdracht terraform init uit. Met deze opdracht worden de Azure-modules gedownload die vereist zijn voor het maken van de Azure-resources in de Terraform-configuratie.
terraform init
Verifieer met Azure CLI voor Terraform. Zie voor meer informatie Azure-provider: Verifiëren met behulp van de Azure CLI.
az loginMaak het uitvoeringsplan met de opdracht terraform plan en de parameter out.
terraform plan -out assignment.tfplan
Notitie
Zie voor informatie over permanente uitvoeringsplannen en beveiliging Terraform Plan: Beveiligingswaarschuwing.
Een Terraform-uitvoeringsplan toepassen
Pas het uitvoeringsplan als laatste toe.
Voer de opdracht terraform apply uit en geef het assignment.tfplan op dat al is gemaakt.
terraform apply assignment.tfplan
Met de 'Apply voltooid! Resources: 1 toegevoegd, 0 gewijzigd, 0 vernietigd.’ wordt de beleid toewijzing nu gemaakt. Omdat we het bestand outputs.tf hebben gedefinieerd, wordt de toewijzings-_id ook geretourneerd.
Niet-compatibele resources identificeren
Als u de resources wilt weergeven die niet conform zijn onder deze nieuwe toewijzing, gebruikt u de toewijzings-_id geretourneerd door terraform apply. Voer daarbij de volgende opdracht uit om de resource-id's te verkrijgen van de niet-conforme resources. Deze worden uitgevoerd naar een JSON-bestand:
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>
De resultaten zien er ongeveer als volgt uit:
{
"@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>"
}
]
}
De resultaten zijn vergelijkbaar met wat in de weergave van de Azure-portal meestal wordt vermeld onder Niet-compatibele resources.
Resources opschonen
Als u de gemaakte toewijzing wilt verwijderen, gebruikt u Azure CLI of draait u het Terraform-uitvoeringsplan om met terraform destroy.
Azure CLI
az policy assignment delete --name 'audit-vm-manageddisks' --scope '/subscriptions/<subscriptionID>/<resourceGroupName>'Terraform
terraform destroy assignment.tfplan
Volgende stappen
In deze Quick Start hebt u een beleidsdefinitie toegewezen om niet-compatibele resources in uw Azure-omgeving te identificeren.
Ga voor meer informatie over het toewijzen van beleid om te controleren of nieuwe resources conform zijn verder met de zelfstudie voor: