| Scroll Ignore | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||
|
Concept
L'authentification par mot de passe à dans MongoDB garantit assure que seul l'utilisateur de Shinken peut accéder aux données dans la basede 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 rajoute faut ajouter le champ suivant dans le fichier de configuration /etc/mongod.conf conf
| Code Block | ||||
|---|---|---|---|---|
| ||||
security: authorization: enabled |
Exemple de fichier de configuration complet :
| Code Block | ||||
|---|---|---|---|---|
| ||||
# 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 prendre en compte appliquer l'activation de l'authentification, il faut est nécessaire de redémarrer le démon de la base de données :
| Code Block | ||||
|---|---|---|---|---|
| ||||
systemctl restart mongod |
Tant qu'aucun utilisateur n'a été crée, la base dispose d'une exception de connexion en créé, MongoDB permet une connexion locale via l'interface localhost pour créer un utilisateur ayant mes les privilèges de nécessaires pour en créer d'autres utilisateurs.
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 | ||||
|---|---|---|---|---|
| ||||
mongo |
Depuis le shell MongoDB lancer , exécutez les deux commandes suivantes :
| Code Block | ||||
|---|---|---|---|---|
| ||||
use admin |
| Code Block | ||||
|---|---|---|---|---|
| ||||
db.createUser(
{ user : 'YOUR_USER',
pwd : 'YOUR_PASSWORD',
roles : [ { role : 'root', db : 'admin' } ]
}
) |
Adapter Adaptez la commande au en utilisant le nom de votre utilisateur et à votre mot de passe.
Il ne faut pas changer le champ Ne modifiez pas les champs role et db. En effet, pour que Shinken fonctionne correctement, il a besoin de privilèg avancé 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, seul l'authentification par mot de passe est activée. Seul l'utilisateur qui vient d'être nouvellement créé peut se connecter à la base de données.
Se connecter à MongoDB avec l'utilisateur crée
Maintenant que l'utilisateur a été crééauthentification est activée, il faut est nécessaire de s'identifier dans le Shell shell avant de pouvoir exécuter des commandes dans MongoDB.
Pour ce faire, il est possible de Il faut préciser les identifiants dans la commande pour lancer le Shell directement avec les identifiants MongoDB :
| Code Block | ||||
|---|---|---|---|---|
| ||||
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 Shinkencréé, il faut se connecter au shell MongoDB avec les identifiants au Shell MongoDB puis lancer actuels, puis exécutez les deux commandes suivantes :
| Code Block | ||||
|---|---|---|---|---|
| ||||
use admin |
| Code Block | ||||
|---|---|---|---|---|
| ||||
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 faut est désormais nécessaire de déclarer l'utilisateur et le mot de passe dans Shinken.
L'ensemble des Tous les composants de Shinken qui se connectent à MongoDB et qui doivent avoir leur configuration modifiée sur le serveur de l'Arbiter : Arbiter.
Voici la liste des éléments qui se connectent à MongoDB et dont la configuration doit être adaptée :
- Le démon Synchronizer : ( voir la page Paramètres globaux ( synchronizer.cfg ) )
- Le module event-manager-reader : ( voir la page Module event-manager-reader )
- Le module event-manager-writer : ( voir la page FOR_MERGE - 005.0 - SEF-11716 - Module event-manager-writer )
- Le module Graphite-Perfdata : ( voir la page Module Graphite-Perfdata )
- Le module MongoDB : ( voir la page Module MongoDB )
- Le module MongodbRetention : ( voir la page Module MongodbRetention ( Rétention en base de données centralisée par royaume ) )
- Le module SLA : ( voir la page Module SLA )
- Le module livedata-module-sla-provider ( voir la page Le livedata-module-sla-provider )
- Le collecteur de type discovery-import ( voir la page Collecteur de type discovery-import ( Scan NMAP ) )
- Dans le cas de l'utilisation de l'outil tier Grafana, il faut aussi modifier le fichier de configuration /opt/graphite/conf/mongodb.conf ( voir la page Grafana - v8.3.2 )
Ensuite, il est nécessaire de redémarrer l'Arbiter pour que la nouvelle configuration soit prise en compte.
Dans les commandes
Une fois que l'authentification par mot de passe est activée dans la base de données, il faut passer est nécessaire de fournir les identifiants aux commandes Shinken qui se connectent à la base. Pour vérifier si une commande nécessite de s'authentifier une authentification à MongoDB, faire utilisez l'option --help.
Les paramètres à utiliser sont pour s'identifier sont : --mongo-username username et ---mongo–password. Les commandes qui doivent se connecter à MongoDB commencent qu'elles onts les privlièges suffisant pour fonctionner avant de commencer leur action pour s'assurer de ne pas créer d'inconsistance dans Shinken.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
| Tipwarning |
|---|
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. Pour automatiser les commandes dans un script, il est possible de rediriger le contenu d'un fichier contenant le mot de passe ( en utilisant cat par exemple) : --mongo-password $(cat my_file). |