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.
Aan het einde van dit proces kunt u virtuele machines identificeren die geen beheerde schijven in het abonnement 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 --version
uit 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-assignment
en zet de mappen hierin.Maak
main.tf
met de volgende code:Notitie
Als u een beleidstoewijzing wilt maken in een beheergroep, gebruikt u de azurerm_management_group_policy_assignment resource, gebruikt u voor een resourcegroep de azurerm_resource_group_policy_assignment en voor een abonnement de azurerm_subscription_policy_assignment resource.
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" }
Maak
variables.tf
met 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 ervoor dat u vervangt door
{scope}
een van de volgende patronen op basis van de gedeclareerde resource:- Abonnement:
/subscriptions/{subscriptionId}
- Resourcegroep:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
- Resource:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Abonnement:
Maak
output.tf
met de volgende code:output "assignment_id" { value = azurerm_subscription_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 login
Maak 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 beleidstoewijzing nu gemaakt. Omdat we het outputs.tf
bestand hebben gedefinieerd, wordt ook de assignment_id geretourneerd.
Niet-compatibele resources identificeren
Als u de resources wilt weergeven die niet compatibel zijn onder deze nieuwe toewijzing, gebruikt u de assignment_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>/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
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: