Szybki start: tworzenie przypisania zasad w celu identyfikowania niezgodnych zasobów przy użyciu narzędzia Terraform
Pierwszym krokiem do zrozumienia pojęcia zgodności na platformie Azure jest określenie obecnej sytuacji dotyczącej Twoich zasobów. Ten przewodnik Szybki start przeprowadzi Cię przez proces tworzenia przypisania zasad w celu zidentyfikowania maszyn wirtualnych, które nie korzystają z dysków zarządzanych.
Po zakończeniu tego procesu pomyślnie zidentyfikujesz maszyny wirtualne, które nie korzystają z dysków zarządzanych w ramach subskrypcji. Są one niezgodne z przypisaniem zasad.
Wymagania wstępne
- Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Program Terraform w wersji 0.12.0 lub nowszej został skonfigurowany w środowisku. Aby uzyskać instrukcje, zobacz Konfigurowanie narzędzia Terraform przy użyciu usługi Azure Cloud Shell.
- Ten przewodnik Szybki start wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.13.0 lub nowszej. Aby dowiedzieć się, jaka wersja jest używana, uruchom polecenie
az --version
. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Tworzenie pliku konfiguracji, zmiennej i wyjściowej narzędzia Terraform
W tym przewodniku Szybki start utworzysz przypisanie zasad i przypiszesz definicję Przeprowadź inspekcję maszyn wirtualnych, które nie używają dysków zarządzanych (06a78e20-9358-41c9-923c-fb736d382a4d
). Ta definicja zasad identyfikuje zasoby, które nie spełniają warunków określonych w definicji zasad.
Najpierw skonfiguruj pliki konfiguracji, zmiennej i wyjściowe programu Terraform. Zasoby narzędzia Terraform dla Azure Policy korzystać z dostawcy platformy Azure.
Utwórz nowy folder o nazwie
policy-assignment
i zmień w nim katalogi.Utwórz
main.tf
za pomocą następującego kodu:Uwaga
Aby utworzyć przypisanie zasad w grupie zarządzania, użyj zasobu azurerm_management_group_policy_assignment , w przypadku grupy zasobów użyj azurerm_resource_group_policy_assignment , a dla subskrypcji użyj zasobu 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" }
Utwórz
variables.tf
za pomocą następującego kodu:variable "cust_scope" { default = "{scope}" }
Zakres określa, jakie zasoby lub grupy zasobów są wymuszane w ramach przypisania zasad. Może to być zakres od grupy zarządzania do pojedynczego zasobu. Pamiętaj, aby zastąpić
{scope}
jedną z następujących wzorców na podstawie zadeklarowanego zasobu:- Subskrypcje:
/subscriptions/{subscriptionId}
- Grupa zasobów:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
- Zasobów:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Subskrypcje:
Utwórz
output.tf
za pomocą następującego kodu:output "assignment_id" { value = azurerm_subscription_policy_assignment.auditvms.id }
Inicjowanie programu Terraform i tworzenie planu
Następnie zainicjuj narzędzie Terraform, aby pobrać niezbędnych dostawców, a następnie utworzyć plan.
Uruchom polecenie terraform init . To polecenie pobiera moduły platformy Azure wymagane do utworzenia zasobów platformy Azure w konfiguracji narzędzia Terraform.
terraform init
Uwierzytelnianie za pomocą interfejsu wiersza polecenia platformy Azure dla programu Terraform. Aby uzyskać więcej informacji, zobacz Azure Provider: Authenticating using the Azure CLI (Dostawca platformy Azure: uwierzytelnianie przy użyciu interfejsu wiersza polecenia platformy Azure).
az login
Utwórz plan wykonania za pomocą polecenia terraform plan i parametru out .
terraform plan -out assignment.tfplan
Uwaga
Aby uzyskać informacje na temat utrwalania planów wykonywania i zabezpieczeń, zobacz Terraform Plan: Ostrzeżenie o zabezpieczeniach.
Zastosowanie planu wykonania programu Terraform
Na koniec zastosuj plan wykonania.
Uruchom polecenie terraform apply i określ assignment.tfplan
już utworzone polecenie.
terraform apply assignment.tfplan
Z komunikatem "Zastosuj ukończono! Zasoby: 1 dodane, 0 zmienione, 0 zniszczone." komunikat, przypisanie zasad jest teraz tworzone. Ponieważ zdefiniowaliśmy outputs.tf
plik, zwracany jest również assignment_id.
Identyfikowanie niezgodnych zasobów
Aby wyświetlić zasoby, które nie są zgodne w ramach tego nowego przypisania, użyj assignment_id zwróconych przez terraform apply
polecenie . Uruchom następujące polecenie, aby pobrać identyfikatory zasobów niezgodnych zasobów, które są danymi wyjściowymi w pliku 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>
Wyniki powinny wyglądać podobnie do następujących:
{
"@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>"
}
]
}
Wyniki są porównywalne z zawartością zwykle wyświetlaną w obszarze Niezgodne zasoby w widoku witryny Azure Portal.
Czyszczenie zasobów
Aby usunąć utworzone przypisanie, użyj interfejsu wiersza polecenia platformy Azure lub odwrócić plan wykonywania programu Terraform za pomocą polecenia terraform destroy
.
Interfejs wiersza polecenia platformy Azure
az policy assignment delete --name 'audit-vm-manageddisks' --scope '/subscriptions/<subscriptionID>/<resourceGroupName>'
Terraform
terraform destroy
Następne kroki
W tym przewodniku Szybki start została przypisana definicja zasad mających na celu zidentyfikowanie niezgodnych zasobów w środowisku platformy Azure.
Aby dowiedzieć się więcej na temat przypisywania zasad w celu sprawdzenia zgodności nowych zasobów, przejdź do samouczka: