Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Vue d'ensemble

 

Ce document décrit comment vous pouvez importer des hôtes et des utilisateurs depuis Active Directory (Annuaire d'entreprise Microsoft Windows utilisant le protocole LDAP).

Une fois avoir pris soin de lire notre page sur la Configuration des sources, certaines étapes sont nécessaires afin de pouvoir importer des hôtes et des utilisateurs depuis un annuaire Active Directory : 

  • Personnaliser la source Active Directory (à partir de la source d'exemple) 
  • Configurer les 3 fichiers pour : 
    • la connection à Active Directory pour les extractions de données 
    • le "mapping" pour la correspondance entre les champs de l'annuaire Windows et ceux de Shinken
    • les règles de configuration pour effectuer des filtres si besoin et réaliser des actions


Panel
titleSommaire

Table of Contents


 

Personnaliser la source pré-installée

 

 

Le script d'installation et de mise à jour de Shinken permet de mettre en place une source Active Directory déjà configurée.

Vous pouvez la voir sur la page d'accueil de l'UI de Configuration, dans le tableau des sources.

Cette source utilise 2 sortes de fichiers de configuration :

    • Le fichier de définition de source Active Directory
      • Pour l'active directory, le fichier en place pour l'exemple est /etc/shinken/sources/active-dir-hosts.cfg
    • Les 3 fichiers de configuration de la source afin de personnaliser les extractions de données
      • Disponible dans le répertoire /etc/shinken-user/source-data/source-data-active-directory-sample/_configuration : connection_configuration_file, mapping_configuration_file et rules_configuration_file

 

Vous pouvez directement utiliser cette source "active-dir-example" en modifiant uniquement les fichiers de configuration pour extractions de vos données Active Directory (pour un test rapide par exemple). Cependant, nous vous conseillons de dupliquer la source "example" en suivre suivant l'astuce ci-dessous :. 

Tip

Pour personnaliser votre source (et donc modifier le terme "example"), copiez votre répertoire de configuration de la source (source-data-active-directory-sample vers source-data-active-directory-monServeurAD par exemple) et modifiez votre définition de source (le nom de votre source et les chemins à vos 3 fichiers de configuration).

Bien entendu, votre Synchronizer devra appeler ce nouveau nom de source, modifiez donc également le fichier de configuration du Shinken Synchronizer.


Définition de la source

:

 

Le fichier préalablement créé pour la source d'Active Directory exemple est : /etc/shinken/sources/active-dir-hosts.cfg. (de la même manière qu'avec le répertoire de configuration, vous pouvez dupliquer ce fichier et effectuer les modifications afin de personnaliser votre source)

C'est ici que vous pouvez changer le nom de votre source via la propriété source_name

Une source Active Directory est caractérisée par son module_type qui doit être : ldap-import

Pour les autres valeurs, merci de vous référer à la Configuration des sources. 
 

Configuration de la connexion

:

Les fichiers suivants sont utilisés pour effectuer la connexion à votre serveur Active Directory (le chemin peut varier si vous avez personnalisé votre répertoire) :

 

PropertyValueDescription
connection_configuration_file/etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-connection.json

Connexion LDAP

Information de connexion à l'annuaire LDAP.
Ce fichier est à modifier obligatoirement

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

Règles de mapping
Le mapping d'attributs peuvent être différents suivant deux Active Directory.
Par exemple, vous pouvez spécifier dans ce fichier quel serait le nom d'attribut du numéro de téléphone des utilisateurs.
Ce fichier peut être utilisé tel quel

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

Règles de configuration
Vous pouvez choisir quels sortes d'hôtes et d'utilisateurs seront récupérés et permet également la définition de critères afin d'appliquer automatiquement des templatesmodèles.
Ce fichier est à modifier obligatoirement

    


Modifier Veuillez donc tout d'abord modifier le fichier active-directory-connection.json :


PropriétéDéfautDescription
urlldap://YOUR-DC-FQDN/Adresse de votre serveur Active Directory
ldap_protocol3Version du protocole LDAP (par défaut à 3 si pas spécifié)
base dc=YOUR,dc=DOMAIN,dc=comOU (Organisation Unit) base pour la découverte de vos objets
hosts_baseOU=DataCenter Servers,dc=YOUR,dc=DOMAIN,dc=comOU (Organisation Unit) base pour la découverte de vos hôtes
hostgroups_baseOU=computers,dc=shinkendom,dc=localOU (Organisation Unit) base pour la découverte de vos groupes d'hôtes
contacts_basedc=YOUR,dc=DOMAIN,dc=comOU (Organisation Unit) base pour la découverte de vos contacts
usernameSHINKEN@YOURDOMAIN.comUtilisateur utilisé pour la connexion au serveur AD
passwordPASSWORDMot de passe utilisé pour la connexion au serveur AD

 

Exemple :

Code Block
languagejs
title/etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-connection.json
{
  "url": "ldap://vm-w2k8r2.shinkendom.local/",
  "base": "dc=shinkendom,dc=local",
  "hosts_base": "OU=serveurs,dc=shinkendom,dc=local",
  "hostgroups_base": "OU=serveurs,dc=shinkendom,dc=local",
  "contacts_base": " OU=utilisateurs,DC=shinkendom,DC=local",
  "username": "administrateur@shinkendom.local",
  "password": "P@ssword1"
}
Tip
titleTip

Le compte utilisé pour envoyer des requêtes LDAP au serveur n'a besoin que d'un accès en "lecture seule". Vous devriez créer un compte AD dédié à cet accès.

 

Configuration des règles de "mapping"


Info
titleNote Importante

Si vous n'avez pas de distinction de type entre les objets que vous souhaitez importer dans votre AD (hôtes, groupes d'hôtes ou utilisateurs), veuillez mettre les mêmes chemins AD pour les 3 types. Il en est de même si vous souhaitez importer une OU qui ne contient qu'un seul type d'objet, veuillez spécifier ce chemin d'OU pour les 3 propriétés (hosts_base, hostgroups_base et contacts_base). Ne supprimez pas ces propriétés, elles sont obligatoires.

Un moyen de ne pas importer des objets sera de placer des filtres via le fichier mapping_configuration_file et rules_configuration_file (voir plus bas).


Exemple :

Code Block
languagejs
title/etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-connection.json
{
  "url": "ldap://vm-w2k8r2.shinkendom.local/",
  "ldap_protocol":3,
  "base": "dc=shinkendom,dc=local",
  "hosts_base": "OU=serveurs,dc=shinkendom,dc=local",
  "hostgroups_base": "OU=serveurs,dc=shinkendom,dc=local",
  "contacts_base": " OU=utilisateurs,DC=shinkendom,DC=local",
  "username": "administrateur@shinkendom.local",
  "password": "P@ssword1"
}


Tip
titleTip

Le compte utilisé pour envoyer des requêtes LDAP au serveur n'a besoin que d'un accès en "lecture seule". Vous devriez créer un compte de service AD dédié à cet accès Shinken.

 

Configuration des règles de "mapping"

Ce fichier vous permet d'effectuer une correspondance entre des propriétés Active Directory et Shinken. Les propriétés host.filter et contact.filter peuvent permettre de ne pas importer des types d'objets particuliers. (voir l'astuce plus bas)

Image Added Si besoin (facultatif), modifiez le fichier active-directory-mapping.json


Propriété ShinkenPropriété Active DirectoryDescription
host
Ce fichier vous permet d'effectuer une correspondance entre des propriétés Active Directory et Shinken.
Warning

A part si vous savez exactement ce que vous faîtes, nous vous conseillons de ne pas modifier ce fichier.

 

Image Removed Modifier le fichier active-directory-mapping.json

displayName(&(objectCategory=person)(objectClass=user)) contacts hostgroupfilter
Propriété ShinkenPropriété Active DirectoryDescription
host.namenameLa propriété Active Directory name, représentant le nom de l'objet AD, sera importé et utilisé pour le nom de l'hôte Shinken
host.dNsHostdNSHostNameLa propriété Active Directory dNSHostName, représentant le nom DNS de l'objet AD, sera importé et utilisé pour l'adresse de l'hôte Shinken
host.operatingSystemoperatingSystemNULL
host.operatingSystemServicePackoperatingSystemServicePackNULL
host.distinguishedNamedistinguishedNameNULL
host.filter(objectClass=computer)Cette propriété permet le filtre des ordinateurs / hôtes seulement
contact.namenameLa propriété Active Directory name, représentant le nom de l'objet AD, sera importé et utilisé pour le nom du contact de l'hôte Shinken
contacthost.maildNsHostmaildNSHostNameLa propriété Active Directory mail dNSHostName, représentant le nom DNS de l'email de l'objet objet AD, sera importé et utilisé pour l'email du contact adresse de l'hôte Shinkencontact
host.operatingSystemnameLa propriété Active Directory name, représentant le nom de l'objet AD, sera importé et utilisé pour le nom d'affichage du contact Shinken
contact.categoryFilterPersonNULL
contact.membermemberNULL
contact.telephoneNumbertelephoneNumberLa propriété Active Directory telephoneNumber, représentant le numéro de téléphone de l'objet AD, sera importé et utilisé pour le numéro de téléphone du contact Shinken
contact.mobilemobileNULL
contact.cocoNULL
contact.llNULL
contact.companycompanyNULL
operatingSystem 
host.operatingSystemServicePackoperatingSystemServicePack 
host.distinguishedNamedistinguishedName 
host.filter(objectClass=computer)contact.filterCette propriété permet le filtre des ordinateurs / hôtes seulement
contact. 
 
Code Block
title/etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-mapping.json
# IMPORTANT: Do not edit this file.
# To have your own mapping, copy it under the /etc/shinken-users/source-data/YOUR_SOURCE_FOLDER/_configuration/ directory and edit your copy instead.
# Note: comments should be with a # starting the line, NOT after a value
{
# first hosts propertyes (computer object in Active Directory)
   "host.name": "name",
   "host.dNSHostName": "dNSHostName",
   "host.operatingSystem": "operatingSystem",
   "host.operatingSystemServicePack":"operatingSystemServicePack",
   "host.distinguishedName": "distinguishedName",
   "host.filter": "(objectClass=computer)",

# Now contact properties
    "contact.name": "name",
    "contact.mail": "mail",
    "contact.displayName":"name",
    "contact.categoryFilter":"Person",
    "contact.member": "member",
    "contact.telephoneNumber":"telephoneNumber",
    "contact.mobile":"mobile",
# Co: for country
    "contact.co":"co",
# l: for city
    "contact.l":"l",
    "contact.company":"company",
    "contact.filter":"(&(objectCategory=person)(objectClass=user))",
# By default hostgroup are not requested. Setup a filter in your custom file to enabled it
    "hostgroup.filter":""

}

Règles de configuration

Ce fichier est utilisé pour appliquer des modèles d'hôtes, des modèles de contacts et des "tags" sur les hôtes et contacts durant l'import.
Image Removed
Modifier le fichier active-directory-rules.json Tip
titleTip

Le modèle d'hôte windows est déjà disponible dans Shinken, ce modèle vérifie : l'utilisation Cpu, les Disques, les journaux d'évènements Application, les journaux d'évènements Système, la mémoire, l'interface réseau, le uptime, les services, les fichiers de paginations.

Pour un bon début, vous pouvez configurer la propriété hosts_tag de cette manière :

hosts_tagwindows

 

The mandatories properties to modify are in green.

 

PropertyDefaultDescriptionhosts_tagyour-host-templateLe modèle d'hôte your-host-template sera appliqué à tous les hôtes découverts dans l'annuaire Active Directorycontacts_taggeneric-contactLe modèle de contact generic-contact sera appliqué à tous les contacts découverts dans l'annuaire Active Directorycontacts_group_filterCN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=com | CN=OTHERGROUPS,OU=Groups,OU=Users Groups,DC=YOUR,dc=DOMAIN,dc=com

OU (Organizational Unit) ou Groupe d'utilisateur à importer

Vous pouvez définir plusieurs groupes en séparant les filtres avec le caractère |

hosts_tag_montemplateOU=Database Servers,OU=DataCenter Servers,DC=YOUR,dc=DOMAIN,dc=comLe modèle d'hôte "montemplate" (ce nom est à modifier) sera appliquée aux hôtes découverts dans cette OU de l'annuaire Active Directoryhosts_match_operatingSystem_windowswindowsHost template windows will be applied for hosts matching "windows" in the property operatingSystem.hosts_match_operatingSystem_windows2008windows*.*2008(?!.*.(?:r2))Host template windows2008 applied for hosts matching "windows*.*2008(?!.*.(?:r2))" in the property operatingSystemhosts_match_operatingSystem_windows2008r2windows*.*2008*.*r2host template windows 2008r2hosts_match_operatingSystem_windows2003windows*.*2003host template windows2003hosts_match_operatingSystem_windows2012windows*.*2012(?!.*.(?:r2))host template windows2012hosts_match_operatingSystem_windows2012r2windows*.*2012*.*r2host template windows2012r2hosts_match_operatingSystem_windows2000windows*.*2000host template windows 2000hosts_match_operatingSystem_windowsxpwindows*.*xphost template windows xphosts_match_operatingSystem_enterpriseEnterprisehost template Enterprisehosts_match_operatingSystemServicePack_sp1Service Pack 1host template Service Pack 1hosts_match_operatingSystemServicePack_sp2Service Pack 2host template Service Pack 2hosts_match_operatingSystemServicePack_sp3Service Pack 3host template Service Pack 3AddFirst_template_(domain-admins)_to_contact_matching_[memberOf]CN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=comAjouter le modèle de contact "domain-admins" à tous les contacts ayant la valeur "CN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=com" dans son attribut "memberOf" - premier à être appliquer (avant la règle de contacts_tag ).AddLast_template_(users)_to_contact_matching_[memberOf]CN=Users,DC=YOUR,dc=DOMAIN,dc=comAjouter le modèle de contact "users" à tous les contacts ayant la valeur "CN=Users,DC=YOUR,dc=DOMAIN,dc=com" dans son attribut "memberOf" - dernier à être appliquer (après la règle de contacts_tag ).Force_template_(specific)_to_contact_matching_[memberOf]CN=SpecificUsers,DC=YOUR,dc=DOMAIN,dc=comAjouter le modèle de contact "specific" à tous les contacts ayant la valeur "CN=SpecificUsers,DC=YOUR,dc=DOMAIN,dc=com" dans son attribut "memberOf" - seul à être appliquer (la règle de contacts_tag ne sera pas appliquée).

 

Exemple :

Code Block
languagejs
title/etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-rules.json
{
  "hosts_tag": "windows",
  "contacts_tag": "generic-contact",
  "contacts_group_filter": "CN=paris_shinken_users,OU=utilisateurs,DC=shinkendom,DC=local | CN=bordeaux_shinken_users,OU=utilisateurs,DC=shinkendom,DC=local",
  "hosts_tag_citrix": "OU=citrix,OU=serveurs,dc=shinken,dc=local",
  "hosts_tag_database": "OU=database,OU=serveurs,dc=shinken,dc=local",
  "hosts_tag_exchange": "OU=exchange,OU=serveurs,dc=shinken,dc=local",
  "hosts_tag_fileprint": "OU=fileprint,OU=serveurs,dc=shinken,dc=local",
  "hosts_tag_windows": "OU=infra,OU=serveurs,dc=shinken,dc=local",
  "hosts_match_operatingSystem_windows": "windows",
  "hosts_match_operatingSystem_windows2008": "windows*.*2008(?!.*.(?:r2))",
  "hosts_match_operatingSystem_windows2008r2": "windows*.*2008*.*r2",
  "hosts_match_operatingSystem_windows2003": "windows*.*2003",
  "hosts_match_operatingSystem_windows2012": "windows*.*2012(?!.*.(?:r2))",
  "hosts_match_operatingSystem_windows2012r2": "windows*.*2012*.*r2",
  "hosts_match_operatingSystem_windows2000": "windows*.*2000",
  "hosts_match_operatingSystem_windowsxp": "windows*.*xp",
  "hosts_match_operatingSystem_enterprise": "Enterprise",
  "hosts_match_operatingSystemServicePack_sp1": "Service Pack 1",
  "hosts_match_operatingSystemServicePack_sp2": "Service Pack 2",
  "hosts_match_operatingSystemServicePack_sp3": "Service Pack 3",
  "AddFirst_template_(domain-admins)_to_contact_matching_[memberOf]": "CN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=com",
  "AddLast_template_(users)_to_contact_matching_[memberOf]": "CN=Users,DC=YOUR,dc=DOMAIN,dc=com",
  "Force_template_(specific)_to_contact_matching_[memberOf]": "CN=SpecificUsers,DC=YOUR,dc=DOMAIN,dc=com"}

Tip

Si vous souhaitez importer tous les objets d'une OU peu importe leurs groupes, configurez le contacts_group_filter à aucune valeur ("")

Tous les objets dans contacts_base (fichier active-directory-connection.json) filtrés via le contact.filter (fichier active-directory-mapping.json) seront importés.

 

 

Import des objets

Pour importer des objets, allez sur la page d'accueil de l'UI de configuration, si votre configuration est bonne, vous devriez avoir un message "OK: Import clean."

Maintenant, faîtes un "Force import" en cliquant sur  Image Removed

Dans le panneau "Elements >" vous verrez les nouveaux éléments apparaître (Hôtes et Contacts).

Image Removed

La prochaine étape sera alors d'importer ces nouveaux éléments dans Shinken.

 

HOW TO

Importer des ordinateurs avec des noms spécifiques

Image Removed
Dans le fichier active-directory-mapping.json

Modifiez le paramètre host.filter

Code Block
   "host.filter": "(&(objectClass=computer)(sAMAccountName=*SERVER_NAME*))",

Changez SERVER_NAME  par le nom de serveur vous voulez importer.

 

namenameLa propriété Active Directory name, représentant le nom de l'objet AD, sera importé et utilisé pour le nom du contact Shinken
contact.mailmailLa propriété Active Directory mail, représentant l'email de l'objet AD, sera importé et utilisé pour l'email du contact Shinken
contact.displayNamenameLa propriété Active Directory name, représentant le nom de l'objet AD, sera importé et utilisé pour le nom d'affichage du contact Shinken
contact.categoryFilterPerson 
contact.membermember 
contact.telephoneNumbertelephoneNumberLa propriété Active Directory telephoneNumber, représentant le numéro de téléphone de l'objet AD, sera importé et utilisé pour le numéro de téléphone du contact Shinken
contact.mobilemobile 
contact.coco 
contact.ll 
contact.companycompany 
contact.filter(&(objectCategory=person)(objectClass=user))Cette propriété permet le filtre des contacts seulement
hostgroup.filter 
 


Info
titleAstuce

Si vous ne souhaitez pas importer d'objets AD "computer" et donc de ne pas créer d'hôtes en "nouveau" dans Shinken, vous pouvez définir la propriété host.filter à : (objectClass=)
Si vous ne souhaitez pas importer d'objets AD "contact" et donc de ne pas créer d'utilisateurs en "nouveau" dans Shinken, vous pouvez définir la propriété contact.filter à : (&(objectCategory=person)(objectClass=)


Code Block
title/etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-mapping.json
# IMPORTANT: Do not edit this file.
# To have your own mapping, copy it under the /etc/shinken-users/source-data/YOUR_SOURCE_FOLDER/_configuration/ directory and edit your copy instead.
# Note: comments should be with a # starting the line, NOT after a value
{
# first hosts propertyes (computer object in Active Directory)
   "host.name": "name",
   "host.dNSHostName": "dNSHostName",
   "host.operatingSystem": "operatingSystem",
   "host.operatingSystemServicePack":"operatingSystemServicePack",
   "host.distinguishedName": "distinguishedName",
   "host.filter": "(objectClass=computer)",

# Now contact properties
    "contact.name": "name",
    "contact.mail": "mail",
    "contact.displayName":"name",
    "contact.categoryFilter":"Person",
    "contact.member": "member",
    "contact.telephoneNumber":"telephoneNumber",
    "contact.mobile":"mobile",
# Co: for country
    "contact.co":"co",
# l: for city
    "contact.l":"l",
    "contact.company":"company",
    "contact.filter":"(&(objectCategory=person)(objectClass=user))",
# By default hostgroup are not requested. Setup a filter in your custom file to enabled it
    "hostgroup.filter":""

}


Règles de configuration

Ce fichier est utilisé pour appliquer des modèles d'hôtes et des modèles d'utilisateurs sur les hôtes et utilisateurs durant l'import, provenant d'OU ciblées.
Ce fichier permet également de filtrer les utilisateurs à importer dans Shinken en se basant sur les membres d'un ou de plusieurs groupes d'utilisateurs de l'annuaire Active Directory ciblé.

Image Added
Veuillez donc enfin modifier le fichier active-directory-rules.json
Attention la modification de ce fichier est obligatoire car certaines propriétés contenant des chemins AD ne permettront pas un import valide si elles ne sont pas modifiées.


Tip
titleTip

Le modèle d'hôte windows est déjà disponible dans Shinken, ce modèle vérifie : l'utilisation Cpu, les Disques, les journaux d'évènements Application, les journaux d'évènements Système, la mémoire, l'interface réseau, le uptime, les services, les fichiers de paginations.

Pour un bon début, vous pouvez configurer la propriété hosts_tag de cette manière :

hosts_tagwindows


 

 

PropertyDefaultDescription
hosts_tagyour-host-templateLe modèle d'hôte your-host-template sera appliqué à tous les hôtes découverts dans l'annuaire Active Directory
hosts_tag_monmodeleOU=Database Servers,OU=DataCenter Servers,DC=YOUR,dc=DOMAIN,dc=comLe modèle d'hôte montemplate (ce nom est à modifier) sera appliquée aux hôtes découverts dans cette OU de l'annuaire Active Directory
AddFirst_template_(windows)_to_host_matching_[operatingSystem]windows.*Ajouter le modèle d'hôte windows (à modifier si besoin) à tous les hôtes ayant une valeur commencant par "windows" dans son attribut operatingSystem - premier à être appliquer (avant la règle de hosts_tag ).
AddLast_template_(sp1)_to_host_matching_[operatingSystemServicePack]Service Pack 1Ajouter le modèle d'hôte sp1 (à modifier si besoin) à tous les hôtes ayant une valeur égale à "Service Pack 1" dans son attribut operatingSystemServicePack - dernier à être appliquer (après la règle de hosts_tag ).
contacts_taggeneric-contactLe modèle de contact generic-contact sera appliqué à tous les contacts découverts dans l'annuaire Active Directory
contacts_group_filterCN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=com | CN=OTHERGROUPS,OU=Groups,OU=Users Groups,DC=YOUR,dc=DOMAIN,dc=com

Les contacts importés depuis la base AD "contacts_base" seront filtrés avec ceux présents dans le Groupe d'utilisateur (CN) spécifié. Vous pouvez définir plusieurs groupes en séparant les filtres avec le caractère pipe |

AddFirst_template_(domain-admins)_to_contact_matching_[memberOf]CN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=comAjouter le modèle de contact domain-admins à tous les contacts ayant la valeur "CN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=com" dans son attribut "memberOf" - premier à être appliquer (avant la règle de contacts_tag ).
AddLast_template_(users)_to_contact_matching_[memberOf]CN=Users,DC=YOUR,dc=DOMAIN,dc=comAjouter le modèle de contact users à tous les contacts ayant la valeur "CN=Users,DC=YOUR,dc=DOMAIN,dc=com" dans son attribut "memberOf" - dernier à être appliquer (après la règle de contacts_tag ).
Force_template_(specific)_to_contact_matching_[memberOf]CN=SpecificUsers,DC=YOUR,dc=DOMAIN,dc=comAjouter le modèle de contact "specific" à tous les contacts ayant la valeur "CN=SpecificUsers,DC=YOUR,dc=DOMAIN,dc=com" dans son attribut "memberOf" - seul à être appliquer (la règle de contacts_tag ne sera pas appliquée).

 

Exemple :

Code Block
languagejs
title/etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-rules.json
{
  "hosts_tag": "windows",
  "hosts_tag_citrix": "OU=citrix,OU=serveurs,dc=shinken,dc=local",
  "hosts_tag_database": "OU=database,OU=serveurs,dc=shinken,dc=local",
  "hosts_tag_exchange": "OU=exchange,OU=serveurs,dc=shinken,dc=local",
  "hosts_tag_fileprint": "OU=fileprint,OU=serveurs,dc=shinken,dc=local",
  "hosts_tag_windows": "OU=infra,OU=serveurs,dc=shinken,dc=local",

  "contacts_tag": "generic-contact",
  "contacts_group_filter": "CN=paris_shinken_users,OU=utilisateurs,DC=shinkendom,DC=local | CN=bordeaux_shinken_users,OU=utilisateurs,DC=shinkendom,DC=local",
  "AddFirst_template_(domain-admins)_to_contact_matching_[memberOf]": "CN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=com",
  "AddLast_template_(users)_to_contact_matching_[memberOf]": "CN=Users,DC=YOUR,dc=DOMAIN,dc=com",
  "Force_template_(specific)_to_contact_matching_[memberOf]": "CN=SpecificUsers,DC=YOUR,dc=DOMAIN,dc=com"
}


Attention, les 4 dernières propriétés contacts_group_filterAddFirst_template_(domain-admins)_to_contact_matching_[memberOf]AddLast_template_(users)_to_contact_matching_[memberOf] et Force_template_(specific)_to_contact_matching_[memberOf] doivent être adaptées à votre Annuaire AD. Si vous ne souhaitez pas utiliser ces propriétés, veuillez les mettre à "aucune valeur" avec l'astuce suivante:

Tip

Si vous souhaitez ne pas utiliser ce filtre et donc importer tous les objets d'une OU peu importe leurs groupes, configurez le contacts_group_filter à aucune valeur ("")

Tous les objets dans contacts_base (fichier active-directory-connection.json) filtrés via le contact.filter (fichier active-directory-mapping.json) seront importés.


Voici un exemple de fichier cfg du fichier active-directory-rules.json simple, sans utilisation de filtre ou d'application automatique de modèle :

Code Block
{
  "hosts_tag": "",

  "contacts_tag": "",
  "contacts_group_filter": "",
  "Force_template_(specific)_to_contact_matching_[memberOf]": ""
}


Import des objets


Pour importer des objets, allez sur la page d'accueil de l'UI de configuration, si votre configuration est bonne, vous devriez avoir un message "OK: Import clean."

Maintenant, faîtes un "Force import" en cliquant sur  Image Added


Dans le panneau "Elements >" vous verrez les nouveaux éléments apparaître (Hôtes et Contacts).

Image Added

La prochaine étape sera alors d'importer ces nouveaux éléments dans Shinken.

 

HOW TO

Importer des ordinateurs avec des noms spécifiques


Image Added
Dans le fichier active-directory-mapping.json

Modifiez le paramètre host.filter

Code Block
   "host.filter": "(&(objectClass=computer)(sAMAccountName=*SERVER_NAME*))",

Changez SERVER_NAME  par le nom de serveur vous voulez importer.

 

Importer des utilisateurs issus d'un ou plusieurs groupes

 Avec la source Active Directory, il est donc possible d'importer des utilisateurs de la base contacts_base spécifiée dans le fichier active-directory-connection.json mais on peut aussi les filtrer afin de n'importer que ceux qui sont dans un ou plusieurs groupes différents de l'annuaire LDAP.

Image Added

Dans le fichier active-directory-rules.json


Dans contact_group_filters, ajouter le Distinguished Name (DN) des différents groupes d'utilisateurs séparés par un pipe ("|")

 

Code Block
title/etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-rules.json
  "contacts_group_filter": "CN=shinken_admins,OU=utilisateurs,DC=shinkendom,DC=local | CN=shinken_users,OU=utilisateurs,DC=shinkendom,DC=local",


Filtrer et appliquer des modèles


Cette source inclut également d'autres paramètres qui permettent d'appliquer des modèles automatiquement suivant le type d'objets :

  • hosts_tag: chaque hôte chargé aura au moins le modèle défini en valeur
  • contacts_tag: chaque contact chargé aura au moins le modèle défini en valeur


Il est également possible de tagguer les hôtes sur leur OU (Organization Unit) en utilisant le paramètre hosts_tag_*

Par exemple, si vous voulez ajouter le tag exchange à tous les serveurs qui sont dans l'OU: OU=Email Collaboration Servers,OU=DataCenter Servers,DC=YOUR,dc=DOMAIN,dc=com

Utilisez le paramètre:

Code Block
"hosts_tag_exchange":  "OU=Email Collaboration Servers,OU=DataCenter Servers,DC=YOUR,dc=DOMAIN,dc=com"


Si vous voulez ajouter le tag enterprise à tous les objets ldap qui correspondent au string Enterprise dans leurs propriétés operatingSystem,

Utilisez le paramètre:

Code Block
"hosts_match_operatingSystem_enterprise":        "Enterprise

Importer des utilisateurs issus de plusieurs groupes

 

Avec la source Active Directory, il est possible d'importer des utilisateurs qui sont dans des groupes différents.

Image Removed

Dans le fichier active-directory-rules.json

Dans contact_group_filters, ajouter le Distinguished Name (DN) des différents groupes d'utilisateurs séparés par un pipe ("|")

 

Code Block
title/etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-rules.json
  "contacts_group_filter": "CN=shinken_admins,OU=utilisateurs,DC=shinkendom,DC=local | CN=shinken_users,OU=utilisateurs,DC=shinkendom,DC=local",

Tag hosts to add more properties before import

 

This source also includes other parameters that will allow you to automatically “tag” your servers based on your active directory information:

  • hosts_tag: each loaded hosts will have at least this tag

Tagging hosts based on their OU (Organization Unit) is possible. This is done with the hosts_tag_* parameters.

For example, if you want to add the exchange tag to all the servers which are below

the OU=Email Collaboration Servers,OU=DataCenter Servers,DC=YOUR,dc=DOMAIN,dc=com OU,

you can set this parameter:

hosts_tag_exchange  OU=Email Collaboration Servers,OU=DataCenter Servers,DC=YOUR,dc=DOMAIN,dc=com 

Setting up ldap object matching with the hosts_match_* parameters is also possible.

For example, if you want to add the enterprise tag to all the ldap object that match the string Enterprise in their operatingSystemproperty,

you only need to setup :

hosts_match_operatingSystem_enterprise        Enterprise 

 

 

Creation of your own sources

Having multiple sources can help you if you have a huge directory and want to have the control on what to import at any time. As an example, you have an OU containing Paris users and another OU containing Bordeaux users. At a given time, you want to import only Bordeaux users. If you create two sources, you can activate just the Bordeaux source and import its objects.

 

Tip

Every time you have to customize Shinken Sources, you have to do it in the /etc/shinken-user folder.

 

You will have to do the following to create your own source :

  • Create a module
  • Create a source
  • Configure the source-data
  • Configure the Synchronizer daemon to take the new module in consideration

Create a module

Code Block
languagebash
cd /etc/shinken/modules/
cp activ-dir-import.cfg activ-dir-import-Bordeaux.cfg
Image Removed

Edit the file activ-dir-import-Bordeaux.cfg

Delete the 4 lines beginning from

# Shinken Enterprise

to

 # End of Shinken Enterprise part

 

Modify 

Code Block
    module_name           active-dir-example

With 

Code Block
    module_name           active-dir-Bordeaux

Modify the following lines to point to the new source data (see below for the source data configuration)

Code Block
connection_configuration_file
rules_configuration_file
mapping_configuration_file

Example :

Code Block
    # Configuration file for your Active Directory connection (server, user, password, ...)
    connection_configuration_file   /etc/shinken-user/source-data/source-data-active-directory-Bordeaux/_configuration/active-directory-connection.json

    # Configuration file for your import rules (like OU=>template rules)
    rules_configuration_file       /etc/shinken-user/source-data/source-data-active-directory-Bordeaux/_configuration/active-directory-rules.json
    
	# Configuration file for your ldap fields mapping (like for openldap users)
    mapping_configuration_file     /etc/shinken-user/source-data/source-data-active-directory-Bordeaux/_configuration/active-directory-mapping.json

 

 

Create a source

 

Code Block
languagebash
cd /etc/shinken/sources/
cp active-dir-hosts.cfg active-dir-hosts-Bordeaux.cfg
 
Image Removed

Edit the file activ-dir-import-Bordeaux.cfg

Delete the 4 lines beginning from

# Shinken Enterprise

to

 # End of Shinken Enterprise part

Modify 

Code Block
    source_name			active-dir-example
	modules				active-dir-example

With 

Code Block
    source_name			active-dir-Bordeaux
    modules			    active-dir-Bordeaux

 

Configure the source data

To create your own import source, do the following :

Code Block
languagebash
cd /etc/shinken-user/source-data
cp -r source-data-active-directory-sample source-data-active-directory-Bordeaux
Tip
titleTip

Let's consider that the folder in which you will have your new Active Directory source is : /etc/shinken-user/source-data/source-data-active-directory-Bordeaux/
inside it, the folder _configuration contain all configuration file to customize the source behavior.

 

See above on how to configure the source data

 

Configure the Synchronizer Daemon

 
Image Removed

Edit the file /etc/shinken/synchronizers/synchronizer-master.cfg

At the end of the "sources" lien, add you new source.

 

Example :

 

Code Block
    sources               syncui,cfg-file-shinken,active-dir-example,sync-vmware,cfg-file-nagios,discovery,openldap-example,active-dir-Bordeaux

 

you can see your now source :

Image Removed

Apply contact templates to specific contact groups

During the import process a contact  template is applied on every contacts thanks to the "contacts_tag" property found in the active-directory-rules.json.

However, you have the possibility to apply contact templates to specific contact groups with the following properties (file active-directory-rules.json):

 

PropertyValueDescriptionAddFirst_template_(domain-admins)_to_contact_matching_[memberOf]CN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=comAdd the "domain-admins" contact template to every contacts matching the value "CN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=com" in its attribute "memberOf" first in list (before the contacts_tag template).AddLast_template_(users)_to_contact_matching_[memberOf]CN=Users,DC=YOUR,dc=DOMAIN,dc=comAdd the "users" contact template to every contacts matching the value "CN=Users,DC=YOUR,dc=DOMAIN,dc=com" in its attribute "memberOf" last in list (after the contacts_tag template).Force_template_(specific)_to_contact_matching_[memberOf]CN=SpecificUsers,DC=YOUR,dc=DOMAIN,dc=comAdd the "specific" contact template to every contacts matching the value "CN=SpecificUsers,DC=YOUR,dc=DOMAIN,dc=com" in its atribute "memberOf" all alone (the contacts_tag template will not be applied).

If you want to customize your Active Directory by adding a new property, for example called countryCode and to apply a template to it, you can do it like :

Code Block
"AddFirst_template_(domain-admins)_to_contact_matching_[countryCode]" : "33"

 

 

Tip
titleTip

Keep in mind that the group in which you want to apply specific contact templates must be part of the "contacts_group_filter" filter.

For example, let's consider you want to apply the contact templates to the groups listed in the table above.

You have to set "contacts_group_filter" like this :

"contacts_tag" : "CN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=com|CN=User,DC=YOUR,dc=DOMAIN,dc=com|CN=SpecificUsers,DC=YOUR,dc=DOMAIN,dc=com
"