Partager via


SeAssignSecurityEx, fonction (wdm.h)

La routine SeAssignSecurityEx génère un descripteur de sécurité auto-relatif pour un nouvel objet en fonction des paramètres facultatifs suivants : un descripteur de sécurité du répertoire parent de l’objet, un descripteur de sécurité explicite pour l’objet et le type d’objet.

Syntaxe

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
);

Paramètres

[in, optional] ParentDescriptor

Pointeur vers le SECURITY_DESCRIPTOR de l’objet parent qui contient le nouvel objet en cours de création. ParentDescriptor peut avoir la valeurNULL, ou avoir une liste de contrôle d’accès système (SACL) NULL ou une liste de contrôle d’accès discrétionnaire NULL (DACL).

[in, optional] ExplicitDescriptor

Pointeur vers un SECURITY_DESCRIPTOR explicite appliqué au nouvel objet. ExplicitDescriptor peut avoir la valeur NULL, ou avoir une LISTE SACL NULL ou une liste DACL NULL .

[out] NewDescriptor

Reçoit un pointeur vers le SECURITY_DESCRIPTOR retourné. SeAssignSecurityEx alloue la mémoire tampon du pool de mémoire paginée.

[in, optional] ObjectType

Pointeur vers un GUID pour le type d’objet en cours de création. Si l’objet n’a pas de GUID, ObjectType doit être défini sur NULL.

[in] IsDirectoryObject

Spécifie si le nouvel objet est un objet directory. Si IsDirectoryObject a la valeur TRUE, le nouvel objet est un objet directory ; sinon, le nouvel objet n’est pas un objet de répertoire.

[in] AutoInheritFlags

Spécifie le type d’héritage automatique appliqué aux entrées de contrôle d’accès (ACE) dans les listes de contrôle d’accès (ACL) spécifiées par ParentDescriptor. AutoInheritFlags contrôle également la vérification des privilèges, la vérification du propriétaire et la définition d’un propriétaire et d’un groupe par défaut pour NewDescriptor. AutoInheritFlags doit être défini sur un OU logique d’une ou plusieurs des valeurs suivantes :

Valeur Signification
SEF_DACL_AUTO_INHERIT Les ACL de ParentDescriptor sont hérités par NewDescriptor, en plus des ACÉ explicites spécifiés par ExplicitDescriptor.
SEF_SACL_AUTO_INHERIT Les ACL de ParentDescriptor sont hérités par NewDescriptor, en plus des ACÉ explicites spécifiés par ExplicitDescriptor.
SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT ExplicitDescriptor est le descripteur par défaut pour le type d’objet spécifié par ObjectType. ExplicitDescriptor n’est pas utilisé si les ACÉ sont hérités de ParentDescriptor.
SEF_AVOID_PRIVILEGE_CHECK La vérification des privilèges n’est pas effectuée. Cet indicateur est utile avec l’héritage automatique, car il évite la vérification des privilèges sur chaque enfant qui doit être mis à jour.
SEF_AVOID_OWNER_CHECK La vérification du propriétaire n’est pas terminée.
SEF_DEFAULT_OWNER_FROM_PARENT Si un propriétaire est spécifié par ExplicitDescriptor, cet indicateur n’est pas utilisé et le propriétaire de NewDescriptor est défini sur le propriétaire spécifié par ExplictDescriptor.

Si un propriétaire n’est pas spécifié par ExplicitDescriptor, cet indicateur est utilisé de la manière suivante : Si l’indicateur est défini, le propriétaire de NewDescriptor est défini sur le propriétaire de ParentDescriptor. Sinon, le propriétaire de NewDescriptor est défini sur le propriétaire spécifié par subjectContext.

SEF_DEFAULT_GROUP_FROM_PARENT Si un groupe est spécifié par ExplicitDescriptor, cet indicateur n’est pas utilisé et le groupe de NewDescriptor est défini sur le groupe spécifié par ExplictDescriptor.

Si un groupe n’est pas spécifié par ExplicitDescriptor, cet indicateur est utilisé de la manière suivante : Si l’indicateur est défini, le groupe de NewDescriptor est défini sur le groupe de ParentDescriptor. Sinon, le groupe de NewDescriptor est défini sur le groupe spécifié par subjectContext.

 

L’affectation des listes de contrôle d’accès système et discrétionnaires est décrite dans le tableau suivant :

Descripteur explicite non défini par défaut(1) Descripteur explicite par défaut(2) NULL Descripteur explicite
ACL est hérité du descripteur parent(3). Affecter des listes de contrôle d’accès héritées et explicites(5)(6). Attribuer une liste de contrôle d’accès héritée. Attribuer une liste de contrôle d’accès héritée.
ACL n’est pas hérité du descripteur parent(4). Affecter une liste de contrôle d’accès non définie par défaut. Affectez la liste de contrôle d’accès par défaut. N’affecter aucune liste de contrôle d’accès.
 

Remarques sur l'affectation

  1. L’indicateur SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT n’est pas spécifié.
  2. L’indicateur SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT est spécifié.
  3. L’indicateur d’héritage automatique d’une liste de contrôle d’accès est spécifié (SEF_DACL_AUTO_INHERIT ou SEF_SACL_AUTO_INHERIT).
  4. L’indicateur d’héritage automatique d’une liste de contrôle d’accès n’est pas spécifié.
  5. Les ACÉ dont le bit INHERITED_ACE est défini dans leur membre AceFlags ne sont pas copiés dans le descripteur de sécurité affecté.
  6. Les ACL hérités du descripteur parent sont ajoutés après les ACL spécifiés par le descripteur explicite.

[in] SubjectContext

Pointeur vers un contexte de sécurité du sujet qui crée l’objet. SubjectContext permet de récupérer les informations de sécurité par défaut du nouvel objet, notamment le propriétaire par défaut, le groupe principal et le contrôle d’accès discrétionnaire.

[in] GenericMapping

Pointeur vers un tableau de valeurs de masque d’accès qui spécifient le mappage entre chaque droit générique et des droits spécifiques à l’objet.

[in] PoolType

Ce paramètre est inutilisé. La mémoire tampon pour contenir le nouveau descripteur de sécurité est toujours allouée à partir du pool paginé.

Valeur retournée

SeAssignSecurityEx retourne l’une des valeurs suivantes :

Code de retour Description
STATUS_SUCCESS
L’affectation a réussi.
STATUS_INVALID_OWNER
Le SID fourni en tant que propriétaire du nouveau descripteur de sécurité n’est pas un SID que l’appelant est autorisé à attribuer en tant que propriétaire d’un objet.
STATUS_PRIVILEGE_NOT_HELD
L’appelant ne dispose pas du privilège (SeSecurityPrivilege) nécessaire pour affecter explicitement la SACL spécifiée.

Remarques

SeAssignSecurityEx étend l’opération de base de SeAssignSecurity des manières suivantes :

  • ObjectType spécifie éventuellement un type d’objet. L’héritage spécifique à l’objet est contrôlé par les membres suivants d’un ACE spécifique à l’objet : Flags, InheritedObjectType et Header.AceFlags.
  • AutoInheritFlags spécifie le type d’héritage automatique des ACÉ qui est utilisé. AutoInheritFlags contrôle également la vérification des privilèges, la vérification du propriétaire et la définition d’un propriétaire et d’un groupe par défaut pour NewDescriptor.
Pour plus d’informations sur la sécurité et le contrôle d’accès, consultez la documentation sur ces rubriques dans le Microsoft Windows SDK.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
Plateforme cible Universal
En-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Règles de conformité DDI HwStorPortProhibitedDDIs(storport)

Voir aussi

GENERIC_MAPPING

SECURITY_DESCRIPTOR

SeAssignSecurity

SeDeassignSecurity