Concept

Plusieurs modules d'authentification sont disponibles, permettant d'adapter la gestion des accès selon l'infrastructure : authentification locale, LDAP/Active Directory, etc. Le module à utiliser se configure au niveau du Synchronizer, et plusieurs modules peuvent être combinés.

Voici les différents modules présents dans Shinken : 



Paramètres communs à tous les modules d'authentification

module_display_name

Le paramètre "module_display_name" ou "{prefix}___module_display_name" ( exemple : synchronizer__module_authentication__ldap__module_display_name ) est un paramètre commun à tous les modules, il permet de configurer le nom d'affichage d'un module qui sera ensuite affiché sur les interfaces d'authentification.

Rendu sur la page d'authentification

Dans le cas des modules qui sont placés en "failover", le nom du module affiché est le nom du premier module qui était disponible lors de la demande d'affichage, ce n'est pas forcément celui qui sera utilisé pour essayer de se connecter.

Séquence d'authentification

 La séquence d'authentification est définie par le paramètre "synchronizer__authentication_modules_order", configuré dans le fichier de configuration du synchronizer ( voir la page : Définition du démon ( synchronizer-master.cfg )   ). Ce paramètre détermine l'ordre de sollicitation des modules d'authentification pour se connecter à l'interface du synchronizer, ainsi que les modules à utiliser en relais lorsque l'authentification échoue ou que le module précédent est indisponible.


synchronizer__authentication_modules_order			MON_MODULE_AUTHENTIFICATION_1 => MON_MODULE_AUTHENTIFICATION_2 => MON_MODULE_AUTHENTIFICATION_3

Composition de la séquence d'authentification

Il existe actuellement deux types de modules d'authentification sur Shinken :

  • Les modules BY_USER_PASSWORD ( Cfg_password, synchronizer-module-authentication-LDAP )
  • Les modules BY_USER_CODE ( synchronizer--module-authentication--by-mail )


La séquence d'authentification est composée d'un enchaînement d'un ou plusieurs modules du même type ou non, séparés par des flèches ( => ).

Chaque étape contient le nom d'un module à utiliser pour l'authentification, éventuellement suivi d'autres modules du même type séparés par le mot-clé <FAILOVER> : ces modules suivants sont utilisés si l'authentification échoue sur le module précédent.


Il n'y a pas de limite au nombre d'étapes d'authentification dans une séquence d'authentification, ni au nombre de <FAILOVER> au sein d'une étape d'authentification.

Séquence invalide : 

synchronizer__authentication_modules_order   			Cfg_password <FAILOVER> synchronizer--module-authentication--by-mail => synchronizer-module-authentication-LDAP



Le Cfg_password et le synchronizer--module-authentication--by-mail étant de type différent, la séquence d'authentification sera rejetée comme invalide au redémarrage du Synchronizer.

Exemples

Trois modules sans <FAILOVER>

Dans cet exemple, l'utilisateur doit :

  • Étape 1 : S'authentifier via LDAP ( synchronizer-module-authentication-LDAP ),
  • Étape 2 : puis via un mot de passe Shinken ( Cfg_password ),
  • Étape 3 : puis par e-mail ( synchronizer--module-authentication--by-mail ).

Chaque étape devant être validée pour passer à la suivante.


synchronizer-module-authentication-LDAP => Cfg_password => synchronizer--module-authentication--by-mail
Trois modules avec <FAILOVER>

Dans cet exemple, l'utilisateur doit :

  • Étape 1 : S'authentifier via LDAP ( synchronizer-module-authentication-LDAP ), avec bascule sur un autre LDAP ( synchronizer-module-authentication-LDAP-secours ) en cas d'échec,
  • Étape 2 : puis s'authentifier avec un compte Shinken ( Cfg_password ) ,
  • Étape 3 : puis s'authentifier par e-mail ( synchronizer--module-authentication--by-mail ), avec bascule sur un autre serveur mail ( synchronizer--module-authentication--by-mail-secours ) en cas d'échec.


synchronizer-module-authentication-LDAP <FAILOVER> synchronizer-module-authentication-LDAP-secours => Cfg_password => synchronizer--module-authentication--by-mail <FAILOVER> synchronizer--module-authentication--by-mail-secours
Deux modules avec plusieurs <FAILOVER>

Dans cet exemple, l'utilisateur doit :

  • Étape 1 : S'authentifier via LDAP ( synchronizer-module-authentication-LDAP ), avec bascule successive sur un Active-directory ( synchronizer-module-authentication-LDAP-secours-1 ), puis un serveur LDAP ( synchronizer-module-authentication-LDAP-secours-2 ), puis l'authentification Shinken ( Cfg_password ) en cas d'échec,
  • Étape 2 : puis s'authentifier par e-mail ( synchronizer--module-authentication--by-mail ), avec bascule sur un autre serveur mail ( synchronizer--module-authentication--by-mail-secours ) en cas d'échec.


synchronizer-module-authentication-LDAP <FAILOVER> synchronizer-module-authentication-LDAP-secours-1 <FAILOVER> synchronizer-module-authentication-LDAP-secours-2 <FAILOVER> Cfg_password => synchronizer--module-authentication--by-mail <FAILOVER> synchronizer--module-authentication--by-mail-secours

Exemple complet

Pour cet exemple, la séquence suivante sera utilisée afin de voir la corrélation entre la séquence dans le fichier de configuration et le rendu sur l'interface. 

synchronizer-module-authentication-LDAP => Cfg_password => synchronizer--module-authentication--by-mail
Étape 1
Étape 2
Étape 3
synchronizer-module-authentication-LDAP
 Cfg_password 
synchronizer--module-authentication--by-mail

Séquence d'authentification sur les API

Pour les API, la séquence d'authentification a un fonctionnement différent.

Les API concernées sont celles utilisant l'authentification par utilisateur ( username/password ) :


La séquence d'authentification est modifiée pour garder seulement les modules de type "BY_USER_PASSWORD" et tous les séparateurs seront remplacés par des <FAILOVER>.

Il est possible de désactiver les API inutilisées afin de limiter la surface d'attaque ( voir page DEPRECATED - Automatisation ( de la source vers la production ) et Supprimer des éléments ).

Exemple 

La séquence d'authentification suivante :


synchronizer-module-authentication-LDAP => Cfg_password => synchronizer--module-authentication--by-mail


Passera en : 


synchronizer-module-authentication-LDAP <FAILOVER> Cfg_password