Menggunakan Azure Policy untuk memberlakukan eksekusi pekerjaan pada Hybrid Runbook Worker
Penting
User Hybrid Runbook Worker (Windows dan Linux) berbasis Agen Azure Automation telah dihentikan pada 31 Agustus 2024 dan tidak lagi didukung. Ikuti panduan tentang cara bermigrasi dari Hybrid Runbook Worker Pengguna berbasis Agen yang ada ke Hybrid Worker berbasis Ekstensi.
Memulai runbook pada Hybrid Runbook Worker menggunakan opsi Jalankan pada yang memungkinkan Anda menentukan nama grup Hybrid Runbook Worker saat memulai dari portal Microsoft Azure, dengan Azure PowerShell, atau REST API. Saat grup ditentukan, salah satu pekerja dalam grup tersebut mengambil dan menjalankan runbook. Jika runbook Anda tidak menentukan opsi ini, Azure Automation menjalankan runbook dalam kotak pasir Azure.
Siapa pun di organisasi Anda yang merupakan anggota Operator Pekerjaan Automation atau lebih tinggi dapat membuat pekerjaan runbook. Untuk mengelola eksekusi runbook yang menargetkan grup Hybrid Runbook Worker di akun Automation, Anda dapat menggunakan Azure Policy. Ini membantu menegakkan standar organisasi dan memastikan pekerjaan otomatisasi Anda dikontrol dan dikelola oleh mereka yang ditunjuk, dan siapa pun tidak dapat mengeksekusi runbook di kotak pasir Azure, hanya pada pekerja Hybrid Runbook.
Definisi Azure Policy kustom disertakan dalam artikel ini untuk membantu Anda mengontrol aktivitas ini menggunakan operasi REST API Automation berikut. Khususnya:
Kebijakan ini didasarkan pada properti runOn
. Kebijakan ini memvalidasi nilai properti, yang seharusnya berisi nama grup Hybrid Runbook Worker yang ada. Jika nilainya null, ini ditafsirkan sebagai permintaan buat untuk pekerjaan, jadwal pekerjaan, atau webhook ditujukan untuk kotak pasir Azure, dan permintaan ditolak.
Izin yang diperlukan
Anda harus menjadi anggota peran Pemilik di tingkat langganan untuk izin ke sumber daya Azure Policy.
Membuat dan menetapkan definisi kebijakan
Di sini kami menyusun aturan kebijakan lalu menetapkannya ke grup manajemen atau langganan, dan secara opsional menentukan grup sumber daya dalam langganan. Jika Anda belum terbiasa dengan bahasa kebijakan, merujuk ke struktur definisi kebijakan untuk cara menyusun definisi kebijakan.
Menggunakan cuplikan JSON berikut untuk membuat file JSON dengan nama AuditAutomationHRWJobExecution.json.
{ "properties": { "displayName": "Enforce job execution on Automation Hybrid Runbook Worker", "description": "Enforce job execution on Hybrid Runbook Workers in your Automation account.", "mode": "all", "parameters": { "effectType": { "type": "string", "defaultValue": "Deny", "allowedValues": [ "Deny", "Disabled" ], "metadata": { "displayName": "Effect", "description": "Enable or disable execution of the policy" } } }, "policyRule": { "if": { "anyOf": [ { "allOf": [ { "field": "type", "equals": "Microsoft.Automation/automationAccounts/jobs" }, { "value": "[length(field('Microsoft.Automation/automationAccounts/jobs/runOn'))]", "less": 1 } ] }, { "allOf": [ { "field": "type", "equals": "Microsoft.Automation/automationAccounts/webhooks" }, { "value": "[length(field('Microsoft.Automation/automationAccounts/webhooks/runOn'))]", "less": 1 } ] }, { "allOf": [ { "field": "type", "equals": "Microsoft.Automation/automationAccounts/jobSchedules" }, { "value": "[length(field('Microsoft.Automation/automationAccounts/jobSchedules/runOn'))]", "less": 1 } ] } ] }, "then": { "effect": "[parameters('effectType')]" } } } }
Jalankan perintah Azure PowerShell atau Azure CLI berikut ini untuk membuat definisi kebijakan menggunakan file AuditAutomationHRWJobExecution.jso.
az policy definition create --name 'audit-enforce-jobs-on-automation-hybrid-runbook-workers' --display-name 'Audit Enforce Jobs on Automation Hybrid Runbook Workers' --description 'This policy enforces job execution on Automation account user Hybrid Runbook Workers.' --rules 'AuditAutomationHRWJobExecution.json' --mode All
Perintah ini membuat definisi kebijakan bernama Pekerjaan Pemberlakuan Audit pada Automation Hybrid Runbook Workers. Untuk informasi selengkapnya tentang parameter lain yang dapat Anda gunakan, lihat az policy definition create.
Ketika dipanggil tanpa parameter lokasi,
az policy definition create
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.
Setelah membuat definisi kebijakan, Anda bisa membuat penetapan kebijakan dengan menjalankan perintah berikut:
az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'
Parameter scope pada
az policy assignment create
berfungsi 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, sepertiMicrosoft.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 Enforce Jobs on Automation Hybrid Runbook Workers'
ID definisi kebijakan untuk definisi kebijakan yang Anda buat harus menyerupai contoh berikut:
"/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Enforce Jobs on Automation Hybrid Runbook Workers"
- Sumber daya -
Masuk ke portal Azure.
Luncurkan layanan Azure Policy di portal Microsoft Azure dengan memilih Semua layanan, lalu cari dan pilih Kebijakan.
Pilih Kepatuhan di sisi kiri halaman. Lalu temukan penetapan kebijakan yang Anda buat.
Ketika salah satu operasi REST Automation dijalankan tanpa merujuk ke Hybrid Runbook Worker dalam isi permintaan, kode respons 403 dikembalikan dengan kesalahan yang mirip dengan contoh berikut yang menunjukkan operasi percobaan eksekusi pada kotak pasir Azure:
{
"error": {
"code": "RequestDisallowedByPolicy",
"target": "Start_VMS",
"message": "Resource 'Start_VMS' was disallowed by policy. Policy identifiers: '[{\"policyAssignment\":{\"name\":\"Enforce Jobs on Automation Hybrid Runbook Workers\",\"id\":\"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MAIC-RG/providers/Microsoft.Authorization/policyAssignments/fd5e2cb3842d4eefbc857917\"},\"policyDefinition\":{\"name\":\"Enforce Jobs on Automation Hybrid Runbook Workers\",\"id\":\"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/policyDefinitions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f\"}}]'.",
"additionalInfo": [
{
"type": "PolicyViolation",
"info": {
"policyDefinitionDisplayName": "Enforce Jobs on Automation Hybrid Runbook Workers",
"evaluationDetails": {
"evaluatedExpressions": [
{
"result": "True",
"expressionKind": "Field",
"expression": "type",
"path": "type",
"expressionValue": "Microsoft.Automation/automationAccounts/jobs",
"targetValue": "Microsoft.Automation/automationAccounts/jobs",
"operator": "Equals"
},
{
"result": "True",
"expressionKind": "Value",
"expression": "[length(field('Microsoft.Automation/automationAccounts/jobs/runOn'))]",
"expressionValue": 0,
"targetValue": 1,
"operator": "Less"
}
]
},
"policyDefinitionId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/policyDefinitions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"policyDefinitionName": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"policyDefinitionEffect": "Deny",
"policyAssignmentId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MAIC-RG/providers/Microsoft.Authorization/policyAssignments/fd5e2cb3842d4eefbc857917",
"policyAssignmentName": "fd5e2cb3842d4eefbc857917",
"policyAssignmentDisplayName": "Enforce Jobs on Automation Hybrid Runbook Workers",
"policyAssignmentScope": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MAIC-RG",
"policyAssignmentParameters": {}
}
}
]
}
}
Percobaan operasi juga dicatat dalam Log Aktivitas akun Automasi, mirip dengan contoh berikut.
Langkah berikutnya
Untuk bekerja dengan runbook, lihat Mengelola runbook di Azure Automation.