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
- Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
- A Terraform 0.12.0-s vagy újabb verziója konfigurálva van a környezetben. Útmutatásért lásd : Terraform konfigurálása az Azure Cloud Shell használatával.
- Ehhez a rövid útmutatóhoz az Azure CLI 2.13.0-s vagy újabb verzióját kell futtatnia. A verzió megkereséséhez futtassa a következőt:
az --version
. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
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.
Hozzon létre egy új nevű mappát
policy-assignment
, és módosítsa a címtárakat.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" }
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}/]
- Előfizetés:
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.
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
Hitelesítés a Terraformhoz készült Azure CLI-vel. További információ: Azure Provider: Authenticating using the Azure CLI.
az login
Hozza létre a végrehajtási tervet a Terraform Plan paranccsal és a out paraméterrel.
terraform plan -out assignment.tfplan
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
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 apply
assignment_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: