Mulai Cepat: Membuat penetapan kebijakan untuk mengidentifikasi sumber daya yang tidak sesuai menggunakan Terraform
Langkah pertama dalam memahami kepatuhan di Azure adalah dengan mengidentifikasi status sumber daya Anda. Mulai cepat ini membantu Anda melalui proses pembuatan penugasan kebijakan untuk mengidentifikasi komputer virtual yang tidak menggunakan disk terkelola.
Pada akhir proses ini, Anda mengidentifikasi komputer virtual yang tidak menggunakan disk terkelola di seluruh langganan. Merekatidak patuh dengan penugasan kebijakan.
Saat menetapkan definisi kebijakan atau inisiatif bawaan, opsional untuk mereferensikan versi. Penetapan kebijakan definisi bawaan default ke versi terbaru dan secara otomatis mewarisi perubahan versi minor kecuali ditentukan lain.
Prasyarat
- Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
- Terraform versi 0.12.0 atau yang lebih baru dikonfigurasi di lingkungan Anda. Untuk instruksi, lihat Mengonfigurasi Terraform menggunakan Azure Cloud Shell.
- Mulai cepat ini mengharuskan Anda menjalankan Azure CLI versi 2.13.0 atau yang lebih baru. Jalankan
az --version
untuk mencari tahu versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
Membuat konfigurasi, variabel, dan file output Terraform
Dalam mulai cepat ini, Anda membuat penugasan kebijakan dan menugaskan definisi komputer virtual Audit yang tidak menggunakan disk terkelola. Definisi kebijakan ini mengidentifikasi sumber daya yang tidak sesuai dengan ketentuan yang diatur dalam definisi kebijakan.
Konfigurasikan file konfigurasi, variabel, dan output Terraform. Sumber daya Terraform untuk Azure Policy menggunakan Azure Provider.
Buat folder baru bernama
policy-assignment
dan ubah direktori ke dalamnya.Buat
main.tf
dengan kode berikut:Catatan
Untuk membuat Penetapan Kebijakan di Grup Manajemen, gunakan sumber daya azurerm_management_group_policy_assignment , untuk Grup Sumber Daya gunakan azurerm_resource_group_policy_assignment dan untuk Langganan, gunakan sumber daya 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" }
Buat
variables.tf
dengan kode berikut:variable "cust_scope" { default = "{scope}" }
Cakupan menentukan sumber daya atau pengelompokan sumber daya apa yang diberlakukan oleh penugasan kebijakan. Cakupan dapat memiliki rentang mulai dari sumber daya grup manajemen hingga individu. Pastikan untuk mengganti
{scope}
dengan salah satu pola berikut berdasarkan sumber daya yang dideklarasikan:- Langganan:
/subscriptions/{subscriptionId}
- Grup sumber daya:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
- Sumber daya:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Langganan:
Buat
output.tf
dengan kode berikut:output "assignment_id" { value = azurerm_subscription_policy_assignment.auditvms.id }
Menginisialisasi Terraform dan membuat rencana
Inisialisasi Terraform untuk mengunduh penyedia yang diperlukan lalu buat paket.
Jalankan perintah terraform init. Perintah ini mengunduh modul Azure yang diperlukan untuk membuat sumber daya Azure dalam konfigurasi Terraform.
terraform init
Autentikasi dengan Azure CLI untuk Terraform. Untuk informasi selengkapnya, lihat Azure Provider: Mengautentikasi menggunakan Azure CLI.
az login
Buat rencana eksekusi dengan perintah terraform plan dan parameter out.
terraform plan -out assignment.tfplan
Catatan
Untuk informasi tentang rencana eksekusi dan keamanan yang persisten, lihat Rencana Terraform: Peringatan Keamanan.
Menerapkan rencana eksekusi Terraform
Terapkan rencana eksekusi.
Jalankan perintah terraform apply dan tentukan assignment.tfplan
yang sudah dibuat.
terraform apply assignment.tfplan
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Dengan pesan, penetapan kebijakan sekarang dibuat. Karena kami mendefinisikan file outputs.tf
, assignment_id juga ditampilkan.
Mengidentifikasi sumber daya yang tidak sesuai
Untuk melihat sumber daya yang tidak sesuai dengan tugas baru ini, gunakan assignment_id yang ditampilkan oleh terraform apply
. Dengan itu, jalankan perintah berikut untuk mendapatkan ID sumber daya dari sumber daya yang tidak sesuai yang dihasilkan ke dalam file 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>
Hasilnya akan terlihat seperti contoh berikut:
{
"@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>"
}
]
}
Hasilnya sebanding dengan yang biasanya Anda lihat tercantum di Sumber daya yang tidak patuh dalam tampilan portal Microsoft Azure.
Membersihkan sumber daya
Untuk menghapus tugas yang dibuat, gunakan Azure CLI atau balikkan paket eksekusi Terraform dengan terraform destroy
.
Azure CLI
az policy assignment delete --name 'audit-vm-manageddisks' --scope '/subscriptions/<subscriptionID>/<resourceGroupName>'
Terraform
terraform destroy
Langkah berikutnya
Dalam mulai cepat ini, Anda telah menetapkan definisi kebijakan untuk mengidentifikasi sumber daya yang tidak sesuai di lingkungan Azure Anda.
Untuk mempelajari selengkapnya tentang menetapkan kebijakan untuk memvalidasi kepatuhan sumber daya baru, lanjutkan ke tutorial untuk: