Tutorial: Menerapkan Azure Policy sebagai Kode dengan GitHub

Alur kerja Azure Policy sebagai Kode memungkinkan untuk mengelola definisi dan penetapan kebijakan Anda sebagai kode, mengontrol siklus hidup pembaruan definisi tersebut, dan mengotomatiskan validasi hasil kepatuhan. Dalam tutorial ini, Anda belajar menggunakan fitur Azure Policy dengan GitHub untuk mengompilasi proses siklus hidup. Tugas-tugas ini meliputi:

  • Mengekspor definisi dan penetapan kebijakan ke GitHub
  • Dorong objek kebijakan yang diperbarui di GitHub ke Azure
  • Memicu pemindaian kepatuhan dari Tindakan GitHub

Jika Anda ingin menetapkan kebijakan untuk mengidentifikasi status kepatuhan sumber daya yang ada saat ini, artikel mulai cepat menjelaskan cara melakukannya.

Prasyarat

Ekspor objek Azure Policy dari portal Microsoft Azure

Catatan

Izin pemilik diperlukan pada cakupan objek kebijakan yang diekspor ke GitHub.

Untuk mengekspor definisi kebijakan dari portal Microsoft Azure, ikuti langkah-langkah berikut:

  1. Luncurkan layanan Azure Policy di portal Microsoft Azure dengan mengeklik Semua layanan, lalu cari dan pilih Azure Policy.

  2. Pilih Definisi di sisi kiri halaman Azure Policy.

  3. Gunakan tombol Ekspor definisi atau pilih elipsis pada baris definisi kebijakan lalu pilih Ekspor definisi.

  4. Pilih tombol Masuk dengan GitHub. Jika Anda belum mengautentikasi dengan GitHub untuk mengotorisasi Azure Policy guna mengekspor sumber daya, tinjau akses yang dibutuhkan GitHub Action di jendela baru yang terbuka dan pilih Otorisasi AzureGitHubActions untuk melanjutkan proses ekspor. Setelah selesai, jendela baru ditutup sendiri.

  5. Pada tab Dasar, atur opsi berikut, lalu pilih tab Kebijakan atau tombol Berikutnya : Kebijakan di bagian bawah halaman.

    • Filter repositori: Atur ke Repositori saya untuk hanya melihat repositori yang Anda miliki atau Semua repositori untuk melihat semua yang Anda berikan akses Tindakan GitHub.
    • Repositori: Atur ke repositori tempat Anda ingin mengekspor sumber daya Azure Policy.
    • Cabang: Atur cabang di repositori. Menggunakan cabang selain default adalah cara yang baik untuk memvalidasi pembaruan Anda sebelum menggabungkan lebih jauh ke dalam kode sumber Anda.
    • Direktori: Folder tingkat akar untuk mengekspor sumber daya Azure Policy. Subfolder di bawah direktori ini dibuat berdasarkan sumber daya apa yang diekspor.
  6. Pada tab Kebijakan, atur lingkup untuk mencari dengan memilih elipsis dan memilih kombinasi grup manajemen, langganan, atau grup sumber daya.

  7. Gunakan tombol Tambahkan definisi kebijakan untuk mencari lingkup objek mana yang akan diekspor. Di jendela samping yang terbuka, pilih setiap objek untuk diekspor. Memfilter pilihan menurut kotak pencarian atau jenis. Setelah Memilih semua objek untuk diekspor, gunakan tombol Tambahkan di bagian bawah halaman.

  8. Untuk setiap objek yang dipilih, pilih opsi ekspor yang diinginkan seperti Hanya Definisi atau Definisi dan Penugasan untuk definisi kebijakan. Kemudian pilih tab Tinjau + Ekspor atau Berikutnya : Tombol Tinjau + Ekspor di bagian bawah halaman.

    Catatan

    Jika opsi Definisi dan Penugasan dipilih, hanya penetapan kebijakan dalam lingkup yang ditetapkan oleh filter saat definisi kebijakan ditambahkan yang diekspor.

  9. Pada tab Tinjau + Ekspor, periksa kecocokan detail lalu gunakan tombolEkspor di bagian bawah halaman.

  10. Periksa repo, cabang, dan folder tingkat akar GitHub Anda untuk melihat bahwa sumber daya yang dipilih sekarang diekspor ke kontrol sumber Anda.

Sumber daya Azure Policy diekspor ke dalam struktur berikut dalam repositori GitHub dan folder tingkat akar yang dipilih:

|
|- <root level folder>/  ________________ # Root level folder set by Directory property
|  |- policies/  ________________________ # Subfolder for policy objects
|     |- <displayName>_<name>____________ # Subfolder based on policy displayName and name properties
|        |- policy.json _________________ # Policy definition
|        |- assign.<displayName>_<name>__ # Each assignment (if selected) based on displayName and name properties
|

Dorong objek kebijakan yang diperbarui di GitHub ke Azure

  1. Ketika objek kebijakan diekspor, file alur kerja GitHub bernama .github/workflows/manage-azure-policy-<randomLetters>.yml juga dibuat untuk membantu Anda memulai.

    Catatan

    File alur kerja GitHub dibuat setiap kali ekspor digunakan. Setiap instans file adalah khusus untuk opsi tersebut selama tindakan ekspor tersebut.

  2. File alur kerja ini menggunakan tindakan Kelola Azure Policy untuk mendorong perubahan yang dibuat pada objek kebijakan yang diekspor di repositori GitHub kembali ke Azure Policy. Secara default, tindakan mempertimbangkan dan menyinkronkan hanya file yang berbeda dari yang ada di Azure. Anda juga dapat menggunakan parameter assignments dalam tindakan untuk hanya menyinkronkan perubahan yang dilakukan pada file tugas tertentu. Parameter ini dapat digunakan untuk menerapkan penetapan kebijakan hanya untuk lingkungan tertentu. Untuk informasi selengkapnya, lihat Kelola baca saya repositori Azure Policy.

  3. Secara default, alur kerja harus dipicu secara manual. Untuk melakukannya, gunakan Tindakan di GitHub, pilih manage-azure-policy-<randomLetters> alur kerja, pilih Jalankan alur kerja, lalu Jalankan alur kerja lagi.

    Screenshot of the Action tab, workflow, and Run workflow buttons in the GitHub web interface.

    Catatan

    File alur kerja harus di cabang default untuk dideteksi dan dijalankan secara manual.

  4. Alur kerja menyinkronkan perubahan yang dilakukan pada objek kebijakan dengan Azure dan memberi Anda status di log.

    Screenshot of the workflow in action and logged details to the logs.

  5. Alur kerja juga menambahkan detail di objek Azure Policy properties.metadata untuk Anda lacak.

    Screenshot of the Azure Policy definition in Azure portal updated with metadata specific to the GitHub Actions.

Memicu pemindaian kepatuhan menggunakan Tindakan GitHub

Dengan menggunakan tindakan Pemindaian Kepatuhan Azure Policy, Anda dapat memicu pemindaian evaluasi kepatuhan sesuai permintaan dari alur kerja GitHub Anda pada satu atau beberapa sumber daya, grup sumber daya, atau langganan, dan mengubah jalur alur kerja berdasarkan status kepatuhan sumber daya tersebut. Anda juga dapat mengonfigurasi alur kerja agar berjalan sesuai jadwal waktu untuk mendapatkan status kepatuhan terbaru pada waktu yang tepat. Secara opsional, Tindakan GitHub ini juga dapat menghasilkan laporan tentang status kepatuhan sumber daya yang dipindai untuk analisis lebih lanjut atau untuk pengarsipan.

Contoh berikut menjalankan pemindaian kepatuhan untuk langganan.


on:
  schedule:
    - cron:  '0 8 * * *'  # runs every morning 8am
jobs:
  assess-policy-compliance:
    runs-on: ubuntu-latest
    steps:
    - name: Login to Azure
      uses: azure/login@v1
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}

    - name: Check for resource compliance
      uses: azure/policy-compliance-scan@v0
      with:
        scopes: |
          /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Tinjau

Dalam tutorial ini, Anda berhasil menyelesaikan tugas-tugas berikut:

  • Definisi dan penetapan kebijakan yang diekspor ke GitHub
  • Pembaruan objek kebijakan yang didorong di GitHub ke Azure
  • Telah memicu pemindaian kepatuhan dari Tindakan GitHub

Langkah berikutnya

Untuk mempelajari lebih lanjut struktur definisi kebijakan, lihat artikel ini: