Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sebelum memulai, ada baiknya membaca halaman gambaran umum untuk konfigurasi komputer, dan detail tentang opsi remediasi konfigurasi mesin.
Important
Mesin virtual Azure memerlukan ekstensi konfigurasi mesin. Untuk menyebarkan ekstensi dalam skala besar di semua mesin, tetapkan inisiatif kebijakan berikut: Deploy prerequisites to enable machine configuration policies on virtual machines
Untuk menggunakan paket konfigurasi komputer yang menerapkan konfigurasi, ekstensi konfigurasi tamu Azure VM versi 1.26.24 atau yang lebih baru, atau agen Arc 1.10.0 atau yang lebih baru, diperlukan.
Definisi kebijakan konfigurasi komputer kustom menggunakan salah satu AuditIfNotExists atau DeployIfNotExists berada dalam status dukungan Generally Available (GA).
Gunakan langkah-langkah berikut untuk membuat kebijakan Anda sendiri yang mengaudit kepatuhan atau mengelola keadaan mesin yang diaktifkan oleh Azure atau Arc.
Instal PowerShell 7 dan modul PowerShell yang diperlukan
Pertama, siapkan lingkungan penulisan konfigurasi komputer untuk menginstal versi PowerShell yang diperlukan untuk OS Anda dan modul GuestConfiguration .
Membuat dan menerbitkan artefak paket konfigurasi mesin
Jika Anda belum melakukannya, buat dan terbitkan paket konfigurasi komputer kustom dengan mengikuti langkah-langkah dalam Cara membuat artefak paket konfigurasi komputer kustom. Kemudian validasi paket di lingkungan pengembangan Anda dengan mengikuti langkah-langkah dalam Cara menguji artefak paket konfigurasi mesin.
Note
Contoh kode dalam artikel ini mereferensikan $contentUri variabel. Jika Anda menggunakan sesi PowerShell yang sama dengan tutorial sebelumnya untuk membuat dan menguji artefak paket Anda, variabel tersebut mungkin sudah memiliki URI ke paket Anda.
Jika Anda tidak memiliki variabel $contentUri diatur ke URI untuk paket Anda dalam sesi PowerShell Anda, Anda perlu mengaturnya. Contoh ini menggunakan string koneksi akun penyimpanan dan cmdlet New-AzStorageContext untuk membuat konteks penyimpanan. Kemudian mendapatkan blob penyimpanan untuk paket yang diterbitkan dan menggunakan atribut objek tersebut untuk mendapatkan URI konten.
$connectionString = '<storage-account-connection-string>'
$context = New-AzStorageContext -ConnectionString $connectionString
$getParams = @{
Context = $context
Container = '<container-name>'
Blob = '<published-package-file-name>'
}
$blob = Get-AzStorageBlob @getParams
$contentUri = $blob.ICloudBlob.Uri.AbsoluteUri
Persyaratan kebijakan untuk konfigurasi mesin
Bagian metadata definisi kebijakan harus menyertakan dua properti agar layanan konfigurasi mesin dapat mengotomatiskan penyediaan dan pelaporan penugasan konfigurasi tamu.
Properti kategori harus diatur ke Guest Configuration dan bagian bernama guestConfiguration harus berisi informasi tentang penetapan konfigurasi komputer. Cmdlet New-GuestConfigurationPolicy membuat teks ini secara otomatis.
Contoh berikut menunjukkan bagian metadata yang secara otomatis dibuat oleh New-GuestConfigurationPolicy.
"metadata": {
"category": "Guest Configuration",
"guestConfiguration": {
"name": "test",
"version": "1.0.0",
"contentType": "Custom",
"contentUri": "CUSTOM-URI-HERE",
"contentHash": "CUSTOM-HASH-VALUE-HERE",
"configurationParameter": {}
}
}
Jika efek definisi diatur ke DeployIfNotExists, bagian tersebut harus berisi detail penerapan tentang penetapan konfigurasi mesin. Cmdlet New-GuestConfigurationPolicy membuat teks ini secara otomatis.
Buat definisi Azure Policy
Setelah paket kebijakan kustom konfigurasi mesin dibuat dan diunggah, buat definisi kebijakan konfigurasi mesin. Cmdlet New-GuestConfigurationPolicy menggunakan paket kebijakan khusus dan membuat definisi kebijakan.
Parameter PolicyId dari New-GuestConfigurationPolicy membutuhkan untai (karakter) yang unik. Pengidentifikasi unik (GUID) global diperlukan. Untuk definisi baru, buat GUID baru menggunakan New-GUID cmdlet . Saat membuat pembaruan pada definisi, gunakan untai (karakter) unik yang sama yang digunakan untuk PolicyId guna memastikan bahwa definisi yang benar diperbarui.
Parameter-parameter dari cmdlet New-GuestConfigurationPolicy:
PolicyId: GUID.
ContentUri: URI HTTP(s) publik dari paket konten konfigurasi mesin.
DisplayName: Nama tampilan kebijakan.
Description: Deskripsi kebijakan.
Parameter: Parameter kebijakan yang disediakan dalam tabel hash.
PolicyVersion: Versi kebijakan.
Path: Jalur tujuan tempat definisi kebijakan dibuat. Jangan tentukan parameter ini sebagai jalur ke salinan lokal paket.
Platform: Platform target (Windows/Linux) untuk paket kebijakan dan konten konfigurasi mesin.
Mode: (peka huruf besar/kecil:
ApplyAndMonitor,ApplyAndAutoCorrect,Audit) pilih apakah kebijakan harus mengaudit atau menyebarkan konfigurasi. Default adalahAudit.Tag: Menambahkan satu atau beberapa filter tag ke definisi kebijakan.
LocalContentPath: Jalur ke salinan
.ziplokal file paket Konfigurasi Komputer. Parameter ini diperlukan jika Anda menggunakan Identitas Terkelola yang Ditetapkan Pengguna untuk menyediakan akses ke blob Azure Storage.ManagedIdentityResourceId:
resourceIdadalah Identitas Terkelola yang Ditugaskan oleh Pengguna yang memiliki akses baca ke blob Azure Storage yang berisi file paket Konfigurasi Mesin.zip. Parameter ini diperlukan jika Anda menggunakan Identitas Terkelola yang Ditetapkan Pengguna untuk menyediakan akses ke blob Azure Storage.ExcludeArcMachines: Menentukan bahwa definisi Kebijakan harus mengecualikan komputer Arc. Parameter ini diperlukan jika Anda menggunakan Identitas Terkelola yang Ditetapkan Pengguna untuk menyediakan akses ke blob Azure Storage.
UseSystemAssignedIdentity: Ini adalah opsi untuk menggunakan identitas yang ditetapkan sistem untuk mengunduh paket dari kontainer akun penyimpanan alih-alih menggunakan URL SaS.
Anda tidak dapat menggunakan opsi ini dengan ManagedIdentityResourceId. Opsinya saling eksklusif.
Anda dapat menggunakan parameter ini tanpa opsi ExcludeArcMachines karena identitas yang ditetapkan sistem tersedia untuk komputer Arc.
Important
Tidak seperti Azure VM, komputer yang terhubung dengan Arc saat ini tidak mendukung Identitas Terkelola yang Ditetapkan Pengguna. Akibatnya, -ExcludeArcMachines tanda diperlukan untuk memastikan pengecualian mesin tersebut dari definisi kebijakan. Agar Azure VM mengunduh paket yang ditetapkan dan menerapkan kebijakan, Agen Konfigurasi Tamu harus versi 1.29.82.0 atau lebih tinggi untuk Windows dan versi 1.26.76.0 atau yang lebih tinggi untuk Linux.
Untuk komputer yang terhubung dengan Arc, Anda juga dapat menggunakan Identitas Terkelola yang Ditetapkan Sistem untuk mengunduh paket.
Untuk informasi selengkapnya tentang parameter Mode , lihat halaman Cara mengonfigurasi opsi remediasi untuk konfigurasi komputer.
Buat definisi kebijakan yang mengaudit menggunakan paket konfigurasi kustom, di jalur tertentu:
$PolicyConfig = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My audit policy'
Description = 'My audit policy'
Path = './policies/auditIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
}
New-GuestConfigurationPolicy @PolicyConfig
Buat definisi kebijakan yang memberlakukan paket konfigurasi kustom, di jalur tertentu:
$PolicyConfig2 = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My deployment policy'
Description = 'My deployment policy'
Path = './policies/deployIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
Mode = 'ApplyAndAutoCorrect'
}
New-GuestConfigurationPolicy @PolicyConfig2
Buat definisi kebijakan yang memberlakukan paket konfigurasi kustom menggunakan Identitas Terkelola yang Ditetapkan Pengguna:
$PolicyConfig3 = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My deployment policy'
Description = 'My deployment policy'
Path = './policies/deployIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
Mode = 'ApplyAndAutoCorrect'
LocalContentPath = "C:\Local\Path\To\Package" # Required parameter for managed identity
ManagedIdentityResourceId = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}" # Required parameter for managed identity
}
New-GuestConfigurationPolicy @PolicyConfig3 -ExcludeArcMachines
Untuk skenario ini, Anda perlu menonaktifkan pengaturan Izinkan akses anonim Blob dan menetapkan peran Pembaca Data Blob Penyimpanan kepada identitas pada akun penyimpanan.
Buat definisi kebijakan yang memberlakukan paket konfigurasi kustom menggunakan identitas terkelola System-Assigned:
$PolicyConfig4 = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My deployment policy'
Description = 'My deployment policy'
Path = './policies/deployIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
Mode = 'ApplyAndAutoCorrect'
LocalContentPath = "C:\Local\Path\To\Package" # Required parameter for managed identity
}
New-GuestConfigurationPolicy @PolicyConfig4 -UseSystemAssignedIdentity
Untuk skenario ini, Anda perlu menonaktifkan pengaturan Izinkan akses anonim Blob dan menetapkan peran Pembaca Data Blob Penyimpanan pada akun penyimpanan ke identitas sistem.
Note
Anda dapat mengambil resourceId dari identitas yang dikelola menggunakan cmdlet PowerShell Get-AzUserAssignedIdentity.
Output cmdlet mengembalikan objek yang berisi nama tampilan definisi dan jalur dari file kebijakan. Definisi file JSON yang membuat definisi kebijakan audit memiliki nama auditIfNotExists.json dan file yang membuat definisi kebijakan untuk menerapkan konfigurasi memiliki nama deployIfNotExists.json.
Memfilter kebijakan konfigurasi mesin menggunakan tag
Definisi kebijakan yang dibuat oleh cmdlet dalam modul GuestConfiguration dapat secara opsional menyertakan filter untuk tag. Parameter mendukung array tabel hash yang berisi entri tag individual. Tag ditambahkan ke bagian if dari definisi kebijakan dan tidak dapat dimodifikasi oleh penetapan kebijakan.
Contoh cuplikan definisi kebijakan yang memfilter tag berikut.
"if": {
"allOf" : [
{
"allOf": [
{
"field": "tags.Owner",
"equals": "BusinessUnit"
},
{
"field": "tags.Role",
"equals": "Web"
}
]
},
{
// Original machine configuration content
}
]
}
Menggunakan parameter di definisi kebijakan konfigurasi mesin kustom
Konfigurasi komputer mendukung pengesampingan properti Konfigurasi DSC pada waktu proses. Fitur ini berarti bahwa nilai dalam file MOF di dalam paket tidak harus dianggap statis. Nilai penimpaan disediakan melalui Azure Policy dan tidak mengubah cara Konfigurasi DSC ditulis atau dikompilasi.
Konfigurasi komputer mendukung jenis nilai berikut untuk parameter:
- String
- Boolean
- Double
- Float
Cmdlet New-GuestConfigurationPolicy dan Get-GuestConfigurationPackageComplianceStatus menyertakan parameter bernama Parameter. Parameter ini mengambil definisi tabel hash termasuk semua detail tentang setiap parameter dan membuat bagian yang diperlukan dari setiap file yang digunakan untuk definisi Azure Policy.
Contoh berikut membuat definisi kebijakan untuk mengaudit layanan, yaitu pengguna menyediakan jalur pada saat penetapan kebijakan.
# This DSC resource definition...
Service 'UserSelectedNameExample' {
Name = 'ParameterValue'
Ensure = 'Present'
State = 'Running'
}
# ...can be converted to a hash table:
$PolicyParameterInfo = @(
@{
# Policy parameter name (mandatory)
Name = 'ServiceName'
# Policy parameter display name (mandatory)
DisplayName = 'windows service name.'
# Policy parameter description (optional)
Description = 'Name of the windows service to be audited.'
# DSC configuration resource type (mandatory)
ResourceType = 'Service'
# DSC configuration resource id (mandatory)
ResourceId = 'UserSelectedNameExample'
# DSC configuration resource property name (mandatory)
ResourcePropertyName = 'Name'
# Policy parameter default value (optional)
DefaultValue = 'winrm'
# Policy parameter allowed values (optional)
AllowedValues = @('BDESVC','TermService','wuauserv','winrm')
})
# ...and then passed into the `New-GuestConfigurationPolicy` cmdlet
$PolicyParam = @{
PolicyId = 'My GUID'
ContentUri = $contentUri
DisplayName = 'Audit Windows Service.'
Description = "Audit if a Windows Service isn't enabled on Windows machine."
Path = '.\policies\auditIfNotExists.json'
Parameter = $PolicyParameterInfo
PolicyVersion = 1.0.0
}
New-GuestConfigurationPolicy @PolicyParam
Terbitkan definisi Azure Policy
Terakhir, Anda dapat menerbitkan definisi kebijakan menggunakan New-AzPolicyDefinition cmdlet . Perintah di bawah ini menerbitkan kebijakan konfigurasi komputer Anda ke pusat kebijakan.
Untuk menjalankan New-AzPolicyDefinition perintah, Anda memerlukan akses untuk membuat definisi kebijakan di Azure.
Persyaratan otorisasi tertentu didokumentasikan di halaman Gambaran Umum Azure Policy. Peran bawaan yang direkomendasikan adalah Resource Policy Contributor.
New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\auditIfNotExists.json'
Atau, jika kebijakan adalah kebijakan menerapkan jika tidak ada (DINE), gunakan perintah ini:
New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\deployIfNotExists.json'
Dengan definisi kebijakan yang dibuat di Azure, langkah terakhir adalah menetapkan definisi. Lihat cara menetapkan definisi dengan Portal, Azure CLI, dan Azure PowerShell.
Siklus hidup kebijakan
Jika Anda ingin merilis pembaruan definisi kebijakan, buat perubahan untuk detail definisi paket konfigurasi tamu dan Azure Policy.
Note
Properti version penetapan konfigurasi komputer hanya memengaruhi paket yang dihosting oleh Microsoft. Praktik terbaik untuk penerapan versi konten kustom adalah menyertakan versi dalam nama file.
Pertama, saat menjalankan New-GuestConfigurationPackage, tentukan nama untuk paket yang membuatnya unik dari versi sebelumnya. Anda bisa menyertakan nomor versi dalam nama seperti PackageName_1.0.0. Nomor dalam contoh ini hanya digunakan untuk membuat paket menjadi unik, bukan untuk menentukan bahwa paket akan dianggap lebih baru atau lebih lama daripada paket lainnya.
Kedua, perbarui parameter yang digunakan dengan cmdlet New-GuestConfigurationPolicy mengikuti masing-masing penjelasan berikut.
-
Versi: Saat menjalankan
New-GuestConfigurationPolicycmdlet, Anda harus menentukan nomor versi yang lebih besar dari yang saat ini diterbitkan. -
contentUri: Saat menjalankan cmdlet
New-GuestConfigurationPolicy, Anda harus menetapkan URI ke lokasi paket. Menyertakan versi paket dalam nama file memastikan nilai properti ini berubah di setiap rilis. -
contentHash:
New-GuestConfigurationPolicyCmdlet memperbarui properti ini secara otomatis. Ini adalah nilai hash dari paket yang dibuat olehNew-GuestConfigurationPackage. Atribut harus benar untuk file.zipyang Anda terbitkan. Jika hanya properti contentUri yang diperbarui, Ekstensi menolak paket konten.
Cara term mudah untuk merilis paket yang diperbarui adalah dengan mengulangi proses yang dijelaskan dalam artikel ini dan menentukan nomor versi yang diperbarui. Proses tersebut memastikan semua properti telah diperbarui dengan benar.
Langkah selanjutnya
- Tetapkan definisi kebijakan kustom Anda menggunakan portal Microsoft Azure.
- Pelajari cara menampilkan detail kepatuhan untuk penetapan kebijakan konfigurasi mesin.