Partager via


Création de descripteurs de sécurité pour de nouveaux objets d’annuaire

Vous pouvez utiliser ADSI pour créer un descripteur de sécurité et le définir en tant que propriété nTSecurityDescriptor d’un nouvel objet ou l’utiliser pour remplacer la propriété nTSecurityDescriptor d’un objet existant.

Pour créer un descripteur de sécurité pour un objet :

  1. Utilisez CoCreateInstance pour créer l’objet COM ADSI pour le nouveau descripteur de sécurité et obtenir un pointeur d’interface IADsSecurityDescriptor vers cet objet. N’oubliez pas que l’ID de classe est CLSID_SecurityDescriptor.
  2. Utilisez la méthode IADsSecurityDescriptor::p ut_Owner pour définir le propriétaire de l’objet. Le fiduciaire est un utilisateur, un groupe ou un autre principal de sécurité. Une application doit utiliser la valeur de la propriété appropriée de l’objet utilisateur ou de groupe du fiduciaire auquel appliquer l’ACE.
  3. Utilisez la méthode IADsSecurityDescriptor::p ut_Control pour contrôler si les dll DACL et sacL sont héritées par l’objet de son conteneur parent.
  4. Utilisez CoCreateInstance pour créer l’objet COM ADSI pour la liste dacl du nouveau descripteur de sécurité et obtenir un pointeur d’interface IADsAccessControlList vers cet objet. N’oubliez pas que l’ID de classe est CLSID_AccessControlList.
  5. Pour chaque ACE à ajouter au DACL, utilisez CoCreateInstance pour créer l’objet COM ADSI pour le nouvel ACE et obtenir un pointeur d’interface IADsAccessControlEntry vers cet objet. N’oubliez pas que l’ID de classe est CLSID_AccessControlEntry.
  6. Pour chaque ACE à ajouter au DACL, définissez les propriétés de l’ACE à l’aide des méthodes de propriété de l’objet IADsAccessControlEntry de l’ACE. Pour plus d’informations sur les propriétés à définir sur un ACE, consultez Définition des droits d’accès sur un objet.
  7. Pour que chaque ACE soit ajouté à la liste de contrôle d’accès, utilisez la méthode QueryInterface sur l’objet IADsAccessControlEntry pour obtenir un pointeur IDispatch . La méthode IADsAccessControlList::AddAce nécessite un pointeur d’interface IDispatch vers l’ACE.
  8. Pour chaque ACE à ajouter à la liste DACL, utilisez IADsAccessControlList::AddAce pour ajouter le nouvel ACE à la LISTE de contrôle d’accès. N’oubliez pas que l’ordre des AES dans la liste de contrôle d’accès peut affecter l’évaluation de l’accès à l’objet. L’accès correct à l’objet peut nécessiter la création d’une nouvelle liste de contrôle d’accès, l’ajout des AES de l’ACL existante dans le bon ordre à la nouvelle liste de contrôle d’accès, puis le remplacement de l’ACL existant dans le descripteur de sécurité par la nouvelle liste de contrôle d’accès. Pour plus d’informations, consultez Ordre des AIC dans une liste de contrôle d’accès.
  9. Suivez les étapes 4 à 8 pour créer la liste SACL pour le nouveau descripteur de sécurité.
  10. Utilisez la méthode IADsSecurityDescriptor::p ut_DiscretionaryAcl pour définir la liste DACL. Pour plus d’informations sur les DLL, consultez DACL Null et DACL vides.
  11. Utilisez la méthode IADsSecurityDescriptor::p ut_SystemAcl pour définir la liste SACL.
  12. Convertissez l’objet IADsSecurityDescriptor en VARIANT à l’aide de la méthode QueryInterface de l’objet IADsSecurityDescriptor pour obtenir une interface IDispatch . Définissez ensuite le membre vt du VARIANT sur VT_DISPATCH et définissez le membre pdispVal du VARIANT égal au pointeur IDispatch .
  13. Obtenez un pointeur d’interface IADs vers l’objet.
  14. Utilisez la méthode IADs::P ut avec « nTSecurityDescriptor » et le VARIANT créé ci-dessus pour écrire le nouveau descripteur de sécurité dans le cache de propriétés.
  15. Utilisez la méthode IADs::SetInfo pour mettre à jour la propriété sur l’objet dans le répertoire.