3. Informations administratives et opérationnelles de l’annuaire
Cette section traite de certains aspects du modèle d’informations administratives et opérationnelles de l’annuaire X.500 [X.501]. Les mises en œuvre LDAP PEUVENT (MAY) prendre en charge d’autres aspects de ce modèle.
3.1. Sous-arbres
Selon la définition de [X.501] :
Un sous-arbre (subtree) est un ensemble d’entrées d’objet et d’alias situées aux sommets d’un arbre. Les sous-arbres ne contiennent pas de sous-entrées. Le préfixe sub de subtree souligne que le sommet de base (ou racine) de cet arbre est généralement subordonné à la racine du DIT.
Un sous-arbre commence à un sommet et s’étend jusqu’à une limite inférieure identifiable, éventuellement jusqu’aux feuilles. Il est toujours défini dans un contexte qui le délimite implicitement. Par exemple, le sommet et les limites inférieures d’un sous-arbre définissant une zone répliquée sont délimités par un contexte de nommage.
3.2. Sous-entrées
Une sous-entrée est « une sorte particulière d’entrée, connue de l’annuaire, qui sert à conserver des informations associées à un sous-arbre ou à un affinement de sous-arbre » [X.501]. Les sous-entrées servent dans l’annuaire à conserver des informations à des fins administratives et opérationnelles définies dans [X.501]. Leur utilisation dans LDAP est détaillée dans [RFC3672].
Dans la présente spécification, le terme « (sub)entry » indique que les serveurs mettant en œuvre les modèles X.500(93) doivent utiliser une sous-entrée conformément à X.500(93), comme décrit dans [RFC3672], et que les autres serveurs doivent employer une entrée d’objet appartenant à la classe auxiliaire appropriée normalement associée à la sous-entrée (par exemple 'subschema' pour les sous-entrées de sous-schéma) afin de l’imiter. Le RDN de cette entrée d’objet DOIT (SHALL) être formé à partir d’une valeur de l’attribut 'cn' (commonName) [RFC4519] (toutes les sous-entrées étant nommées avec 'cn').
3.3. Attribut 'objectClass'
Chaque entrée du DIT possède un attribut 'objectClass'.
( 2.5.4.0 NAME 'objectClass'
EQUALITY objectIdentifierMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
La règle de correspondance 'objectIdentifierMatch' et la syntaxe OBJECT IDENTIFIER (1.3.6.1.4.1.1466.115.121.1.38) sont définies dans [RFC4517].
L’attribut 'objectClass' spécifie les classes d’objet d’une entrée, qui servent notamment, conjointement avec le schéma de contrôle, à déterminer les attributs permis dans l’entrée. Les clients peuvent modifier les valeurs de cet attribut, mais ne peuvent pas supprimer l’attribut 'objectClass'.
Les serveurs qui suivent les modèles X.500(93) DOIVENT (SHALL) limiter les modifications de cet attribut afin d’empêcher la modification de la classe structurelle fondamentale de l’entrée. Il est ainsi impossible de transformer une 'person' en 'country'.
Lors de la création d’une entrée ou de l’ajout d’une valeur 'objectClass', toutes les superclasses des classes nommées DOIVENT (SHALL) également être ajoutées implicitement si elles ne sont pas déjà présentes. Ainsi, si la classe auxiliaire 'x-a' est une sous-classe de 'x-b', l’ajout de 'x-a' à 'objectClass' entraîne l’ajout implicite de 'x-b' si elle est absente.
Les serveurs DOIVENT (SHALL) limiter les modifications de cet attribut afin d’empêcher la suppression de superclasses des valeurs 'objectClass' restantes. Ainsi, si la classe auxiliaire 'x-a' est une sous-classe de la classe auxiliaire 'x-b' et que 'objectClass' contient 'x-a' et 'x-b', tenter de supprimer seulement 'x-b' constitue une erreur.
3.4. Attributs opérationnels
Certains attributs, appelés attributs opérationnels, sont utilisés ou maintenus par les serveurs à des fins administratives et opérationnelles. Comme l’indique [X.501] : « Il existe trois catégories d’attributs opérationnels : les attributs opérationnels d’annuaire, les attributs opérationnels partagés entre DSA et les attributs opérationnels propres à un DSA ».
Un attribut opérationnel d’annuaire représente des informations opérationnelles et/ou administratives du modèle d’informations d’annuaire. Il s’agit aussi bien d’attributs maintenus par le serveur (par exemple 'createTimestamp') que d’attributs contenant des valeurs administrées par l’utilisateur (par exemple 'ditContentRules').
Un attribut opérationnel partagé entre DSA représente des informations du modèle d’informations DSA partagées entre plusieurs DSA.
Un attribut opérationnel propre à un DSA représente des informations de ce modèle propres au DSA (mais parfois dérivées d’informations partagées entre DSA ; par exemple 'namingContexts').
Les attributs opérationnels du modèle d’informations DSA sont détaillés dans [X.501].
Les attributs opérationnels ne sont normalement pas visibles. Ils ne sont renvoyés dans les résultats de recherche que s’ils sont explicitement demandés par leur nom.
Tous les attributs opérationnels ne sont pas modifiables par l’utilisateur.
Les entrées peuvent notamment contenir les attributs opérationnels suivants :
- creatorsName : nom distinctif de l’utilisateur qui a ajouté cette entrée à l’annuaire ;
- createTimestamp : instant auquel cette entrée a été ajoutée à l’annuaire ;
- modifiersName : nom distinctif de l’utilisateur qui a modifié cette entrée en dernier ;
- modifyTimestamp : instant de la dernière modification de cette entrée.
Les serveurs DEVRAIENT (SHOULD) maintenir les attributs 'creatorsName', 'createTimestamp', 'modifiersName' et 'modifyTimestamp' pour toutes les entrées du DIT.
3.4.1. 'creatorsName'
Cet attribut apparaît dans les entrées ajoutées au moyen du protocole (par exemple avec l’opération Add). Sa valeur est le nom distinctif du créateur.
( 2.5.18.3 NAME 'creatorsName'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )
La règle 'distinguishedNameMatch' et la syntaxe DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) sont définies dans [RFC4517].
3.4.2. 'createTimestamp'
Cet attribut apparaît dans les entrées ajoutées au moyen du protocole (par exemple avec l’opération Add). Sa valeur est l’instant d’ajout de l’entrée.
( 2.5.18.1 NAME 'createTimestamp'
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )
Les règles 'generalizedTimeMatch' et 'generalizedTimeOrderingMatch', ainsi que la syntaxe GeneralizedTime (1.3.6.1.4.1.1466.115.121.1.24), sont définies dans [RFC4517].
3.4.3. 'modifiersName'
Cet attribut apparaît dans les entrées modifiées au moyen du protocole (par exemple avec l’opération Modify). Sa valeur est le nom distinctif du dernier auteur d’une modification.
( 2.5.18.4 NAME 'modifiersName'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )
La règle 'distinguishedNameMatch' et la syntaxe DistinguishedName (1.3.6.1.4.1.1466.115.121.1.12) sont définies dans [RFC4517].
3.4.4. 'modifyTimestamp'
Cet attribut apparaît dans les entrées modifiées au moyen du protocole (par exemple avec l’opération Modify). Sa valeur est l’instant de la dernière modification de l’entrée.
( 2.5.18.2 NAME 'modifyTimestamp'
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )
Les règles 'generalizedTimeMatch' et 'generalizedTimeOrderingMatch', ainsi que la syntaxe GeneralizedTime (1.3.6.1.4.1.1466.115.121.1.24), sont définies dans [RFC4517].
3.4.5. 'structuralObjectClass'
Cet attribut indique la classe d’objet structurelle de l’entrée.
( 2.5.21.9 NAME 'structuralObjectClass'
EQUALITY objectIdentifierMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )
La règle 'objectIdentifierMatch' et la syntaxe OBJECT IDENTIFIER (1.3.6.1.4.1.1466.115.121.1.38) sont définies dans [RFC4517].
3.4.6. 'governingStructureRule'
Cet attribut indique la règle de structure qui régit l’entrée.
( 2.5.21.10 NAME 'governingStructureRule'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE NO-USER-MODIFICATION
USAGE directoryOperation )
La règle 'integerMatch' et la syntaxe INTEGER (1.3.6.1.4.1.1466.115.121.1.27) sont définies dans [RFC4517].