Fungsi SeAssignSecurityEx (wdm.h)

Rutinitas SeAssignSecurityEx membangun deskriptor keamanan relatif mandiri untuk objek baru mengingat parameter opsional berikut: deskriptor keamanan direktori induk objek, deskriptor keamanan eksplisit untuk objek, dan jenis objek.

Sintaks

NTSTATUS SeAssignSecurityEx(
  [in, optional] PSECURITY_DESCRIPTOR      ParentDescriptor,
  [in, optional] PSECURITY_DESCRIPTOR      ExplicitDescriptor,
  [out]          PSECURITY_DESCRIPTOR      *NewDescriptor,
  [in, optional] GUID                      *ObjectType,
  [in]           BOOLEAN                   IsDirectoryObject,
  [in]           ULONG                     AutoInheritFlags,
  [in]           PSECURITY_SUBJECT_CONTEXT SubjectContext,
  [in]           PGENERIC_MAPPING          GenericMapping,
  [in]           POOL_TYPE                 PoolType
);

Parameter

[in, optional] ParentDescriptor

Arahkan ke SECURITY_DESCRIPTOR objek induk yang berisi objek baru yang sedang dibuat. ParentDescriptor bisa NULL, atau memiliki daftar kontrol akses sistem NULL (SACL) atau daftar kontrol akses diskresi NULL (DACL).

[in, optional] ExplicitDescriptor

Arahkan ke SECURITY_DESCRIPTOR eksplisit yang diterapkan ke objek baru. ExplicitDescriptor dapat berupa NULL, atau memiliki NULL SACL atau NULL DACL.

[out] NewDescriptor

Menerima penunjuk ke SECURITY_DESCRIPTOR yang dikembalikan. SeAssignSecurityEx mengalokasikan buffer dari kumpulan memori halaman.

[in, optional] ObjectType

Penunjuk ke GUID untuk jenis objek yang sedang dibuat. Jika objek tidak memiliki GUID, ObjectType harus diatur ke NULL.

[in] IsDirectoryObject

Menentukan apakah objek baru adalah objek direktori. Jika IsDirectoryObject diatur ke TRUE, objek baru adalah objek direktori, jika tidak, objek baru bukan objek direktori.

[in] AutoInheritFlags

Menentukan jenis pewarisan otomatis yang diterapkan ke entri kontrol akses (ACE) dalam daftar kontrol akses (ACL) yang ditentukan oleh ParentDescriptor. AutoInheritFlags juga mengontrol pemeriksaan hak istimewa, pemeriksaan pemilik, dan pengaturan pemilik dan grup default untuk NewDescriptor. AutoInheritFlags harus diatur ke logis OR dari satu atau beberapa nilai berikut:

Nilai Makna
SEF_DACL_AUTO_INHERIT ACE dalam DACL ParentDescriptor diwarisi oleh NewDescriptor, selain ACE eksplisit yang ditentukan oleh ExplicitDescriptor.
SEF_SACL_AUTO_INHERIT ACE dalam SACL ParentDescriptor diwarisi oleh NewDescriptor, selain ACE eksplisit yang ditentukan oleh ExplicitDescriptor.
SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT ExplicitDescriptor adalah deskriptor default untuk jenis objek yang ditentukan oleh ObjectType. ExplicitDescriptor tidak digunakan jika ACE diwarisi dari ParentDescriptor.
SEF_AVOID_PRIVILEGE_CHECK Pemeriksaan hak istimewa tidak dilakukan. Bendera ini berguna dengan pewarisan otomatis karena menghindari pemeriksaan hak istimewa pada setiap anak yang perlu diperbarui.
SEF_AVOID_OWNER_CHECK Pemeriksaan pemilik belum selesai.
SEF_DEFAULT_OWNER_FROM_PARENT Jika pemilik ditentukan oleh ExplicitDescriptor, bendera ini tidak digunakan, dan pemilik NewDescriptor diatur ke pemilik yang ditentukan oleh ExplictDescriptor.

Jika pemilik tidak ditentukan oleh ExplicitDescriptor, bendera ini digunakan dengan cara berikut: Jika bendera diatur, pemilik NewDescriptor diatur ke pemilik ParentDescriptor. Jika tidak, pemilik NewDescriptor diatur ke pemilik yang ditentukan oleh SubjectContext.

SEF_DEFAULT_GROUP_FROM_PARENT Jika grup ditentukan oleh ExplicitDescriptor, bendera ini tidak digunakan, dan grup NewDescriptor diatur ke grup yang ditentukan oleh ExplictDescriptor.

Jika grup tidak ditentukan oleh ExplicitDescriptor, bendera ini digunakan dengan cara berikut: Jika bendera diatur, grup NewDescriptor diatur ke grup ParentDescriptor. Jika tidak, grup NewDescriptor diatur ke grup yang ditentukan oleh SubjectContext.

 

Penetapan ACL sistem dan diskresi dijelaskan dalam tabel berikut:

Deskriptor eksplisit nondefault(1) Deskriptor eksplisit default(2) NULL Deskriptor eksplisit
ACL diwarisi dari deskriptor induk(3). Tetapkan ACL yang diwariskan dan eksplisit(5)(6). Tetapkan ACL yang diwariskan. Tetapkan ACL yang diwariskan.
ACL tidak diwariskan dari deskriptor induk(4). Tetapkan ACL nondefault. Tetapkan ACL default. Tidak menetapkan ACL.
 

Catatan Penugasan

  1. Bendera SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT tidak ditentukan.
  2. Bendera SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT ditentukan.
  3. Bendera pewarisan otomatis untuk ACL ditentukan (SEF_DACL_AUTO_INHERIT atau SEF_SACL_AUTO_INHERIT).
  4. Bendera warisan otomatis untuk ACL tidak ditentukan.
  5. ACE dengan bit INHERITED_ACE diatur dalam anggota AceFlags mereka tidak disalin ke deskriptor keamanan yang ditetapkan.
  6. ACE yang diwarisi dari deskriptor induk ditambahkan setelah ACE yang ditentukan oleh deskriptor eksplisit.

[in] SubjectContext

Arahkan ke konteks keamanan subjek yang membuat objek. SubjectContext digunakan untuk mengambil informasi keamanan default untuk objek baru, termasuk pemilik default, grup utama, dan kontrol akses diskresi.

[in] GenericMapping

Penunjuk ke array nilai masker akses yang menentukan pemetaan antara setiap hak generik ke hak khusus objek.

[in] PoolType

Parameter ini tidak digunakan. Buffer untuk menahan deskriptor keamanan baru selalu dialokasikan dari kumpulan halaman.

Mengembalikan nilai

SeAssignSecurityEx mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_SUCCESS
Penugasan berhasil.
STATUS_INVALID_OWNER
SID yang disediakan sebagai pemilik deskriptor keamanan baru bukanlah SID yang diizinkan penelepon untuk ditetapkan sebagai pemilik objek.
STATUS_PRIVILEGE_NOT_HELD
Pemanggil tidak memiliki hak istimewa (SeSecurityPrivilege) yang diperlukan untuk secara eksplisit menetapkan SACL yang ditentukan.

Keterangan

SeAssignSecurityEx memperluas operasi dasar SeAssignSecurity dengan cara berikut:

  • ObjectType secara opsional menentukan jenis objek. Pewarisan khusus objek dikendalikan oleh anggota ACE khusus objek berikut: Bendera, InheritedObjectType, dan Header.AceFlags.
  • AutoInheritFlags menentukan jenis pewarisan otomatis ACE yang digunakan. AutoInheritFlags juga mengontrol pemeriksaan hak istimewa, pemeriksaan pemilik, dan pengaturan pemilik dan grup default untuk NewDescriptor.
Untuk informasi selengkapnya tentang keamanan dan kontrol akses, lihat dokumentasi tentang topik ini di Microsoft Windows SDK.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport)

Lihat juga

GENERIC_MAPPING

SECURITY_DESCRIPTOR

SeAssignSecurity

SeDeassignSecurity