Im essayant d'en savoir plus sur mongo et comment le sécuriser. J'arrive à le faire fonctionner en utilisant la ligne de commande mais quand j'essaie d'utiliser un fichier conf, j'obtiens des erreurs sur l'authentification.
J'ai créé un utilisateur administrateur comme:
use admin
var admin = {
user:"admin",
pwd:"123456",
roles:[
{
role: "userAdminAnyDatabase",
db:"admin"
}
]
}
db.createUser(admin)
Démarrer mongod mongod --auth
Et s'y connecter en utilisant mongo 127.0.0.1:27017 --authenticationDatabase admin -u admin -p
Fonctionne.
Je voudrais passer de la ligne de commande à un fichier conf. Pour cela, je crée le fichier mongod.conf
Suivant:
mongod.conf
systemLog:
destination: file
path: /Users/me/Web/blog/setup/logs/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
port: 27017
bindIp: 127.0.0.1
security:
authorization: enabled
J'exécute le démon en invoquant mongod -f mongod.conf
. J'essaie de m'authentifier dans mongo en invoquant la commande précédente qui fonctionnait auparavant mais cette fois cela ne fonctionne pas:
mongo 127.0.0.1:27017 --authenticationDatabase admin -u admin -p
MongoDB Shell version: 3.2.5
Enter password:
connecting to: 127.0.0.1:27017/test
2018-05-11T08:50:53.908+0300 E QUERY [thread1] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/Shell/db.js:1441:20
@(auth):6:1
@(auth):1:2
exception: login failed
Suis-je en train de taper quelque chose de mal? Je ne vois pas quel est le problème ici. Quelque chose manque dans le fichier conf ou des paramètres incorrects invoquant mongo
?
Selon votre déclaration de journal, il semble que vous commettez une erreur dans votre déclaration d'authentification, comme dans votre déclaration
mongo 127.0.0.1:27017 --authenticationDatabase admin -u admin -p
Selon la documentation de MongoDB BOL ici Avec le contrôle d'accès activé, assurez-vous d'avoir un utilisateur avec le rôle serAdmin ou serAdminAnyDatabase dans la base de données d'administration. Cet utilisateur peut administrer des utilisateurs et des rôles tels que: créer des utilisateurs, accorder ou révoquer des rôles aux utilisateurs et créer ou modifier des rôles douaniers.
Connectez-vous et authentifiez-vous en tant qu'administrateur utilisateur
En utilisant mongo Shell, vous pouvez:
Connectez-vous avec l'authentification en transmettant les informations d'identification de l'utilisateur, ou
Connectez-vous d'abord sans authentification, puis lancez db.auth ()
méthode d'authentification.
Par exemple, ce qui suit crée l'utilisateur myUserAdmin
dans la base de données admin
:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Pour s'authentifier lors de la connexion
Démarrez un mongo Shell avec les options de ligne de commande -u, -p et --authenticationDatabase:
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
Pour s'authentifier après la connexion
Connectez le mongo Shell au mongod :
mongo --port 27017
Basculez vers la base de données d'authentification (dans ce cas, admin) et utilisez la méthode db.auth(<username>, <pwd>)
pour vous authentifier:
use admin
db.auth("myUserAdmin", "abc123" )
Comme je peux le voir dans votre mention ci-dessous, mongod.conf
Fichier le authorization : enable
. Cela signifie que votre authentification est activée. Il n'y a donc aucun problème dans votre fichier mongod.conf
.
systemLog:
destination: file
path: /Users/me/Web/blog/setup/logs/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
port: 27017
bindIp: 127.0.0.1
security:
authorization: enabled