Struktur penetapan Azure Policy

Penetapan kebijakan digunakan oleh Azure Policy untuk menentukan sumber daya mana yang ditetapkan kebijakan atau inisiatif. Penetapan kebijakan dapat menentukan nilai parameter untuk kelompok sumber daya tersebut pada waktu penugasan, sehingga memungkinkan untuk menggunakan kembali definisi kebijakan yang membahas properti sumber daya yang sama dengan kebutuhan yang berbeda untuk kepatuhan.

Catatan

Untuk informasi selengkapnya tentang cakupan Azure Policy, lihat Memahami cakupan dalam Azure Policy.

Anda menggunakan JavaScript Object Notation (JSON) untuk membuat penugasan kebijakan. Penetapan kebijakan berisi elemen untuk:

Misalnya, JSON berikut menunjukkan penetapan kebijakan dalam mode DoNotEnforce dengan parameter dinamis:

{
    "properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "metadata": {
            "assignedBy": "Cloud Center of Excellence"
        },
        "enforcementMode": "DoNotEnforce",
        "notScopes": [],
        "policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
        "nonComplianceMessages": [
            {
                "message": "Resource names must start with 'DeptA' and end with '-LC'."
            }
        ],
        "parameters": {
            "prefix": {
                "value": "DeptA"
            },
            "suffix": {
                "value": "-LC"
            }
        },
        "identity": {
            "type": "SystemAssigned"
        },
        "resourceSelectors": [],
        "overrides": []
    }
}

Semua sampel Azure Policy ada di sampel Azure Policy.

Nama tampilan dan deskripsi

Anda menggunakan displayName dan deskripsi untuk mengidentifikasi pembebasan kebijakan dan memberikan konteks untuk penggunaannya dengan sumber daya tertentu. displayName memiliki panjang maksimum 128 karakter dan description memiliki panjang maksimum 512 karakter.

Metadata

Properti opsional metadata menyimpan informasi tentang definisi 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. Setiap metadata properti memiliki batas 1.024 karakter.

Properti metadata umum

  • assignedBy (string): Nama ramah kepala keamanan yang membuat tugas.

  • createdBy (string): GUID kepala keamanan yang membuat tugas.

  • createdOn (string): Format Universal ISO 8601 DateTime dari waktu pembuatan tugas.

  • parameterScopes (objek): Kumpulan pasangan kunci-nilai tempat kunci cocok dengan nama parameter strongType yang dikonfigurasi, dan nilai menentukan lingkup sumber daya yang digunakan di Portal untuk menyediakan daftar sumber daya yang tersedia dengan mencocokkan strongType. Portal menetapkan nilai ini jika cakupannya berbeda dari lingkup tugas. Jika diset, edit penetapan kebijakan di Portal secara otomatis mengatur cakupan parameter ke nilai ini. Namun, cakupan tidak terkunci pada nilai, dan dapat diubah ke lingkup lain.

    Contoh parameterScopes berikut adalah untuk parameter strongType bernama backupPolicyId yang mengatur cakupan untuk pilihan sumber daya saat penetapan diedit di Portal.

    "metadata": {
        "parameterScopes": {
            "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}"
        }
    }
    
  • updatedBy (string): Nama ramah kepala keamanan yang memperbarui tugas, jika ada.

  • updatedOn (string): Format Universal ISO 8601 DateTime dari waktu pembuatan tugas, jika ada.

  • evidenceStorages (objek): Akun penyimpanan default yang direkomendasikan yang harus digunakan untuk menyimpan bukti pengesahan terhadap penetapan kebijakan dengan manual efek. Properti displayName adalah nama akun penyimpanan. Properti evidenceStorageAccountID adalah ID sumber daya akun penyimpanan. Properti evidenceBlobContainer adalah nama kontainer blob tempat Anda berencana untuk menyimpan bukti.

    {
      "properties": {
        "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}",
        "metadata": {
          "evidenceStorages": [
            {
              "displayName": "Default evidence storage",
              "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}",
              "evidenceBlobContainer": "evidence-container"
            }
          ]
        }
      }
    }
    

Pemilih sumber daya

Properti opsional resourceSelectors memfasilitasi praktik penyebaran aman (SDP) dengan memungkinkan Anda meluncurkan penetapan kebijakan secara bertahap berdasarkan faktor-faktor seperti lokasi sumber daya, jenis sumber daya, atau apakah sumber daya memiliki lokasi. Saat pemilih sumber daya digunakan, Azure Policy hanya akan mengevaluasi sumber daya yang berlaku untuk spesifikasi yang dibuat di pemilih sumber daya. Pemilih sumber daya juga dapat digunakan untuk mempersempit cakupan pengecualian dengan cara yang sama.

Dalam contoh skenario berikut, penetapan kebijakan baru dievaluasi hanya jika lokasi sumber daya adalah US Timur atau AS Barat.

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

Saat Anda siap untuk memperluas cakupan evaluasi untuk kebijakan Anda, Anda hanya perlu memodifikasi penugasan. Contoh berikut menunjukkan penetapan kebijakan kami dengan dua wilayah Azure lagi yang ditambahkan ke pemilih SDPRegions . Perhatikan, dalam contoh ini, SDP berarti untuk Brankas Praktik Penyebaran:

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus", "centralus", "southcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

Pemilih sumber daya memiliki properti berikut:

  • name: Nama pemilih sumber daya.

  • selectors: (Opsional) Properti yang digunakan untuk menentukan subset sumber daya mana yang berlaku untuk penetapan kebijakan yang harus dievaluasi untuk kepatuhan.

    • kind: Properti pemilih yang menjelaskan karakteristik mana yang mempersempit kumpulan sumber daya yang dievaluasi. Setiap jenis hanya dapat digunakan sekali dalam satu pemilih sumber daya. Nilai yang diperbolehkan adalah:

      • resourceLocation: Properti ini digunakan untuk memilih sumber daya berdasarkan jenisnya. Tidak dapat digunakan dalam pemilih sumber daya yang sama dengan resourceWithoutLocation.

      • resourceType: Properti ini digunakan untuk memilih sumber daya berdasarkan jenisnya.

      • resourceWithoutLocation: Properti ini digunakan untuk memilih sumber daya di tingkat langganan yang tidak memiliki lokasi. Saat ini hanya mendukung subscriptionLevelResources. Tidak dapat digunakan dalam pemilih sumber daya yang sama dengan resourceLocation.

    • in: Daftar nilai yang kinddiizinkan untuk . Tidak dapat digunakan dengan notIn. Dapat berisi hingga 50 nilai.

    • notIn: Daftar nilai yang tidak diizinkan untuk kind. Tidak dapat digunakan dengan in. Dapat berisi hingga 50 nilai.

Pemilih sumber daya dapat berisi beberapa pemilih. Agar berlaku untuk pemilih sumber daya, sumber daya harus memenuhi persyaratan yang ditentukan oleh semua pemilihnya. Selanjutnya, hingga 10 pemilih sumber daya dapat ditentukan dalam satu penugasan. Sumber daya dalam cakupan dievaluasi ketika memenuhi salah satu pemilih sumber daya ini.

Timpa

Properti opsional overrides memungkinkan Anda mengubah efek definisi kebijakan tanpa mengubah definisi kebijakan yang mendasar atau menggunakan efek berparameter dalam definisi kebijakan.

Kasus penggunaan yang paling umum untuk penimpaan adalah inisiatif kebijakan dengan sejumlah besar definisi kebijakan terkait. Dalam situasi ini, mengelola beberapa efek kebijakan dapat mengonsumsi upaya administratif yang signifikan, terutama ketika efeknya perlu diperbarui dari waktu ke waktu. Penimpaan dapat digunakan untuk memperbarui efek dari beberapa definisi kebijakan secara bersamaan dalam inisiatif.

Mari kita lihat contohnya. Bayangkan Anda memiliki inisiatif kebijakan bernama CostManagement yang menyertakan definisi kebijakan kustom denganpolicyDefinitionReferenceId corpVMSizePolicy dan satu efek .audit Misalkan Anda ingin menetapkan inisiatif CostManagement , tetapi belum ingin melihat kepatuhan yang dilaporkan untuk kebijakan ini. Efek 'audit' kebijakan ini dapat digantikan oleh 'dinonaktifkan' melalui penimpaan pada penetapan inisiatif, seperti yang ditunjukkan dalam sampel berikut:

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
        "overrides": [
            {
                "kind": "policyEffect",
                "value": "disabled",
                "selectors": [
                    {
                        "kind": "policyDefinitionReferenceId",
                        "in": [ "corpVMSizePolicy" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "CostManagement"
}

Penimpaan memiliki properti berikut:

  • kind: Properti yang akan diambil alih penugasan. Jenis yang didukung adalah policyEffect.

  • value: Nilai baru yang mengambil alih nilai yang ada. Nilai yang didukung adalah efek.

  • selectors: (Opsional) Properti yang digunakan untuk menentukan cakupan penetapan kebijakan apa yang harus diambil pada penimpaan.

    • kind: Properti pemilih yang menjelaskan karakteristik apa yang akan mempersempit cakupan penimpaan. Nilai yang diizinkan untuk kind: policyEffect adalah:

      • policyDefinitionReferenceId: Ini menentukan definisi kebijakan mana dalam penetapan inisiatif yang harus mengambil alih efek.
    • in: Daftar nilai yang kinddiizinkan untuk . Tidak dapat digunakan dengan notIn. Dapat berisi hingga 50 nilai.

    • notIn: Daftar nilai yang tidak diizinkan untuk kind. Tidak dapat digunakan dengan in. Dapat berisi hingga 50 nilai.

Perhatikan bahwa satu penimpaan dapat digunakan untuk mengganti efek banyak kebijakan dengan menentukan beberapa nilai dalam array policyDefinitionReferenceId. Satu penimpaan dapat digunakan hingga 50 policyDefinitionReferenceIds, dan satu penetapan kebijakan dapat berisi hingga 10 penimpaan, dievaluasi dalam urutan yang ditentukan. Sebelum penugasan dibuat, efek yang dipilih dalam penimpaan divalidasi terhadap aturan kebijakan dan daftar nilai yang diizinkan parameter (dalam kasus di mana efek diparameterkan).

Mode penegakan

Properti enforcementMode memberi pelanggan kemampuan untuk menguji hasil kebijakan tentang sumber daya yang ada tanpa memulai efek kebijakan atau memicu entri dalam log Azure Activity.

Skenario ini biasa disebut sebagai "Bagaimana Jika" dan selaras dengan praktik penyebaran yang aman. enforcementMode berbeda dari efek Dinonaktifkan, karena efek tersebut mencegah evaluasi sumber daya terjadi sama sekali.

Properti ini memiliki nilai berikut:

Mode Nilai JSON Jenis Remediasi secara manual Entri log aktivitas Deskripsi
Aktif Default string Ya Ya Efek kebijakan diberlakukan selama pembuatan atau pembaruan sumber daya.
Nonaktif DoNotEnforce string Ya Tidak Efek kebijakan tidak diberlakukan selama pembuatan atau pembaruan sumber daya.

Jika enforcementMode tidak ditentukan dalam definisi kebijakan atau inisiatif, nilai Default akan digunakan. Tugas remediasi dapat dimulai untuk kebijakan deployIfNotExists, bahkan ketika enforcementMode diatur ke DoNotEnforce.

Cakupan yang dikecualikan

Ruang lingkup tugas mencakup semua wadah sumber daya anak dan sumber daya anak. Jika wadah sumber daya anak atau sumber daya anak tidak boleh menerapkan definisi, masing-masing dapat dikecualikan dari evaluasi dengan mengatur notScopes. Properti ini adalah array untuk memungkinkan tidak termasuk satu atau beberapa kontainer sumber daya atau sumber daya dari evaluasi. notScopes dapat ditambahkan atau diperbarui setelah pembuatan tugas awal.

Catatan

Sumber daya yang dikecualikan berbeda dari sumber daya yang dibebaskan. Untuk informasi selengkapnya, lihat Memahami cakupan dalam Azure Policy.

ID definisi Policy

Bidang ini harus berupa nama jalur lengkap penugasan kebijakan atau penugasan inisiatif. policyDefinitionId adalah untai (karakter) dan bukan array. Konten terbaru dari definisi atau inisiatif kebijakan yang ditetapkan diambil setiap kali penetapan kebijakan dievaluasi. Disarankan bahwa jika beberapa kebijakan sering ditetapkan bersama-sama, untuk menggunakan inisiatif sebagai gantinya.

Pesan ketidakpatuhan

Untuk mengatur pesan kustom yang menjelaskan mengapa sumber daya tidak mematuhi definisi kebijakan atau inisiatif, atur nonComplianceMessages di dalam definisi penetapan. Node ini adalah array message entri. Pesan kustom ini merupakan tambahan pesan kesalahan default untuk ketidakpatuhan, dan bersifat opsional.

Penting

Pesan kustom untuk ketidakpatuhan hanya didukung pada definisi atau inisiatif dengan mode Resource Manager.

"nonComplianceMessages": [
    {
        "message": "Default message"
    }
]

Jika tugas adalah untuk inisiatif, pesan yang berbeda dapat dikonfigurasi untuk setiap definisi kebijakan di dalam inisiatif. Pesan menggunakan nilai policyDefinitionReferenceId yang dikonfigurasi dalam definisi inisiatif. Untuk detailnya, lihat properti definisi kebijakan.

"nonComplianceMessages": [
    {
        "message": "Default message"
    },
    {
        "message": "Message for just this policy definition by reference ID",
        "policyDefinitionReferenceId": "10420126870854049575"
    }
]

Parameter

Segmen penetapan kebijakan ini menyediakan nilai untuk parameter yang ditentukan dalam definisi kebijakan atau definisi inisiatif. Desain ini memungkinkan untuk menggunakan kembali definisi kebijakan atau inisiatif dengan sumber daya yang berbeda, tetapi periksalah nilai atau hasil bisnis yang berbeda.

"parameters": {
    "prefix": {
        "value": "DeptA"
    },
    "suffix": {
        "value": "-LC"
    }
}

Dalam contoh ini, parameter yang sebelumnya didefinisikan dalam definisi kebijakan adalah prefix dan suffix. Penetapan kebijakan khusus ini ditetapkan prefix ke DeptA dan suffix ke -LC. Definisi kebijakan yang sama dapat digunakan kembali dengan serangkaian parameter yang berbeda untuk departemen yang berbeda, mengurangi duplikasi dan kompleksitas definisi kebijakan sembari memberikan fleksibilitas.

Identitas

Untuk penetapan kebijakan dengan efek yang diatur ke deployIfNotExist atau modifikasi, anda harus memiliki properti identitas untuk melakukan remediasi pada sumber daya yang tidak sesuai. Saat menggunakan identitas, pengguna juga harus menentukan lokasi untuk penetapan.

Catatan

Penugasan kebijakan tunggal dapat dikaitkan dengan hanya satu identitas terkelola yang ditetapkan oleh sistem atau pengguna. Tetapi, identitas tersebut dapat ditetapkan lebih dari satu peran jika diperlukan.

# System-assigned identity
 "identity": {
    "type": "SystemAssigned"
  }
# User-assigned identity
  "identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/SubscriptionID/resourceGroups/testResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
    }
  },

Langkah berikutnya