Bagikan melalui


Deskriptor Keamanan pada File dan Kunci Registri

Antarmuka Layanan Direktori Aktif (ADSI) dapat digunakan untuk mengelola dan mengamankan sistem file dalam organisasi, termasuk kemampuan untuk mengatur atau memodifikasi ACL pada file atau berbagi file yang dibuat oleh pengguna. Antarmuka keamanan, seperti IADsSecurityDescriptor, IADsAccessControlList, dan IADsAccessControlEntry mengatur ACL di Direktori Aktif, Exchange, file, berbagi file, atau objek kunci registri. Sebelum menggunakan antarmuka ini, deskriptor keamanan mungkin perlu dimodifikasi jika menggunakan format yang berbeda dari antarmuka, atau jika Anda tidak memiliki hak akses ke SACL deskriptor keamanan karena Anda bukan anggota grup administrator keamanan.

Untuk mendapatkan, mengatur, atau memodifikasi deskriptor keamanan, gunakan antarmuka IADsSecurityUtility. Antarmuka ini memungkinkan Anda mengambil deskriptor keamanan dari berbagai sumber daya dalam format aslinya, seperti FORMAT ADSI IADsSecurityDescriptor, deskriptor keamanan mentah, atau sebagai string heksadesimal seperti yang digunakan di Exchange 5.5. Saat diambil, Anda dapat mengonversinya ke format lain, misalnya, dari deskriptor keamanan mentah ke IADsSecurityDescriptor. Anda kemudian dapat menulis kembali format baru ke sumber daya.

Beberapa nilai properti IADsAccessControlEntry, seperti AccessMask dan AceFlags, akan berbeda untuk jenis objek yang berbeda. Misalnya, objek Direktori Aktif akan menggunakan anggota ADS_RIGHT_GENERIC_READ enumerasi ADS_RIGHTS_ENUM untuk properti IADsAccessControlEntry.AccessMask, tetapi akses yang setara tepat untuk objek file FILE_GENERIC_READ. Tidak aman untuk mengasumsikan bahwa semua nilai properti akan sama untuk objek Direktori Aktif dan objek non-Direktori Aktif. Daftar berikut menunjukkan properti IADsAccessControlEntry yang berbeda untuk objek non-Active Directory dan di mana nilai yang tepat dapat diperoleh.

AccessMask

Untuk informasi selengkapnya dan daftar nilai yang mungkin untuk objek file atau berbagi file, lihat Keamanan File dan Hak Akses.

Untuk informasi selengkapnya dan daftar nilai yang mungkin untuk objek registri, lihat Keamanan Kunci Registri dan Hak Akses.

AceType

Untuk informasi selengkapnya, lihat anggota AceType dari struktur ACE_HEADER .

AceFlags

Untuk informasi selengkapnya, lihat anggota AceFlags dari struktur ACE_HEADER .

Bendera

Berisi nol atau kombinasi satu atau beberapa nilai berikut dari WinNT.h.

ACE_OBJECT_TYPE_PRESENT (1)

ObjectType berisi nilai yang valid.

ACE_INHERITED_OBJECT_TYPE_PRESENT (2)

InheritedObjectType berisi nilai yang valid.

ObjectType

Untuk informasi selengkapnya, lihat anggota ObjectType dari ACCESS_DENIED_OBJECT_ACE, ACCESS_ALLOWED_OBJECT_ACE, dan struktur serupa. Properti ini tidak boleh diatur atau dimodifikasi untuk objek non-Active Directory.

InheritedObjectType

Untuk informasi selengkapnya, lihat anggota InheritedObjectType dari ACCESS_DENIED_OBJECT_ACE, ACCESS_ALLOWED_OBJECT_ACE, dan struktur serupa. Properti ini tidak boleh diatur atau dimodifikasi untuk objek non-Active Directory.

Biasanya, IADsSecurityUtility.GetSecurityDescriptor akan mengambil semua bagian deskriptor keamanan, seperti pemilik, grup, SACL, atau DACL. Demikian pula, IADsSecurityUtility.SetSecurityDescriptor akan menimpa semua bagian deskriptor keamanan secara default. Anda dapat menggunakan properti IADsSecurityUtility.SecurityMask untuk menentukan bagian individual dari deskriptor keamanan untuk diambil atau diatur. Misalnya, Anda dapat mengatur SecurityMask ke ADS_SECURITY_INFO_DACL sebelum memanggil GetSecurityDescriptor untuk hanya mengambil DACL tanpa mengambil bagian lain dari deskriptor keamanan.

Untuk informasi selengkapnya dan contoh kode yang menggunakan antarmuka IADsSecurityUtility untuk menambahkan ACE ke file, lihat Contoh Kode untuk Menambahkan ACE ke File.

Contoh kode berikut menyediakan pengidentifikasi konstan untuk file, berbagi file, dan objek registri untuk properti AccessMask, AceType, AceFlags, dan Flags untuk digunakan dengan Visual Basic dan Microsoft Visual Basic Scripting Edition.

' Identifiers for the IADsAccessControlEntry.AccessMask property for file,
' file share, and registry objects.
Const DELETE = &H10000
Const READ_CONTROL = &H20000
Const WRITE_DAC = &H40000
Const WRITE_OWNER = &H80000
Const SYNCHRONIZE = &H100000

Const STANDARD_RIGHTS_REQUIRED = &HF0000

Const STANDARD_RIGHTS_READ = &H20000
Const STANDARD_RIGHTS_WRITE = &H20000
Const STANDARD_RIGHTS_EXECUTE = &H20000

Const STANDARD_RIGHTS_ALL = &H1F0000

Const SPECIFIC_RIGHTS_ALL = &HFFFF

' Identifiers for the IADsAccessControlEntry.AccessMask property for file and
' file share objects.
Const FILE_READ_DATA = &H1                  '  file & pipe
Const FILE_LIST_DIRECTORY = &H1             '  directory

Const FILE_WRITE_DATA = &H2                 '  file & pipe
Const FILE_ADD_FILE = &H2                   '  directory

Const FILE_APPEND_DATA = &H4                '  file
Const FILE_ADD_SUBDIRECTORY = &H4           '  directory
Const FILE_CREATE_PIPE_INSTANCE = &H4       '  named pipe

Const FILE_READ_EA = &H8                    '  file & directory

Const FILE_WRITE_EA = &H10                  '  file & directory

Const FILE_EXECUTE = &H20                   '  file
Const FILE_TRAVERSE = &H20                  '  directory

Const FILE_DELETE_CHILD = &H40              '  directory

Const FILE_READ_ATTRIBUTES = &H80           '  all

Const FILE_WRITE_ATTRIBUTES = &H100         '  all

Const FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &H1FF

Const FILE_GENERIC_READ = STANDARD_RIGHTS_READ Or FILE_READ_DATA Or FILE_READ_ATTRIBUTES Or _
                          FILE_READ_EA Or SYNCHRONIZE

Const FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE Or FILE_WRITE_DATA Or FILE_WRITE_ATTRIBUTES Or _
                           FILE_WRITE_EA Or FILE_APPEND_DATA Or SYNCHRONIZE

Const FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE Or FILE_READ_ATTRIBUTES Or FILE_EXECUTE Or SYNCHRONIZE


' Identifiers for the IADsAccessControlEntry.AccessMask property for registry
' objects.
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_WOW64_32KEY = &H200
Const KEY_WOW64_64KEY = &H100
Const KEY_WOW64_RES = &H300

Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And _
                  (Not SYNCHRONIZE))

Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))

Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))

Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or _
                         KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
    

' Identifiers for the IADsAccessControlEntry.AceFlags property for file and
' file share objects.
Const OBJECT_INHERIT_ACE = &H1
Const CONTAINER_INHERIT_ACE = &H2
Const NO_PROPAGATE_INHERIT_ACE = &H4
Const INHERIT_ONLY_ACE = &H8
Const INHERITED_ACE = &H10
    

' Identifiers for the IADsAccessControlEntry.Flags property.
Const ACE_OBJECT_TYPE_PRESENT = 1
Const ACE_INHERITED_OBJECT_TYPE_PRESENT = 2