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



 

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 l'astuce ci-dessous :

 

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.jsonConnexion LDAP
Information de connexion à l'annuaire LDAP
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.

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 modèles.

   


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 :

{
  "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"
}


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"


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

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

 

 Modifier le fichier active-directory-mapping.json



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.operatingSystemoperatingSystem 
host.operatingSystemServicePackoperatingSystemServicePack 
host.distinguishedNamedistinguishedName 
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 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 
 


# 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, en spécifiant, si besoin, les OU ou les groupes de contacts ciblés.

Modifier le fichier active-directory-rules.json


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
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

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 Directory
   
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 :

{
  "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"}


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  


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

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

 

HOW TO

Importer des ordinateurs avec des noms spécifiques


Dans le fichier active-directory-mapping.json

Modifiez le paramètre host.filter

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

Changez SERVER_NAME  par le nom de serveur vous voulez importer.

 

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.

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 ("|")

 

  "contacts_group_filter": "CN=shinken_admins,OU=utilisateurs,DC=shinkendom,DC=local | CN=shinken_users,OU=utilisateurs,DC=shinkendom,DC=local",


Filtrer et tagguer


Cette source inclut également d'autres paramètres qui permettent de tagguer les serveurs :

  • hosts_tag: chaque hôte chargé aura au moins ce tag
  • contacts_tag: chaque contact chargé aura au moins ce tag

Les contacts chargés peuvent facilement être filtrés avec le paramètre contacts_filters

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:

 

"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:

 

"hosts_match_operatingSystem_enterprise":        "Enterprise"