Création d’un droit d’accès de contrôle
Pour ajouter un droit d’accès de contrôle à un serveur Active Directory, créez un objet controlAccessRight dans le conteneur Extended-Rights de la partition Configuration. Pour plus d’informations et un exemple de code, consultez Exemple de code pour la création d’un droit d’accès de contrôle. Pour utiliser le droit d’accès au contrôle, vous devez effectuer quelques étapes supplémentaires, selon que le droit d’accès au contrôle est destiné à une opération spéciale ou à un jeu de propriétés.
Si vous définissez un droit d’accès de contrôle pour un jeu de propriétés, utilisez le rightsGUID de l’objet controlAccessRight pour identifier les propriétés dans l’ensemble. Chaque propriété est définie par un objet attributeSchema dans le schéma Active Directory. La propriété attributeSecurityGUID d’un objet attributeSchema identifie le jeu de propriétés, le cas échéant, auquel appartient la propriété. N’oubliez pas que la propriété attributeSecurityGUID est à valeur unique et stocke le GUID au format binaire (syntaxe de chaîne d’octets).
Si vous définissez un droit d’accès de contrôle pour placer des restrictions sur l’accès à une opération particulière, votre application doit effectuer l’case activée d’accès lorsqu’un utilisateur tente l’opération.
Pour configurer les case activée d’accès
- Créez un droit d’accès de contrôle qui définit le type d’accès à l’application ou au service. Pour plus d’informations, consultez l’exemple de code suivant.
- Créez un objet services de domaine Active Directory qui représente l’application, le service ou la ressource que vous protégez.
- Ajoutez des AE d’objet à la liste dacl dans le descripteur de sécurité d’objet pour accorder ou refuser aux utilisateurs ou aux groupes le droit d’accès de contrôle sur cet objet. Pour plus d’informations, consultez Définition d’une ACE de droit d’accès de contrôle dans l’ACL d’un objet.
- Lorsqu’un utilisateur tente d’effectuer l’opération, vérifiez les droits utilisateur en passant le descripteur de sécurité d’objet et le jeton d’accès utilisateur à la fonction AccessCheckByTypeResultList . Pour plus d’informations, consultez Vérification d’un droit d’accès de contrôle dans l’ACL d’un objet.
En fonction du résultat de l’accès case activée sur l’objet, l’application ou le service peut autoriser ou refuser à l’utilisateur l’accès à l’application ou au service.
Lorsque vous créez un objet controlAccessRight, définissez les attributs répertoriés dans le tableau suivant pour faire de l’objet un droit d’accès de contrôle légal reconnu par services de domaine Active Directory et les systèmes de sécurité Windows.
Attribut | Description |
---|---|
Cn | Propriété à valeur unique qui est le nom unique relatif (RDN) de l’objet dans le conteneur Extended-Rights. Cn est le nom du droit de contrôle d’accès dans services de domaine Active Directory. |
appliesTo | Propriété à valeurs multiples qui répertorie les classes d’objets auxquelles le droit de contrôle d’accès s’applique. Par exemple, le droit de contrôle d’accès Send-As répertorie les classes d’objets utilisateur et ordinateur dans sa propriété appliesTo . Dans la liste, chaque classe d’objet est identifiée par le schemaIDGUID de son objet classSchema . Les GUID sont stockés sous forme de chaînes du formulaire produit par la fonction StringFromGUID2 dans la bibliothèque COM, mais sans accolades de début et de fin ({ }). Par exemple, le GUID suivant est le schemaIDGUID pour la classe d’ordinateur : bf967a86-0de6-11d0-a285-00aa003049e2. N’oubliez pas que la propriété schemaIDGUID d’un objet classSchema est stockée en tant que GUID binaire à l’aide de la syntaxe de chaîne d’octets. Pour convertir ce format de chaîne d’octets au format de chaîne utilisé dans la propriété appliesTo , utilisez la fonction StringFromGUID2 et supprimez les accolades de la chaîne retournée. Pour plus d’informations sur la propriété schemaIDGUID de l’une des classes d’objets prédéfinies, telles que l’utilisateur ou l’ordinateur, consultez la page de référence de classe dans la référence de schéma Active Directory dans la services de domaine Active Directory Reference. Pour plus d’informations et un exemple de code qui récupère un schemaIDGUID à partir d’un objet classSchema, consultez Reading attributeSchema et classSchema Objects. |
Displayname | Chaîne utilisée pour afficher le droit de contrôle d’accès dans les interfaces utilisateur telles que la page de propriétés Sécurité et d’autres emplacements du composant logiciel enfichable MMC Utilisateurs et ordinateurs Active Directory. |
rightsGuid | GUID qui identifie le droit d’accès de contrôle dans un ACE. Le GUID est stocké sous la forme d’une chaîne du formulaire produit par la fonction StringFromGUID2 , mais sans les accolades de début et de fin. Utilisez Uuidgen.exe pour un autre utilitaire afin de générer un GUID pour le droit d’accès de contrôle. Si vous définissez un nouveau jeu de propriétés, vous utilisez le rightsGuid de l’objet controlAccessRight pour identifier les propriétés dans l’ensemble. Pour chaque propriété du jeu de propriétés, définissez la valeur attributeSecurityGUID de la propriété sur la valeur des droits du jeu de propriétésGUID. La valeur attributeSecurityGUID d’une propriété est stockée dans la définition attributeSchema de la propriété dans le schéma Active Directory. La propriété attributeSecurityGUID est à valeur unique et stocke le GUID au format binaire (syntaxe de chaîne d’octets). |
objectClass | Cet attribut spécifie controlAccessRight comme classe d’objet. |
validAccesses | Pour les jeux de propriétés, définissez cet attribut sur 0x30 (ADS_RIGHT_DS_READ_PROP | ADS_RIGHT_DS_WRITE_PROP). Pour contrôler les droits d’accès, définissez cet attribut sur 0x100 (ADS_RIGHT_DS_CONTROL_ACCESS). La page de propriétés de sécurité reconnaît les droits d’accès de contrôle uniquement si l’attribut validAccesses est défini sur la valeur appropriée. Si la valeur est zéro, le droit d’accès de contrôle est ignoré ou n’est pas affiché par la page de propriétés de sécurité. |
N’oubliez pas que les classes de schéma prédéfinies utilisent l’attribut localizationDisplayId d’un objet controlAccessRight pour spécifier un identificateur de message utilisé pour récupérer un nom d’affichage localisé à partir de Dssec.dll. Ne définissez pas l’attribut localizationDisplayId si vous définissez un nouvel objet controlAccessRight .