Objek Deskriptor Keamanan WMI
WMI memiliki objek dan metode yang memungkinkan Anda membaca dan memanipulasi deskriptor keamanan untuk menentukan siapa yang memiliki akses ke objek yang dapat diamankan.
- Peran Deskriptor Keamanan
- Objek Keamanan Access Control dan WMI
- Objek Win32_SecurityDescriptor
- DACL dan SACL
- Win32_ACE, Win32_Trustee, Win32_SID
- Contoh: Memeriksa Siapa yang memiliki Akses ke Printer
- Topik terkait
Peran Deskriptor Keamanan
Deskriptor keamanan menentukan atribut keamanan objek yang dapat diamankan seperti file, kunci registri, namespace WMI, printer, layanan, atau berbagi. Deskriptor keamanan berisi informasi tentang pemilik dan grup utama objek. Penyedia dapat membandingkan deskriptor keamanan sumber daya dengan identitas pengguna yang meminta, dan menentukan apakah pengguna memiliki hak untuk mengakses sumber daya yang diminta pengguna atau tidak. Untuk informasi selengkapnya, lihat Akses ke Objek Yang Dapat Diamankan WMI.
Beberapa metode WMI, seperti GetSD, mengembalikan deskriptor keamanan dalam format array byte biner. Dimulai dengan Windows Vista, gunakan metode kelas Win32_SecurityDescriptorHelper untuk mengonversi deskriptor keamanan biner ke instans Win32_SecurityDescriptor, yang dapat dimanipulasi dengan lebih mudah. Untuk informasi selengkapnya, lihat Mengubah Keamanan Akses pada Objek yang Dapat Diamankan.
Objek Keamanan Access Control dan WMI
Berikut ini adalah daftar objek keamanan WMI:
Diagram berikut menunjukkan hubungan di antara objek keamanan WMI.
Untuk informasi selengkapnya tentang peran keamanan akses, lihat Praktik Terbaik Keamanan, Menjaga Keamanan WMI, dan Access Control.
Objek Win32_SecurityDescriptor
Tabel berikut mencantumkan properti kelas Win32_SecurityDescriptor .
Properti | Deskripsi |
---|---|
ControlFlags | Kumpulan bit kontrol yang memenuhi syarat arti SD atau anggota individunya. Untuk informasi selengkapnya tentang mengatur nilai bit ControlFlags , lihat Win32_SecurityDescriptor. |
DACL |
Daftar Access Control Diskresi (ACL) pengguna dan grup, dan hak akses mereka ke objek aman. Properti ini berisi array instans Win32_ACE yang mewakili Entri Access Control. Untuk informasi selengkapnya, lihat Membuat DACL. |
Grup | Grup tempat objek aman ini berada. Properti ini berisi instans Win32_Trustee yang berisi nama, domain, dan pengidentifikasi keamanan (SID) grup tempat pemilik berada. |
Pemilik | Pemilik objek aman ini. Properti ini berisi instans Win32_Trustee yang berisi nama, domain, dan pengidentifikasi keamanan (SID) pemilik. |
SACL |
Daftar Access Control Sistem (ACL) berisi array instans Win32_ACE yang mewakili jenis upaya akses yang menghasilkan catatan audit untuk pengguna atau grup. Untuk informasi selengkapnya, lihat SACL untuk Objek Baru. |
DACL dan SACL
Array objek Win32_ACE dalam daftar kontrol akses diskresi (DACL) dan daftar kontrol akses sistem {SACL) membuat tautan antara pengguna atau grup dan hak akses mereka.
Ketika properti DACL tidak berisi entri kontrol akses (ACE), hak akses tidak diberikan dan akses ke objek ditolak.
Catatan
NULL DACL memberikan akses penuh kepada semua orang, yang merupakan risiko keamanan yang serius. Untuk informasi selengkapnya, lihat Membuat DACL.
Win32_ACE, Win32_Trustee, Win32_SID
Objek Win32_ACE berisi instans kelas Win32_Trustee yang mengidentifikasi pengguna atau grup, dan properti AccessMask yang merupakan bitmask, yang menentukan tindakan yang dapat dilakukan pengguna atau grup. Misalnya, pengguna atau grup mungkin diberikan hak untuk membaca file tetapi tidak menulis ke file. Objek Win32_ACE juga berisi ACE yang menunjukkan apakah itu adalah akses izinkan atau tolak atau tidak.
Catatan
Urutan Win32_ACE dalam DACL penting karena entri izinkan dan tolak kontrol akses (ACE) diizinkan dalam DACL. Untuk informasi selengkapnya, lihat Urutan ACE dalam DACL.
Setiap akun pengguna atau grup yang diwakili oleh Win32_Trustee memiliki pengidentifikasi keamanan (SID) yang secara unik mengidentifikasi akun, dan menentukan hak istimewa akses akun. Cara Anda menentukan data SID tergantung pada sistem operasi. Untuk informasi selengkapnya, lihat Mengubah Keamanan Akses pada Objek yang Dapat Diamankan.
Diagram berikut menunjukkan konten satu instans Win32_ACE .
Contoh: Memeriksa Siapa yang memiliki Akses ke Printer
Contoh kode VBScript berikut menunjukkan cara menggunakan pendeskripsi keamanan printer. Skrip memanggil metode GetSecurityDescriptor di kelas Win32_Printer untuk mendapatkan deskriptor kemudian menentukan apakah ada Daftar Access Control Diskresi (DACL) yang ada di deskriptor keamanan. Jika ada DACL, maka skrip mendapatkan daftar Access Control Entri (ACE) dari DACL. Setiap ACE diwakili oleh instans Win32_ACE. Skrip memeriksa setiap ACE untuk mendapatkan nama pengguna dan menentukan apakah pengguna memiliki akses ke printer. Pengguna diwakili oleh instans Win32_Trustee yang disematkan dalam instans Win32_ACE .
SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE = &h1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate, (Security)}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
Wscript.Echo "Name: " & objPrinter.Name
' Get security descriptor for printer
Return = objPrinter.GetSecurityDescriptor( objSD )
If ( return <> 0 ) Then
WScript.Echo "Could not get security descriptor: " & Return
wscript.Quit Return
End If
' Extract the security descriptor flags
intControlFlags = objSD.ControlFlags
If intControlFlags AND SE_DACL_PRESENT Then
' Get the ACE entries from security descriptor
colACEs = objSD.DACL
For Each objACE in colACEs
' Get all the trustees and determine which have access to printer
WScript.Echo objACE.Trustee.Domain & "\" & objACE.Trustee.Name
If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
WScript.Echo vbTab & "User has access to printer"
ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
WScript.Echo vbTab & "User does not have access to the printer"
End If
Next
Else
WScript.Echo "No DACL found in security descriptor"
End If
Next