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 | ||
|---|---|---|
| ||
|
Personnaliser la source pré-installée
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) :
| Property | Value | Description |
|---|---|---|
| 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. |
| mapping_configuration_file | /etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-mapping.json | Règles de mapping |
| rules_configuration_file | /etc/shinken-user/source-data/source-data-active-directory-sample/_configuration/active-directory-rules.json | Règles de configuration |
| Modifier Veuillez donc tout d'abord modifier le fichier active-directory-connection.json : |
| Propriété | Défaut | Description |
|---|---|---|
| url | ldap://YOUR-DC-FQDN/ | Adresse de votre serveur Active Directory |
| ldap_protocol | 3 | Version du protocole LDAP (par défaut à 3 si pas spécifié) |
| base | dc=YOUR,dc=DOMAIN,dc=com | OU (Organisation Unit) base pour la découverte de vos objets |
| hosts_base | OU=DataCenter Servers,dc=YOUR,dc=DOMAIN,dc=com | OU (Organisation Unit) base pour la découverte de vos hôtes |
| hostgroups_base | OU=computers,dc=shinkendom,dc=local | OU (Organisation Unit) base pour la découverte de vos groupes d'hôtes |
| contacts_base | dc=YOUR,dc=DOMAIN,dc=com | OU (Organisation Unit) base pour la découverte de vos contacts |
| username | SHINKEN@YOURDOMAIN.com | Utilisateur utilisé pour la connexion au serveur AD |
| password | PASSWORD | Mot de passe utilisé pour la connexion au serveur AD |
| Info |
|---|
| ||
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 | ||||
|---|---|---|---|---|
| ||||
| Code Block | ||||
| ||||
{
"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 | ||
|---|---|---|
| ||
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.
| Warning |
|---|
A part si vous savez exactement ce que vous faîtes, nous vous conseillons de ne pas modifier ce fichier. |
. 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)
Si besoin (facultatif), modifiez Modifier le fichier active-directory-mapping.json
| Propriété Shinken | Propriété Active Directory | Description |
|---|---|---|
| host.name | name | La 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.dNsHost | dNSHostName | La 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.operatingSystem | operatingSystem | |
| host.operatingSystemServicePack | operatingSystemServicePack | |
| host.distinguishedName | distinguishedName | |
| host.filter | (objectClass=computer) | Cette propriété permet le filtre des ordinateurs / hôtes seulement |
| contact.name | name | La propriété Active Directory name, représentant le nom de l'objet AD, sera importé et utilisé pour le nom du contact Shinken |
| contact.mail | La propriété Active Directory mail, représentant l'email de l'objet AD, sera importé et utilisé pour l'email du contact Shinken | |
| contact.displayName | name | La 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.categoryFilter | Person | |
| contact.member | member | |
| contact.telephoneNumber | telephoneNumber | La 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.mobile | mobile | |
| contact.co | co | |
| contact.l | l | |
| contact.company | company | contact.filter |
| de téléphone du contact Shinken | ||
| contact.mobile | mobile | |
| contact.co | co | |
| contact.l | l | |
| contact.company | company | |
| contact.filter | (&(objectCategory=person)(objectClass=user)) | Cette propriété permet le filtre des contacts seulement |
| hostgroup.filter | |
| Info | ||
|---|---|---|
| ||
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=) |
) |
| Code Block | ||
|---|---|---|
| ||
# IMPORTANT: Do not edit this file. # To have your own mapping, copy it under the /etc/shinken-users/source-data/YOUR_SOURCE_FOLDER/_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 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", "hostcontact.dNSHostNamemail": "dNSHostNamemail", "hostcontact.operatingSystemdisplayName": "operatingSystemname", "hostcontact.operatingSystemServicePackcategoryFilter":"operatingSystemServicePackPerson", "hostcontact.distinguishedNamemember": "distinguishedNamemember", "hostcontact.filtertelephoneNumber":"telephoneNumber", "(objectClass=computer) "contact.mobile":"mobile", # NowCo: contactfor propertiescountry "contact.nameco": "nameco", # l: "contact.mail": "mail",for city "contact.displayNamel":"namel", "contact.categoryFiltercompany":"Personcompany", "contact.memberfilter": "member"(&(objectCategory=person)(objectClass=user))", # By default hostgroup are not "contact.telephoneNumber":"telephoneNumber", "contact.mobile":"mobile", # Co: for countryrequested. Setup a filter in your custom file to enabled it "contacthostgroup.cofilter":"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
}
|
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é.
| 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 | ||
|---|---|---|
| ||
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 :
|
| Property | Default | Description |
|---|---|---|
| hosts_tag | your-host-template | Le modèle d'hôte your-host-template sera appliqué à tous les hôtes découverts dans l'annuaire Active Directory |
| hosts_tag_monmodele | OU=Database Servers,OU=DataCenter Servers,DC=YOUR,dc=DOMAIN,dc=com | Le 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 1 | Ajouter 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 ). |
| title | Tip |
|---|
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 :
| Property | Default | Description | ||||||
|---|---|---|---|---|---|---|---|---|
| hosts_tag | your-host-template | Le modèle d'hôte your-host-template sera appliqué à tous les hôtes découverts dans l'annuaire Active Directory|||||||
| contacts_tag | generic-contact | Le modèle de contact generic-contact sera appliqué à tous les contacts découverts dans l'annuaire Active Directory | ||||||
| contacts_group_filter | CN=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_montemplate | OU=Database Servers,OU=DataCenter ServersDOMAIN,dc=com | CN=OTHERGROUPS,OU=Groups,OU=Users Groups,DC=YOUR,dc=DOMAIN,dc=com | Le 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 | 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=com | Ajouter 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=com | Ajouter 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=com | Ajouter 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 | ||||
|---|---|---|---|---|
| ||||
{{ "hosts_tag": "windows", "contacts_tag": "generic-contact", "contactshosts_group_filtertag": "CN=paris_shinken_users,OU=utilisateurs,DC=shinkendom,DC=local | CN=bordeaux_shinken_users,OU=utilisateurs,DC=shinkendom,DC=localwindows", "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_windowscontacts_tag": "windowsgeneric-contact", "hostscontacts_matchgroup_operatingSystem_windows2008filter": "windows*.*2008(?!.*.(?:r2))CN=paris_shinken_users,OU=utilisateurs,DC=shinkendom,DC=local | CN=bordeaux_shinken_users,OU=utilisateurs,DC=shinkendom,DC=local", "hostsAddFirst_match_operatingSystem_windows2008r2": "windows*.*2008*.*r2", "hosts_match_operatingSystem_windows2003": "windows*.*2003template_(domain-admins)_to_contact_matching_[memberOf]": "CN=Domain Admins,CN=Users,DC=YOUR,dc=DOMAIN,dc=com", "hosts_match_operatingSystem_windows2012": "windows*.*2012(?!.*.(?:r2))AddLast_template_(users)_to_contact_matching_[memberOf]": "CN=Users,DC=YOUR,dc=DOMAIN,dc=com", "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. |
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_filter, AddFirst_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
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
| Code Block |
|---|
"host.filter": "(&(objectClass=computer)(sAMAccountName=*SERVER_NAME*))", |
Changez SERVER_NAME par le nom de serveur vous voulez importer.
Importer des utilisateurs issus
ded'un ou plusieurs groupes
Avec Avec la source Active Directory, il est possible d'importer des utilisateurs qui sont dans des groupes différentsdonc 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.
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 | ||
|---|---|---|
| ||
"contacts_group_filter": "CN=shinken_admins,OU=utilisateurs,DC=shinkendom,DC=local | CN=shinken_users,OU=utilisateurs,DC=shinkendom,DC=local", |
Filtrer et
tagguerappliquer des modèles
Cette source inclut également d'autres paramètres qui permettent de tagguer les serveurs d'appliquer des modèles automatiquement suivant le type d'objets :
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:
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:
| ||||||

