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 de la WebUI, 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 : webui__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 ce connecter.

Séquence d'authentification

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


broker__module_webui__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, webui-module-authentication-LDAP )
  • Les modules BY_USER_CODE ( webui--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 : 


broker__module_webui__authentication_modules_order                 Cfg_password <FAILOVER> webui--module-authentication--by-mail => webui-module-authentication-LDAP


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

Exemples

Trois modules sans <FAILOVER>

Dans cet exemple, l'utilisateur doit :

  • Étape 1 : S'authentifier via LDAP ( webui-module-authentication-LDAP ),
  • Étape 2 : puis s'authentifier avec un compte Shinken ( Cfg_password ),
  • Étape 3 : puis s'authentifier par e-mail ( webui--module-authentication--by-mail ).

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


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

Dans cet exemple, l'utilisateur doit :

  • Étape 1 : S'authentifier via LDAP ( webui-module-authentication-LDAP ), avec bascule sur un autre LDAP ( webui-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 ( webui--module-authentication--by-mail ), avec bascule sur un autre serveur mail ( webui--module-authentication--by-mail-secours ) en cas d'échec.


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

Dans cet exemple, l'utilisateur doit :

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


webui-module-authentication-LDAP <FAILOVER> webui-module-authentication-LDAP-secours-1 <FAILOVER> webui-module-authentication-LDAP-secours-2 <FAILOVER> Cfg_password => webui--module-authentication--by-mail <FAILOVER> webui--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. 

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

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 les pages : Configuration du module webui--module-report-handler et Configuration du module webui-module-service-weather ).

Exemple 

La séquence d'authentification suivante :


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


Passera en : 


webui-module-authentication-LDAP <FAILOVER> Cfg_password