Mendelegasikan dengan WMI
Saat Anda menjalankan skrip pada sistem lokal yang mendapatkan data dari sistem jarak jauh, WMI memasok kredensial Anda ke penyedia data pada sistem jarak jauh. Ini hanya memerlukan tingkat peniruan Impersonate, karena hanya satu hop jaringan yang diperlukan. Namun, jika skrip terhubung ke WMI pada sistem jarak jauh dan mencoba membuka file log pada sistem jarak jauh tambahan, maka skrip gagal kecuali tingkat peniruan adalah Delegasi. Mendelegasikan tingkat peniruan diperlukan oleh operasi apa pun yang melibatkan lebih dari satu hop jaringan. Untuk informasi selengkapnya tentang keamanan DCOM di WMI, lihat Mengatur Keamanan Proses Aplikasi Klien. Untuk informasi selengkapnya tentang koneksi hop satu jaringan antara dua komputer, lihat Menyambungkan ke WMI di Komputer Jarak Jauh.
Untuk menggunakan delegasi untuk menyambungkan ke komputer melalui komputer lain
Aktifkan delegasi di Direktori Aktif (Pengguna Direktori Aktif dan Komputer di Tugas Administratif Panel Kontrol) pada pengontrol domain. Akun pada sistem jarak jauh harus ditandai sebagai Tepercaya untuk delegasi dan akun pada sistem lokal tidak boleh ditandai sebagai Akun sensitif dan tidak dapat didelegasikan. sistem lokal, sistem jarak jauh, dan pengendali domain harus menjadi anggota domain yang sama atau di domain tepercaya.
Catatan Menggunakan delegasi adalah risiko keamanan karena memberikan proses di luar kontrol langsung Anda kemampuan untuk menggunakan kredensial Anda.
Ubah kode Anda dengan cara berikut untuk menunjukkan bahwa Anda ingin menggunakan delegasi.
-
PowerShell
-
Atur parameter -Impersonation pada cmdlet WMI ke Delegasi.
-
VBScript
-
Atur parameter impersonationLevel ke Delegasikan dalam panggilan ke SWbemLocator.ConnectServer atau Delegasikandalam string moniker. Anda juga dapat mengatur peniruan dalam objek SWbemSecurity.
-
C++
-
Atur parameter tingkat peniruan ke RPC_C_IMP_LEVEL_DELEGATE dalam panggilan ke CoInitializeSecurity atau CoSetProxyBlanket. Untuk informasi selengkapnya tentang kapan melakukan panggilan ini, lihat Menginisialisasi COM untuk Aplikasi WMI.
Untuk meneruskan identitas klien ke server COM jarak jauh di C++, atur penyelubungan dalam panggilan ke CoSetProxyBlanket. Untuk informasi selengkapnya, lihat Cloaking.
-
Contoh
Contoh kode berikut menunjukkan string moniker yang mengatur peniruan ke Delegasi. Ketahuilah bahwa otoritas harus diatur ke Kerberos.
set objWMIServices = Getobject("winmgmts:{impersonationLevel=Delegate,authority=kerberos:MyDomain\Computer_B}!\\ComputerB\Root\CIMv2")
Contoh kode berikut menunjukkan cara mengatur peniruan ke Delegasi (nilai 4) menggunakan SWbemLocator.ConnectServer.
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objLocator.ConnectServer(Computer_B, _
"Root\CIMv2", _
AdminAccount, _
MyPassword, _
"kerberos:Domain\Computer_B")
objWMIService.Security_.ImpersonationLevel = 4
Topik terkait