Membuat kebijakan secara terprogram

Artikel ini memandu Anda dalam pembuatan dan pengelolaan kebijakan secara terprogram. Definisi Azure Policy menegakkan aturan dan efek yang berbeda pada sumber daya Anda. Penegakan memastikan bahwa sumber daya tetap mematuhi standar perusahaan dan SLA Anda.

Untuk informasi tentang kepatuhan, lihat mendapatkan data kepatuhan.

Prasyarat

Sebelum memulai, pastikan prasyarat berikut terpenuhi:

  1. Jika Anda belum melakukannya, instal ARMClient. ARMClient adalah alat yang mengirim permintaan HTTP ke API berbasis Azure Resource Manager.

  2. Perbarui modul Azure PowerShell Anda ke versi terbaru. Lihat Menginstal modul Azure PowerShell untuk informasi selengkapnya. Untuk informasi selengkapnya tentang versi terbaru, lihat Azure PowerShell.

  3. Daftarkan penyedia sumber Azure Policy Insights menggunakan Azure PowerShell untuk memvalidasi bahwa langganan Anda berfungsi dengan penyedia sumber tersebut. Untuk mendaftarkan penyedia sumber, Anda harus memiliki izin untuk menjalankan operasi tindakan mendaftar untuk penyedia sumber. Operasi ini disertakan dalam peran Kontributor dan Pemilik. Jalankan perintah berikut untuk mendaftarkan penyedia sumber:

    Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
    

    Untuk informasi selengkapnya tentang mendaftar dan menampilkan penyedia sumber, lihat Jenis dan Penyedia Sumber.

  4. Jika Anda belum melakukannya, instal Azure CLI. Anda bisa mendapatkan versi terbaru di Menginstal Azure CLI di Windows.

Membuat dan menetapkan definisi kebijakan

Langkah pertama menuju visibilitas sumber daya yang lebih baik adalah membuat dan menetapkan kebijakan pada sumber daya Anda. Langkah selanjutnya adalah mempelajari cara membuat dan menetapkan kebijakan secara terprogram. Contoh kebijakan ini mengaudit akun penyimpanan yang terbuka untuk semua jaringan publik menggunakan permintaan HTTP, PowerShell, dan Azure CLI.

Membuat dan menetapkan definisi kebijakan dengan PowerShell

  1. Gunakan cuplikan JSON berikut untuk membuat file JSON dengan nama AuditStorageAccounts.json.

    {
        "if": {
            "allOf": [{
                    "field": "type",
                    "equals": "Microsoft.Storage/storageAccounts"
                },
                {
                    "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                    "equals": "Allow"
                }
            ]
        },
        "then": {
            "effect": "audit"
        }
    }
    

    Untuk informasi selengkapnya tentang penulisan definisi kebijakan, lihat Struktur Definisi Azure Policy.

  2. Jalankan perintah berikut untuk membuat definisi kebijakan menggunakan AuditStorageAccounts.json file.

    New-AzPolicyDefinition -Name 'AuditStorageAccounts' -DisplayName 'Audit Storage Accounts Open to Public Networks' -Policy 'AuditStorageAccounts.json'
    

    Perintah ini membuat definisi kebijakan bernama Akun Penyimpanan Audit Terbuka untuk Jaringan Publik. Untuk informasi selengkapnya tentang parameter lain yang dapat Anda gunakan, lihat New-AzPolicyDefinition.

    Ketika dipanggil tanpa parameter lokasi, New-AzPolicyDefinition akan default ke menyimpan definisi kebijakan dalam langganan yang dipilih dari konteks sesi. Untuk menyimpan definisi ke lokasi lain, gunakan parameter berikut:

    • SubscriptionId - Simpan ke langganan lain. Membutuhkan nilai GUID.
    • ManagementGroupName - Simpan ke grup manajemen. Membutuhkan nilai untai.
  3. Setelah membuat definisi kebijakan, Anda bisa membuat penetapan kebijakan dengan menjalankan perintah berikut:

    $rg = Get-AzResourceGroup -Name 'ContosoRG'
    $Policy = Get-AzPolicyDefinition -Name 'AuditStorageAccounts'
    New-AzPolicyAssignment -Name 'AuditStorageAccounts' -PolicyDefinition $Policy -Scope $rg.ResourceId
    

    Ganti ContosoRG dengan nama grup sumber daya yang Anda maksudkan.

    Parameter Scope pada New-AzPolicyAssignment berfungsi dengan grup manajemen, langganan, grup sumber daya, atau sumber daya tunggal. Parameter menggunakan jalur sumber daya lengkap, yang dikembalikan oleh properti ResourceId pada Get-AzResourceGroup. Pola Scope untuk setiap kontainer adalah sebagai berikut. Ganti {rName}, {rgName}, {subId}, dan {mgName} masing-masing dengan nama sumber daya, nama grup sumber daya, ID langganan, dan nama grup manajemen. {rType} akan diganti dengan jenis sumber daya dari sumber daya, seperti Microsoft.Compute/virtualMachines untuk VM.

    • Sumber daya - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Grup sumber daya - /subscriptions/{subId}/resourceGroups/{rgName}
    • Langganan - /subscriptions/{subId}
    • Grup manajemen - /providers/Microsoft.Management/managementGroups/{mgName}

Untuk informasi selengkapnya tentang mengelola kebijakan sumber daya menggunakan modul Resource Manager PowerShell, lihat Az.Resources.

Membuat dan menetapkan definisi kebijakan menggunakan ARMClient

Gunakan prosedur berikut untuk membuat definisi kebijakan.

  1. Salin cuplikan JSON berikut untuk membuat file JSON. Anda akan memanggil file di langkah berikutnya.

    "properties": {
        "displayName": "Audit Storage Accounts Open to Public Networks",
        "policyType": "Custom",
        "mode": "Indexed",
        "description": "This policy ensures that storage accounts with exposure to Public Networks are audited.",
        "parameters": {},
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "type",
                        "equals": "Microsoft.Storage/storageAccounts"
                    },
                    {
                        "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                        "equals": "Allow"
                    }
                ]
            },
            "then": {
                "effect": "audit"
            }
        }
    }
    
  2. Buat definisi kebijakan menggunakan salah satu panggilan berikut:

    # For defining a policy in a subscription
    armclient PUT "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file>
    
    # For defining a policy in a management group
    armclient PUT "/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file>
    

    Ganti {subscriptionId} sebelumnya dengan ID langganan Anda atau {managementGroupId} dengan ID grup manajemen Anda.

    Untuk informasi selengkapnya tentang struktur kueri, lihat Definisi Azure Policy - Membuat atau Memperbarui dan Definisi Kebijakan - Membuat atau Memperbarui Di Grup Manajemen.

Gunakan prosedur berikut untuk membuat penetapan kebijakan dan menetapkan definisi kebijakan di tingkat grup sumber daya.

  1. Salin cuplikan JSON berikut untuk membuat file penetapan kebijakan JSON. Ganti contoh informasi dalam simbol <> dengan nilai Anda sendiri.

    {
        "properties": {
            "description": "This policy assignment makes sure that storage accounts with exposure to Public Networks are audited.",
            "displayName": "Audit Storage Accounts Open to Public Networks Assignment",
            "parameters": {},
            "policyDefinitionId": "/subscriptions/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks",
            "scope": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>"
        }
    }
    
  2. Buat penetapan kebijakan menggunakan panggilan berikut:

    armclient PUT "/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Authorization/policyAssignments/Audit Storage Accounts Open to Public Networks?api-version=2021-09-01" @<path to Assignment JSON file>
    

    Ganti contoh informasi dalam simbol <> dengan nilai Anda sendiri.

    Untuk informasi selengkapnya tentang melakukan panggilan HTTP ke REST API, lihat Sumber Daya Azure REST API.

Membuat dan menetapkan definisi kebijakan dengan Azure CLI

Untuk membuat definisi kebijakan, gunakan prosedur berikut:

  1. Salin cuplikan JSON berikut untuk membuat file penetapan kebijakan JSON.

    {
        "if": {
            "allOf": [{
                    "field": "type",
                    "equals": "Microsoft.Storage/storageAccounts"
                },
                {
                    "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                    "equals": "Allow"
                }
            ]
        },
        "then": {
            "effect": "audit"
        }
    }
    

    Untuk informasi selengkapnya tentang penulisan definisi kebijakan, lihat Struktur Definisi Azure Policy.

  2. Jalankan perintah berikut untuk membuat definisi kebijakan:

    az policy definition create --name 'audit-storage-accounts-open-to-public-networks' --display-name 'Audit Storage Accounts Open to Public Networks' --description 'This policy ensures that storage accounts with exposures to public networks are audited.' --rules '<path to json file>' --mode All
    

    Perintah ini membuat definisi kebijakan bernama Akun Penyimpanan Audit Terbuka untuk Jaringan Publik. Untuk informasi selengkapnya tentang parameter lain yang dapat Anda gunakan, lihat az policy definition create.

    Ketika dipanggil tanpa parameter lokasi, az policy definition creation akan default ke menyimpan definisi kebijakan dalam langganan yang dipilih dari konteks sesi. Untuk menyimpan definisi ke lokasi lain, gunakan parameter berikut:

    • subscription - Simpan ke langganan lain. Memerlukan nilai GUID untuk ID langganan atau nilai string untuk nama langganan.
    • management-group - Simpan ke grup manajemen. Membutuhkan nilai string.
  3. Gunakan perintah berikut untuk membuat penetapan kebijakan. Ganti contoh informasi dalam simbol <> dengan nilai Anda sendiri.

    az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'
    

    Parameter cakupan pada az policy assignment create bekerja dengan grup manajemen, langganan, grup sumber daya, atau sumber daya tunggal. Parameter menggunakan jalur sumber daya lengkap. Pola scope untuk setiap kontainer adalah sebagai berikut. Ganti {rName}, {rgName}, {subId}, dan {mgName} masing-masing dengan nama sumber daya, nama grup sumber daya, ID langganan, dan nama grup manajemen. {rType} akan diganti dengan jenis sumber daya dari sumber daya, seperti Microsoft.Compute/virtualMachines untuk VM.

    • Sumber daya - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Grup sumber daya - /subscriptions/{subID}/resourceGroups/{rgName}
    • Langganan - /subscriptions/{subID}
    • Grup manajemen - /providers/Microsoft.Management/managementGroups/{mgName}

Anda bisa mendapatkan ID Definisi Azure Policy menggunakan PowerShell dengan perintah berikut:

az policy definition show --name 'Audit Storage Accounts with Open Public Networks'

ID definisi kebijakan untuk definisi kebijakan yang Anda buat harus menyerupai contoh berikut:

"/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks"

Untuk informasi selengkapnya tentang cara mengelola kebijakan sumber daya dengan Azure CLI, lihat Kebijakan Sumber Daya Azure CLI.

Langkah berikutnya

Tinjau artikel berikut ini untuk informasi selengkapnya tentang perintah dan kueri di artikel ini.