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 akan berhasil mengidentifikasi komputer virtual yang tidak menggunakan disk terkelola di seluruh langganan. Sumber daya tidak sesuai dengan penetapan kebijakan.

Prasyarat

  • Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum 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 CLI Azure.

Membuat konfigurasi, variabel, dan file output Terraform

Dalam mulai cepat ini, Anda membuat penetapan kebijakan dan menetapkan definisi Komputer virtual Audit yang tidak menggunakan disk terkelola (06a78e20-9358-41c9-923c-fb736d382a4d). Definisi kebijakan ini mengidentifikasi sumber daya yang tidak sesuai dengan ketentuan yang ditetapkan dalam definisi kebijakan.

Pertama, konfigurasikan file konfigurasi Terraform, variabel, dan output. 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 penetapan kebijakan. Ini dapat berkisar antara grup manajemen dan sumber daya 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

Selanjutnya, inisialisasi Terraform untuk mengunduh penyedia yang diperlukan lalu buat rencana.

  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

Terakhir, 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.

Dengan "Penerapan selesai! Sumber daya: 1 ditambahkan, 0 diubah, 0 dihancurkan." 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>

Hasil Anda menyerupai 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: