Qu'est-ce qu'une règle de mapping Active Directory ?

Une règle de mapping permet de mettre en relation, lors de l'import, un attribut LDAP avec une propriété ou une donnée Shinken en fonction du type de l'élément ( hôte, groupe d'hôtes, utilisateur, etc. ).

  • Une règle peut s'appliquer à tous les types d’éléments présents dans l'interface de Shinken.

Définition d'une règle de mapping utilisateur

Chaque ligne de ce fichier définit une correspondance entre une propriété ou une donnée Shinken et un attribut LDAP. Les paramètres peuvent donc être nombreux.

Par exemple, la ligne suivante définit une correspondance entre le nom de l'hôte dans Shinken et son attribut dans LDAP :

"host.host_name": "name",

La règle est définie par :

  • La propriété ( ou la donnée ) Shinken entre guillemets, découpée en deux parties :
    • Le type de l'élément au singulier ("host", "contact", "hostgroup" ou "contactgroup").
    • Le point permettant de joindre les deux parties.
    • La propriété ou la donnée de l'élément. Cette valeur constitue la "clé d'import" disponible dans la fenêtre d'aide de l'interface.
  • Le séparateur "deux-points".
  • L'attribut LDAP entre guillemets.
  • Une virgule en fin de ligne (sauf s'il s'agit de la dernière ligne non commentée).

En cas de non-respect du format, l'import ignore la ligne concernée et un message d'avertissement signale l'erreur de syntaxe.

Il est possible de choisir les correspondances entre propriétés Shinken et attributs LDAP.

  • Si ce fichier n'est pas défini, le mapping par DÉFAUT suivant est appliqué :
Propriété ShinkenPropriété Active DirectoryDescription
host.host_namenameL'attribut LDAP "name" sera utilisé pour le nom des hôtes.
host.display_namesAMAccountNameL'attribut LDAP "sAMAccountName" sera utilisé pour la description des hôtes.
host.addressipHostNumberL'attribut LDAP "ipHostNumber" sera utilisé pour l'adresse des hôtes.
hostgroup.hostgroup_namecnL'attribut LDAP "cn" (CommonName) sera utilisé pour le nom des groupes d'hôtes.
contact.contact_namenameL'attribut LDAP "name" sera utilisé pour le nom des contacts.
contact.emailmailL'attribut LDAP "mail" sera utilisé comme adresse mail du contact.
contact.display_namedisplayNameL'attribut LDAP "displayName" sera utilisé comme description du contact.
contact._PHONEtelephoneNumberL'attribut LDAP "telephoneNumber" sera conservé dans la donnée _PHONE du contact.
contact._MOBILEmobileL'attribut LDAP "mobile" sera conservé dans la donnée _MOBILE du contact.
contact._COUNTRYcoL'attribut LDAP "co" (Country) sera conservé dans la donnée _COUNTRY du contact.
contact._CITYlL'attribut LDAP "l" (localityName) sera conservé dans la donnée _CITY du contact.
contact._COMPANYcompanyL'attribut LDAP "company" sera conservé dans la donnée _COMPANY du contact.
contactgroup.contactgroup_namecnL'attribut LDAP "cn" (CommonName) sera utilisé pour le nom des groupes de contacts.

Pour empêcher l'importation des propriétés par défaut, il est nécessaire de définir un fichier de mapping avec une valeur vide pour la clé concernée.

Forcer la valeur des propriétés

L'ajout du suffixe [FORCE] ( sans espace ) à la clé d’import d'un élément Shinken permet de forcer la valeur associée.

Exemple :

"host.address[FORCE]": "ipHostNumber",

Lorsqu’une propriété est marquée avec [FORCE], elle est traitée de la manière suivante :

  • La valeur est prioritaire par rapport aux autres sources.
  • Si une autre source importe le même objet avec une valeur différente, cette dernière est ignorée.
  • En cas de conflit entre plusieurs valeurs forcées, la priorité de la source détermine la valeur conservée.

L'utilisation de [FORCE] sur une clé contenant une liste ( comme la propriété "members" ) remplace intégralement la liste des autres sources par celle fournie.

Chemin du fichier de définition

Pour ajouter une règle utilisateur, il convient d'éditer le fichier suivant :

/etc/shinken-user/source-data/source-data-[nom de la source]/_configuration/active-directory-mapping.json

/etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-mapping.json

Compatibilité avec les anciennes versions

Pour des raisons de compatibilité avec les versions antérieures à la 02.06.03, les propriétés suivantes restent fonctionnelles :

Ancienne propriétéNouvelle propriété correspondanteDescription
host.namehost.host_nameContient le nom de l'élément.
host.dNSHostNamehost.addressL'adresse de l'élément.
host.operatingSystemhost._OSLe système d'exploitation est conservé dans une donnée de l'hôte.
host.operatingSystemServicePackhost._OS_SPLe service pack du système d'exploitation est conservé dans une donnée.
host.distinguishedNamehost.display_nameLe Distinguished Name (DN) correspond à la description de l'hôte.
contact.namecontact.contact_nameContient le nom de l'utilisateur.
contact.mailcontact.emailContient l'adresse e-mail de l'utilisateur.
contact.displayNamecontact.display_nameContient la description de l'utilisateur.
contact.telephoneNumbercontact._PHONELe numéro de téléphone est conservé dans une donnée.
contact.mobilecontact._MOBILELe numéro de mobile est conservé dans une donnée.
contact.cocontact._COUNTRYLe pays est conservé dans une donnée.
contact.lcontact._CITYLa ville est conservée dans une donnée.
contact.companycontact._COMPANYLa société est conservée dans une donnée.
hostgroup.namehostgroup.hostgroup_nameContient le nom du groupe.
contactgroup.namecontactgroup.contactgroup_nameContient le nom du groupe.

Les filtres par type d'élément ("host.filter", etc.) doivent désormais être renseignés dans le fichier de connexion sous la forme "hosts_filter", "contacts_filter", etc.

  • Les paramètres du fichier de connexion sont prioritaires.
  • En leur absence, les paramètres du fichier de mapping sont appliqués.

Les paramètres "contact.classFilter" et "contact.categoryFilter" sont dépréciés. Il convient d'utiliser "contacts_filter" dans le fichier de connexion.