Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Scroll Ignore
scroll-viewporttrue
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmlfalse
Panel
titleSommaire

Table of Contents
stylenone

Concept

L'authentification par mot de passe dans MongoDB assure que seul l'utilisateur de Shinken peut accéder aux données de la base. L'activation de l'authentification entraîne nécessairement une interruption de service.

Pour minimiser cette interruption, il est recommandé de modifier les fichiers de configuration de Shinken avant d'activer le chiffrement. Une fois le chiffrement activé, redémarrer l'Arbiter.

Activer l'authentification par mot de passe dans MongoDB

Pour activer l'authentification dans MongoDB, il faut ajouter le champ suivant dans le fichier de configuration /etc/mongod.conf

Code Block
languagejs
themeConfluence
security:
 authorization: enabled

Exemple de fichier de configuration complet :

Code Block
languagejs
themeConfluence
# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true


# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid


# network interfaces
# NOTE: when go as a replicat member (cluster), change the 27017 to 27018 according to configuration
#       and comment the bindIp parameter
net:
  port: 27017
  unixDomainSocket:
    enabled: false
  bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.




storage:
    engine: wiredTiger


security:
 authorization: enabled

Pour appliquer l'activation de l'authentification, il est nécessaire de redémarrer le démon de la base de données : 

Code Block
languagetext
themeEmacs
systemctl restart mongod

Tant qu'aucun utilisateur n'a été créé, MongoDB permet une connexion locale via l'interface localhost pour créer un utilisateur ayant les privilèges nécessaires pour en créer d'autres.

Créer l'utilisateur Shinken

Il faut se connecter au shell MongoDB sur le serveur où se trouve la base ( il faut être en localhost lors de cette connexion )

Lancer le shell MongoDB :

Code Block
languagetext
themeEmacs
mongo

Depuis le shell MongoDB, exécutez les deux commandes suivantes : 

Code Block
languagetext
themeEmacs
use admin
Code Block
languagetext
themeEmacs
db.createUser(
 { user : 'YOUR_USER',
   pwd : 'YOUR_PASSWORD',
   roles : [ { role : 'root', db : 'admin' } ]
 }
)

Adaptez la commande en utilisant le nom de votre utilisateur et votre mot de passe.

Ne modifiez pas les champs role et db. En effet, pour que Shinken fonctionne correctement, l'utilisateur doit avoir des privilèges avancés sur l'ensemble des bases de données et impose ces deux paramètres.

À partir de maintenant, l'authentification par mot de passe est activée. Seul l'utilisateur nouvellement créé peut se connecter à la base de données.

Se connecter à MongoDB avec l'utilisateur crée

Maintenant que l'authentification est activée, il est nécessaire de s'identifier dans le shell avant de pouvoir exécuter des commandes dans MongoDB.

Il faut préciser les identifiants dans la commande pour lancer le Shell MongoDB : 

Code Block
languagetext
themeEmacs
 mongo --username YOUR_USER --password YOUR_PASSWORD--authenticationDatabase admin
Tip

Si vous laissez le champ --password vide, un prompt vous demandera le mot de passe, ce qui évite d'afficher le mot de passe en clair dans la commande.

Changer le mot de passe d'un utilisateur

Pour changer le mot de passe de l'utilisateur créé, il faut se connecter au shell MongoDB avec les identifiants actuels, puis exécutez les deux commandes suivantes :

Code Block
languagetext
themeEmacs
use admin
Code Block
languagetext
themeEmacs
db.updateUser('YOUR_USER', {
  pwd: 'NEW_PASSWORD',
  roles: [{ role: "root", db: "admin" }]
})

Déclarer l'utilisateur et le mot de passe dans Shinken

Dans les fichiers de configuration

Il est désormais nécessaire de déclarer l'utilisateur et le mot de passe dans Shinken.

Tous les composants de Shinken qui se connectent à MongoDB doivent avoir leur configuration modifiée sur le serveur de l'Arbiter.

Voici la liste des éléments qui se connectent à MongoDB et dont la configuration doit être adaptée :

Ensuite, il est nécessaire de redémarrer l'Arbiter pour que la nouvelle configuration soit prise en compte.

Dans les commandes

Une fois l'authentification par mot de passe activée dans la base de données, il est nécessaire de fournir les identifiants aux commandes Shinken qui se connectent à la base. Pour vérifier si une commande nécessite une authentification à MongoDB, utilisez l'option --help.

Les paramètres pour s'identifier sont : --mongo-username et --mongo-password

Avant d'exécuter tout traitement, les commandes Shinken se connectant à MongoDB vérifient d'abord qu'elles disposent des privilèges nécessaires, garantissant ainsi l'intégrité et la cohérence de Shinken

...

Si l'option --mongo-password est utilisée, le mot de passe risque d'être visible dans l'historique des commandes ( via la commande history ).

Pour éviter d'exposer le mot de passe, il est possible d'utiliser cette commande uniquement avec l'option --mongo-username. Un prompt interactif apparaîtra alors pour demander le mot de passe.

...