Struktur definisi inisiatif Azure Policy

Inisiatif memungkinkan Anda mengelompokkan beberapa definisi kebijakan terkait untuk menyederhanakan tugas dan manajemen karena Anda bekerja dengan grup sebagai satu item. Misalnya, Anda dapat mengelompokkan definisi kebijakan penandaan terkait ke dalam satu inisiatif. Daripada menetapkan setiap kebijakan satu per satu, Anda menerapkan inisiatif.

Anda menggunakan JSON untuk membuat definisi inisiatif kebijakan. Definisi inisiatif kebijakan berisi elemen untuk:

Contoh berikut ini menggambarkan cara membuat inisiatif untuk menangani dua tag: costCenter dan productName. Ini menggunakan dua kebijakan bawaan untuk menerapkan nilai tag default.

{
    "properties": {
        "displayName": "Billing Tags Policy",
        "policyType": "Custom",
        "description": "Specify cost Center tag and product name tag",
        "metadata": {
            "version": "1.0.0",
            "category": "Tags"
        },
        "parameters": {
            "costCenterValue": {
                "type": "String",
                "metadata": {
                    "description": "required value for Cost Center tag"
                },
                "defaultValue": "DefaultCostCenter"
            },
            "productNameValue": {
                "type": "String",
                "metadata": {
                    "description": "required value for product Name tag"
                },
                "defaultValue": "DefaultProduct"
            }
        },
        "policyDefinitions": [{
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
                "parameters": {
                    "tagName": {
                        "value": "costCenter"
                    },
                    "tagValue": {
                        "value": "[parameters('costCenterValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
                "parameters": {
                    "tagName": {
                        "value": "costCenter"
                    },
                    "tagValue": {
                        "value": "[parameters('costCenterValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
                "parameters": {
                    "tagName": {
                        "value": "productName"
                    },
                    "tagValue": {
                        "value": "[parameters('productNameValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
                "parameters": {
                    "tagName": {
                        "value": "productName"
                    },
                    "tagValue": {
                        "value": "[parameters('productNameValue')]"
                    }
                }
            }
        ]
    }
}

Bawaan dan pola Azure Policy ada pada sampel Azure Policy.

Metadata

Properti metadata opsional menyimpan informasi tentang definisi inisiatif kebijakan. Pelanggan dapat menentukan properti dan nilai apa pun yang berguna bagi organisasi mereka di metadata. Namun, ada beberapa properti umum yang digunakan oleh Azure Policy dan bawaan.

Properti metadata umum

  • version (string): Melacak detail tentang versi konten definisi inisiatif kebijakan.

  • category (string): Menentukan di bawah kategori mana di portal Azure definisi kebijakan ditampilkan.

    Catatan

    Untuk inisiatif Kepatuhan Terhadap Peraturan, category harus Kepatuhan Terhadap Peraturan.

  • preview (boolean): Bendera benar atau salah jika definisi inisiatif kebijakan adalah pratinjau.

  • deprecated(boolean): Bendera benar atau salah jika definisi inisiatif kebijakan telah ditandai sebagai tidak digunakan lagi.

Catatan

Layanan Azure Policy menggunakan properti version, preview, dan deprecated untuk menyampaikan tingkat perubahan pada definisi kebijakan bawaan atau inisiatif dan status. Format version adalah: {Major}.{Minor}.{Patch}. Status-status tertentu seperti tidak digunakan lagi atau pratinjau, ditambahkan ke properti version atau di properti lain sebagai boolean. Untuk informasi selengkapnya tentang cara bawaan versi Azure Policy, lihat Penerapan versi bawaan.

Parameter

Parameter membantu menyederhanakan manajemen kebijakan Anda dengan mengurangi jumlah definisi kebijakan. Anggaplah parameter sebagai bidang pada formulir - name, address, city, state. Parameter ini selalu tetap sama, tetapi nilainya berubah berdasarkan individu yang mengisi formulir. Parameter bekerja dengan cara yang sama ketika membangun inisiatif kebijakan. Dengan menyertakan parameter dalam definisi inisiatif kebijakan, Anda dapat menggunakan kembali parameter tersebut dalam kebijakan yang disertakan.

Catatan

Setelah inisiatif ditetapkan, parameter tingkat inisiatif tidak dapat diubah. Karena ini, rekomendasinya adalah mengatur defaultValue saat menentukan parameter.

Properti parameter

Parameter memiliki properti berikut yang digunakan dalam definisi inisiatif kebijakan:

  • name: Nama parameter Anda. Digunakan oleh fungsi penyebaran parameters dalam aturan kebijakan. Untuk informasi selengkapnya, lihat menggunakan nilai parameter.
  • type: Menentukan apakah parameter adalah string, array, object, boolean, integer, float, atau datetime.
  • metadata: Mendefinisikan subproperti yang terutama digunakan oleh portal Azure untuk menampilkan informasi yang mudah digunakan:
    • description: (Opsional) Penjelasan tentang apa parameter digunakan. Dapat digunakan untuk memberikan contoh nilai yang dapat diterima.
    • displayName: Nama yang mudah diingat yang ditampilkan di portal untuk parameter.
    • strongType: (Opsional) Digunakan saat menetapkan definisi kebijakan melalui portal. Menyediakan daftar sadar konteks. Untuk informasi selengkapnya, lihat strongType.
  • defaultValue: (Opsional) Atur nilai parameter dalam tugas jika tidak ada nilai yang diberikan.
  • allowedValues: (Opsional) Menyediakan array nilai yang diterima parameter selama penugasan.

Sebagai contoh, Anda dapat menentukan definisi inisiatif kebijakan untuk membatasi lokasi sumber daya dalam berbagai definisi kebijakan yang disertakan. Parameter untuk definisi inisiatif kebijakan tersebut mungkin berupa allowedLocations. Parameter kemudian tersedia untuk setiap definisi kebijakan yang disertakan dan didefinisikan selama penugasan inisiatif kebijakan.

"parameters": {
    "init_allowedLocations": {
        "type": "array",
        "metadata": {
            "description": "The list of allowed locations for resources.",
            "displayName": "Allowed locations",
            "strongType": "location"
        },
        "defaultValue": [ "westus2" ],
        "allowedValues": [
            "eastus2",
            "westus2",
            "westus"
        ]
    }
}

Meneruskan nilai parameter ke definisi kebijakan

Anda menyatakan parameter inisiatif mana yang Anda berikan yang menyertakan definisi kebijakan dalam array policyDefinitions dari definisi inisiatif. Meskipun nama parameter dapat sama, menggunakan nama yang berbeda dalam inisiatif daripada dalam definisi kebijakan menyederhanakan keterbacaan kode.

Misalnya, parameter init_allowedLocations yang ditentukan sebelumnya dapat diteruskan ke beberapa definisi kebijakan yang disertakan dan parameternya, sql_locationsdan vm_locations, seperti ini:

"policyDefinitions": [
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0ec8fc28-d5b7-4603-8fec-39044f00a92b",
        "policyDefinitionReferenceId": "allowedLocationsSQL",
        "parameters": {
            "sql_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    },
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/aa09bd0f-aa5f-4343-b6ab-a33a6a6304f3",
        "policyDefinitionReferenceId": "allowedLocationsVMs",
        "parameters": {
            "vm_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    }
]

Sampel ini mereferensikan parameter init_allowedLocations yang ditunjukkan dalam properti parameter.

strongType

Dalam properti metadata, Anda dapat menggunakan strongType untuk menyediakan daftar opsi multipilih dalam portal Microsoft Azure. strongType dapat menjadi jenis sumber daya yang didukung atau nilai yang diperbolehkan. Untuk menentukan apakah jenis sumber daya valid untuk strongType, gunakan Get-AzResourceProvider.

Beberapa jenis sumber daya yang tidak dikembalikan oleh Get-AzResourceProvider didukung. Jenis sumber daya tersebut adalah:

  • Microsoft.RecoveryServices/vaults/backupPolicies

Nilai jenis non sumber daya yang diperbolehkan untuk strongType adalah:

  • location
  • resourceTypes
  • storageSkus
  • vmSKUs
  • existingResourceGroups

Definisi kebijakan

Bagian policyDefinitions dari definisi inisiatif adalah array tempat definisi kebijakan yang ada termasuk dalam inisiatif. Seperti disebutkan dalam Meneruskan nilai parameter ke definisi kebijakan, properti ini adalah tempat parameter inisiatif diteruskan ke definisi kebijakan.

Properti definisi kebijakan

Setiap elemen array yang mewakili definisi kebijakan memiliki properti berikut:

  • policyDefinitionId (string): ID definisi kebijakan kustom atau bawaan untuk disertakan.
  • policyDefinitionReferenceId (string): Nama pendek untuk definisi kebijakan yang disertakan.
  • parameters: (Opsional) Pasangan nama/nilai untuk meneruskan parameter inisiatif ke definisi kebijakan yang disertakan sebagai properti dalam definisi kebijakan tersebut. Untuk informasi selengkapnya, lihat Parameter.
  • groupNames (array string): (Opsional) Grup yang beranggotakan definisi kebijakan. Untuk informasi selengkapnya, lihat Grup kebijakan.

Berikut adalah contoh policyDefinitions yang memiliki dua definisi kebijakan yang disertakan yang masing-masing meneruskan parameter inisiatif yang sama:

"policyDefinitions": [
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0ec8fc28-d5b7-4603-8fec-39044f00a92b",
        "policyDefinitionReferenceId": "allowedLocationsSQL",
        "parameters": {
            "sql_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    },
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/aa09bd0f-aa5f-4343-b6ab-a33a6a6304f3",
        "policyDefinitionReferenceId": "allowedLocationsVMs",
        "parameters": {
            "vm_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    }
]

Grup definisi kebijakan

Definisi kebijakan dalam definisi inisiatif dapat dikelompokkan dan dikategorikan. Fitur Kepatuhan Terhadap Peraturan (pratinjau) Azure Policy menggunakan properti ini untuk mengelompokkan definisi ke dalam domain kontrol dan kepatuhan. Informasi ini ditentukan dalam properti policyDefinitionGroupsarray. Detail pengelompokan tambahan dapat ditemukan di objek policyMetadata yang dibuat oleh Microsoft. Untuk mendapatkan informasi, lihat objek metadata.

Parameter grup definisi kebijakan

Setiap elemen array di policyDefinitionGroups harus memiliki kedua properti berikut:

  • name (karakter) [wajib]: Nama pendek untuk grup. Dalam Kepatuhan Terhadap Peraturan, kontrol. Nilai properti ini digunakan oleh groupNames dalam policyDefinitions.

  • category (string): Hierarki yang dimiliki grup. Dalam Kepatuhan Terhadap Peraturan, domain kepatuhan kontrol.

  • displayName (string): Nama yang mudah diingat untuk grup atau kontrol. Digunakan oleh portal.

  • description (string): Deskripsi tentang apa yang dicakup grup atau kontrol.

  • additionalMetadataId (string): Lokasi objek policyMetadata yang memiliki detail tambahan tentang domain kontrol dan kepatuhan.

    Catatan

    Pelanggan dapat menunjuk ke objek PolicyMetadata yang ada. Namun, objek ini berupa baca-saja dan hanya dibuat oleh Microsoft.

Contoh properti policyDefinitionGroups dari definisi inisiatif bawaan NIST terlihat seperti ini:

"policyDefinitionGroups": [
    {
        "name": "NIST_SP_800-53_R4_AC-1",
        "additionalMetadataId": "/providers/Microsoft.PolicyInsights/policyMetadata/NIST_SP_800-53_R4_AC-1"
    }
]

Objek metadata

Bawaan Kepatuhan Terhadap Peraturan yang dibuat oleh Microsoft memiliki informasi tambahan tentang setiap kontrol. Informasi ini adalah:

  • Ditampilkan di portal Microsoft Azure pada gambaran umum kontrol pada inisiatif Kepatuhan Terhadap Peraturan.
  • Tersedia melalui REST API. Lihat penyedia Microsoft.PolicyInsights sumber daya dan grup operasi PolicyMetadata.
  • Tersedia melalui Azure CLI. Lihat perintah metadata kebijakan az.

Penting

Objek metadata untuk Kepatuhan Terhadap Peraturan bersifat baca-saja dan tidak dapat dibuat oleh pelanggan.

Metadata untuk pengelompokan kebijakan memiliki informasi berikut dalam node properties:

  • metadataId: ID Kontrol yang berkaitan dengan pengelompokan.
  • category (diperlukan): Domain kepatuhan tempat kontrol berada.
  • title(diperlukan): Nama yang mudah diingat dari ID Kontrol.
  • owner (diperlukan): Mengidentifikasi siapa yang memiliki tanggung jawab untuk kontrol di Azure: Pelanggan, Microsoft, Bersama.
  • description: Informasi tambahan tentang kontrol.
  • requirements: Rincian tentang tanggung jawab pelaksanaan kontrol.
  • additionalContentUrl: Tautan ke informasi lebih lanjut tentang kontrol. Properti ini biasanya merupakan tautan ke bagian dokumentasi yang mencakup kontrol ini dalam standar kepatuhan.

Di bawah ini adalah contoh policyMetadata objek. Contoh metadata ini milik kontrol NIST SP 800-53 R4 AC-1.

{
  "properties": {
    "metadataId": "NIST SP 800-53 R4 AC-1",
    "category": "Access Control",
    "title": "Access Control Policy and Procedures",
    "owner": "Shared",
    "description": "**The organization:**    \na. Develops, documents, and disseminates to [Assignment: organization-defined personnel or roles]:  \n1. An access control policy that addresses purpose, scope, roles, responsibilities, management commitment, coordination among organizational entities, and compliance; and  \n2. Procedures to facilitate the implementation of the access control policy and associated access controls; and  \n  
\nb. Reviews and updates the current:  \n1. Access control policy [Assignment: organization-defined frequency]; and  \n2. Access control procedures [Assignment: organization-defined frequency].",
    "requirements": "**a.**  The customer is responsible for developing, documenting, and disseminating access control policies and procedures. The customer access control policies and procedures address access to all customer-deployed resources and customer system access (e.g., access to customer-deployed virtual machines, access to customer-built applications).  \n**b.**  The customer is responsible for reviewing and updating access control policies and procedures in accordance with FedRAMP requirements.",
    "additionalContentUrl": "https://nvd.nist.gov/800-53/Rev4/control/AC-1"
  },
  "id": "/providers/Microsoft.PolicyInsights/policyMetadata/NIST_SP_800-53_R4_AC-1",
  "name": "NIST_SP_800-53_R4_AC-1",
  "type": "Microsoft.PolicyInsights/policyMetadata"
}

Langkah berikutnya