Hosting dan Keamanan Penyedia

Properti HostingModel dalam instans __Win32Provider yang mewakili penyedia Anda menentukan model hosting penyedia. Mengatur properti ini menyebabkan penyedia dimuat ke dalam proses host bersama yang memiliki tingkat hak istimewa yang ditentukan.

Proses Host Penyedia Bersama

WMI berada di host layanan bersama dengan beberapa layanan lain. Untuk menghindari penghentian semua layanan ketika penyedia gagal, penyedia dimuat ke dalam proses host terpisah bernama "Wmiprvse.exe". Lebih dari satu proses dengan nama ini dapat berjalan. Masing-masing dapat berjalan di bawah akun yang berbeda dengan berbagai keamanan. Ketahuilah bahwa, dimulai dengan Windows Vista, gunakan perintah winmgmt untuk menjalankan WMI dalam proses terpisah dengan sendirinya menggunakan port tetap. Untuk informasi selengkapnya, lihat Menyambungkan ke WMI Dari Jarak Jauh Dimulai dengan Vista.

Host bersama dapat berjalan di bawah salah satu akun sistem berikut dalam proses host Wmiprvse.exe:

Penyedia juga dapat menjadi server COM lokal (.exe), atau dihost sendiri, yang tidak memerlukan host penyedia WMI.

Mengatur Model Hosting

Karena LocalSystem adalah akun istimewa, disarankan agar Anda mengatur HostingModel ke NetworkServiceHost saat penyedia berjalan dalam proses Wmiprvse.exe. Akun NetworkServiceHost adalah untuk layanan yang tidak memerlukan hak istimewa yang luas, tetapi perlu berkomunikasi dari jarak jauh dengan sistem lain.

Jika Anda tidak menetapkan nilai untuk properti HostingModel , WMI akan menetapkan nilai default NetworkServiceHostOrSelfHost. Jika nilai HostingModel diatur ke LocalSystemHost, WMI menggunakan pelacakan untuk menghasilkan peristiwa 5603 dan 5604 di Log Peristiwa Windows. Karena akun LocalSystem lokal sangat istimewa, pengaturan ini tidak disarankan. Anda dapat melihat peristiwa ini di Pemantau Peristiwa. Untuk informasi selengkapnya, lihat Melacak Aktivitas WMI.

Atur properti HostingModel untuk penyedia yang di-decoupled sebagai "Decoupled:Com". Penyedia yang dibuat dengan menambahkan kelas instrumentasi dari Microsoft.Management.Infrastructure di .NET Framework adalah penyedia yang dipisahkan. (System.Management.Instrumentation tidak lagi didukung.) Untuk informasi selengkapnya tentang membuat penyedia yang di-decoupled, lihat Menggabungkan Penyedia dalam Aplikasi.

Model hosting ditentukan dalam properti HostingModel dalam instans __Win32Provider yang mewakili penyedia Anda.

Untuk mengatur model hosting untuk penyedia

  1. Dalam file MOF yang menentukan penyedia Anda, buat instans __Win32Provider.

  2. Tetapkan nama ke penyedia di properti Nama dan tetapkan pengidentifikasi kelas (CLSID) objek COM penyedia ke properti Clsid .

    Contoh kode berikut menetapkan nama ke properti Nama dan CSLID objek COM penyedia ke properti Clsid .

    Instance of __Win32Provider as $NewProvider
    {
        Name = "MyProvider";
        Clsid = "{.......}";
    }
    
  3. Tetapkan nilai host bersama yang sesuai ke properti HostingModel . Nilai host bersama seperti "NetworkServiceHost" didefinisikan dalam properti HostingSpecification dari kelas MSFT_Providers .

    Contoh kode berikut menetapkan nilai host bersama ke properti HostingModel .

    HostingModel = "NetworkServiceHost";
    

Contoh kode berikut menunjukkan cara mendaftarkan penyedia di NetworkServiceHost.

Instance of __Win32Provider as $NewProvider
{
    Name = "MyProvider";
    Clsid = "{.......}";
    HostingModel = "NetworkServiceHost";
}

Jika Anda memiliki beberapa penyedia, Anda dapat mengelompokkannya ke host layanan tertentu dengan mendaftarkan penyedia Anda sehingga berada dalam instans tertentu.

Contoh kode berikut juga mendaftarkan penyedia di NetworkServiceHost. Kelas MSFT_Providers menentukan nilai untuk dua nilai yang digabungkan untuk membuat properti __Win32ProviderHostingModel . Dalam contoh, nilai "NetworkServiceHost" berasal dari properti HostingSpecificationMSFT_Providers dan "LocalServiceHost" berasal dari properti HostingGroup .

Instance of __Win32Provider as $NewProvider
{
    Name = "MyProvider";
    Clsid = "{.......}";
    HostingModel = "NetworkServiceHost:MySharedHost";
}

Masalah pengembangan khusus ada untuk penyedia yang tidak dipisahkan dan dihosting dalam proses Wmiprvse. Untuk informasi selengkapnya, lihat Penyedia Debugging.

Jika Anda menulis penyedia yang berisi pendaftaran penyedia properti atau kelas, tidak semua model utas berfungsi. Untuk informasi selengkapnya, lihat Memilih Pendaftaran yang Benar.

Nilai HostingModel untuk Penyedia In-Process

Daftar berikut mencantumkan nilai model hosting penyedia untuk digunakan dalam instans __Win32Provider untuk penyedia yang berjalan dalam proses Wmiprvse.exe.

Nilai di __Win32Provider.HostingModel Deskripsi
SelfHost Penyedia mulai menggunakan implementasi server lokal alih-alih dalam proses. Konteks keamanan proses di mana penyedia berjalan menentukan konteks keamanan penyedia.
LocalSystemHost Penyedia, jika diimplementasikan sebagai dalam proses, dimuat ke host penyedia bersama yang berjalan di bawah konteks LocalSystem . Dimulai dengan Windows Vista, LocalSystemHost bukan lagi model hosting default jika HostingModel penyedia WMI (__Win32Provider. Properti HostingModel ) tidak ditentukan. Untuk informasi selengkapnya, lihat Keamanan Model Hosting.
LocalSystemHostOrSelfHost Penyedia dihost sendiri atau dimuat ke dalam proses Wmiprvse.exe yang berjalan di bawah akun LocalSystem . Karena LocalSystem adalah akun yang sangat istimewa, entri dihasilkan dalam Log Peristiwa NT Keamanan untuk memberi tahu administrator tentang penyedia yang berjalan dalam status tepercaya ini.
NetworkServiceHost Penyedia, jika diimplementasikan sebagai dalam proses, dimuat ke dalam proses Wmiprvse.exe yang berjalan di bawah akun NetworkService . Dimulai dengan Windows Vista, ini adalah model hosting default jika HostingModel penyedia WMI (__Win32Provider. Properti HostingModel ) tidak ditentukan. Untuk informasi selengkapnya, lihat Keamanan Model Hosting.
NetworkServiceHost memiliki hak istimewa terbatas dan oleh karena itu mengurangi kemungkinan peningkatan serangan hak istimewa. Jika penyedia hanya beroperasi dalam komputer lokal, maka atur properti HostingModel ke LocalServiceHost.
NetworkServiceHostOrSelfHost Penyedia dihost sendiri atau dimuat ke dalam proses WmiPrvse.exe yang berjalan di bawah akun NetworkService . NetworkServiceHostOrSelfHost adalah konfigurasi default ketika properti HostingModel di __Win32ProviderNULL. Karena NetworkServiceHostOrSelfHost adalah default, penyedia dari sistem operasi sebelumnya dapat terus bekerja di Windows Vista, Windows Server 2008, dan sistem operasi yang lebih baru.
LocalServiceHost Penyedia, jika diimplementasikan sebagai dalam proses, dimuat ke dalam proses Wmiprvse.exe yang berjalan di bawah akun LocalService . Ini adalah model hosting yang direkomendasikan untuk layanan karena LocalService memiliki hak istimewa terbatas.

Nilai HostingModel untuk Penyedia yang Di-decoupled

Daftar berikut mencantumkan nilai model hosting penyedia untuk penyedia yang di-decoupled.

Di-decoupled:Com

Penyedia adalah penyedia yang dipisahkan yang dihosting dalam proses terpisah yang merupakan klien WMI.

Contoh berikut menunjukkan penentu FoldIdentity untuk properti HostingModel yang diatur ke FALSE, yang memungkinkan penyedia untuk meniru klien.

Decoupled:Com:FoldIdentity(FALSE)

Jika FoldIdentity tidak ditentukan, nilai FoldIdentity diatur ke TRUE secara default. Untuk alasan keamanan, disarankan agar Anda tidak menentukan FoldIdentity(FALSE) karena aplikasi nakal dengan peniruan Delegasi dapat memengaruhi seluruh domain.

Contoh berikut menunjukkan properti HostingModel yang diatur dengan cara yang direkomendasikan yang setara dengan pengaturan FoldIdentity(TRUE).

Decoupled:Com

Di-decoupled:Noncom

Hanya untuk penggunaan internal. Tidak didukung.

Keamanan Model Hosting

Untuk sebagian besar situasi, LocalSystem tidak perlu dan konteks NetworkServiceHost lebih tepat. Sebagian besar Penyedia WMI harus meniru konteks keamanan klien untuk melakukan operasi yang diminta atas nama klien WMI. Dimulai dengan Windows Vista, penyedia WMI yang tidak memiliki definisi model hosting dan menjalankan seolah-olah berjalan di bawah LocalSystem tidak akan berjalan dengan benar. Untuk memperbaiki situasi ini, ubah model hosting yang diharapkan dan pastikan bahwa kode penyedia WMI melakukan operasi dalam konteks keamanan klien dengan meniru klien WMI. LocalSystem jarang menjadi persyaratan. Jika penyedia Anda harus memiliki tingkat hak istimewa tersebut, tentukan model hosting dengan pernyataan berikut dalam file MOF.

HostingModel=LocalSystemHost

Memilih Pendaftaran yang Benar

Akses ke Namespace Layanan WMI

Mengamankan Namespace WMI

Konfigurasi Penyedia dan Kelas Pemecahan Masalah

MSFT_Providers

Menjaga Keamanan WMI