Bagikan melalui


Menyediakan Peristiwa dengan Aman

Anda dapat mencegah pengguna yang tidak sah menerima peristiwa yang seharusnya tidak mereka akses. Penyedia peristiwa Anda dapat menyediakan instans kelas peristiwanya sendiri, sama seperti Penyedia Registri Sistem menyediakan kelas seperti RegistryKeyChangeEvent. Penyedia acara Anda juga dapat mengirimkan peristiwa intrinsik seperti __InstanceCreationEvent. Untuk informasi selengkapnya, lihat Menulis Penyedia Acara.

Penyedia acara dapat mengontrol akses ke penerima peristiwa dengan cara berikut:

  • Menggunakan kontrol akses dengan menerapkan IWbemEventProviderSecurity::AccessCheck adalah cara yang paling efisien.

    Penyedia menentukan apakah konsumen memiliki hak istimewa untuk menerima peristiwa yang diminta. Jika konsumen tidak memiliki hak istimewa yang memadai untuk mendaftar, WMI mengembalikan kesalahan akses yang ditolak. Gunakan mode ini ketika penyedia dapat membuat keputusan tentang siapa yang dapat menerima peristiwa. Misalnya, penyedia dapat menyediakan peristiwa terkait keamanan dan dapat mengharuskan konsumen memiliki hak istimewa administrator dengan hak istimewa SeSecurityPrivilege diaktifkan.

  • Menerapkan IWbemEventSink::SetSinkSecurity pada sink yang digunakan untuk menaikkan peristiwa memungkinkan pengaturan pendeskripsi keamanan (SD) pada sink untuk semua peristiwa yang dilewati.

    WMI melakukan pemeriksaan akses berdasarkan SD. Gunakan mode ini ketika penyedia tidak dapat membuat keputusan mengenai siapa yang diizinkan untuk menggunakan peristiwanya, tetapi dapat memutuskan SD untuk sink tertentu. Misalnya, gunakan IWbemEventSink::SetSinkSecurity jika penyedia peristiwa Anda memperoleh beberapa sink dengan panggilan ke IWbemEventSink::GetRestrictedSink dan Anda menginginkan deskriptor keamanan untuk setiap sink.

  • Mengatur properti SECURITY_DESCRIPTOR peristiwa memungkinkan pengaturan SD untuk setiap peristiwa.

    Gunakan pendekatan ini ketika setiap peristiwa yang dikirimkan ke sink dapat memiliki deskriptor keamanan yang berbeda. Untuk menggunakan pendekatan ini, dapatkan salah satu kelas peristiwa ekstrinsik yang ditentukan oleh penyedia Anda dari __Event atau __ExtrinsicEvent sehingga kelas Anda berisi properti SECURITY_DESCRIPTOR . Misalnya, penyedia peristiwa Anda dapat menerbitkan peristiwa aman dan normal melalui sink. Dalam hal ini, gunakan pendeskripsi keamanan akun Administrator untuk peristiwa aman dan pendeskripsi keamanan NULL untuk peristiwa normal yang dapat diterima oleh siapa saja.

Mengamankan Peristiwa oleh Penyedia Peristiwa yang Dipisahkan

Penyedia peristiwa yang diputuskan berbeda dari penyedia peristiwa yang tidak terdekoupsi dengan cara mereka mendaftar dengan WMI. Panggilan ke IWbemEventProviderSecurity::AccessCheck untuk peristiwa dari penyedia yang diputuskan tidak pernah menyebarkan token akses klien. WMI menangani kontrol akses dengan cara yang sama seperti untuk penyedia peristiwa yang tidak dikodekan. Untuk informasi selengkapnya tentang menulis penyedia yang diputuskan, lihat Menggabungkan Penyedia dalam Aplikasi.

Hanya administrator dengan hak istimewa FULL_WRITE yang diatur dalam Kontrol WMIPanel Kontrol yang diizinkan untuk menaikkan peristiwa untuk namespace. Untuk informasi selengkapnya, lihat Mengatur Keamanan Namespace layanan dengan Kontrol WMI.

Mengamankan Peristiwa WMI