Bagikan melalui


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

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.

  1. Buat folder baru bernama policy-assignment dan ubah direktori ke dalamnya.

  2. 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"
      }
    
  3. 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}/]
  4. 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.

  1. Jalankan perintah terraform init. Perintah ini mengunduh modul Azure yang diperlukan untuk membuat sumber daya Azure dalam konfigurasi Terraform.

    terraform init
    

    Cuplikan layar menjalankan perintah terraform init yang menunjukkan pengunduhan modul azurerm dan pesan sukses.

  2. Autentikasi dengan Azure CLI untuk Terraform. Untuk informasi selengkapnya, lihat Azure Provider: Mengautentikasi menggunakan Azure CLI.

    az login
    
  3. Buat rencana eksekusi dengan perintah terraform plan dan parameter out.

    terraform plan -out assignment.tfplan
    

    Cuplikan layar menjalankan perintah terraform plan dan parameter out untuk menunjukkan sumber daya Azure yang akan dibuat.

    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

Cuplikan layar menjalankan perintah terraform apply dan pembuatan sumber daya yang dihasilkan.

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: