Descripteurs de sécurité absolus et Self-Relative

Un descripteur de sécurité peut être au format absolu ou auto-relatif . Dans un format absolu, un descripteur de sécurité contient des pointeurs vers ses informations, et non les informations elles-mêmes. Dans un format auto-relatif, un descripteur de sécurité stocke une structure SECURITY_DESCRIPTOR et les informations de sécurité associées dans un bloc de mémoire contigu. Pour déterminer si un descripteur de sécurité est auto-relatif ou absolu, appelez la fonction GetSecurityDescriptorControl et case activée l’indicateur SE_SELF_RELATIVE du paramètre SECURITY_DESCRIPTOR_CONTROL. Vous pouvez utiliser les fonctions MakeSelfRelativeSD et MakeAbsoluteSD pour la conversion entre ces deux formats.

Le format absolu est utile lorsque vous créez un descripteur de sécurité et que vous avez des pointeurs vers tous les composants, par exemple, lorsque des paramètres par défaut pour le propriétaire, le groupe et la liste de contrôle d’accès discrétionnaire sont disponibles. Dans ce cas, vous pouvez appeler la fonction InitializeSecurityDescriptor pour initialiser une structure SECURITY_DESCRIPTOR , puis appeler des fonctions telles que SetSecurityDescriptorDacl pour affecter des pointeurs ACL et SID au descripteur de sécurité.

Dans un format auto-relatif, un descripteur de sécurité commence toujours par une structure SECURITY_DESCRIPTOR , mais les autres composants du descripteur de sécurité peuvent suivre la structure dans n’importe quel ordre. Au lieu d’utiliser des adresses mémoire, les composants du descripteur de sécurité sont identifiés par des décalages à partir du début du descripteur. Ce format est utile lorsqu’un descripteur de sécurité doit être stocké sur disque, transmis au moyen d’un protocole de communication ou copié en mémoire.

À l’exception de MakeAbsoluteSD, toutes les fonctions qui retournent un descripteur de sécurité le font à l’aide du format auto-relatif. Les descripteurs de sécurité passés en tant qu’arguments à une fonction peuvent être auto-relatifs ou absolus. Pour plus d’informations, consultez la documentation de la fonction .