El siguiente procedimiento configura SCRAM para la autenticación del cliente en un sistema independiente. mongod instancia.
Para utilizar la autenticación SCRAM para Sets de réplicas o clústeres fragmentados, consulta Implementar Set de réplicas autogestionado con autenticación mediante archivo de claves.
Importante
No puede usar tanto la autenticación SCRAM como otro tipo de autenticación para el mismo usuario.
Procedimiento
Inicie MongoDB sin control de acceso
Inicie una instancia mongod autónoma sin control de acceso.
Abre un terminal y ejecuta el siguiente comando como el usuario mongod:
mongod --port 27017 --dbpath /var/lib/mongodb
La instanciamongod en este tutorial utiliza port 27017 y el directorio de datos /var/lib/mongodb.
El tutorial asume que el directorio /var/lib/mongodb existe y es el dbPath por defecto. Puede especificarse un directorio de datos diferente o un puerto según sea necesario.
Tip
Cuando mongod se inicia, crea algunos archivos del sistema en el directorio /var/lib/mongodb. Para asegurarse de que los archivos del sistema tengan la propiedad correcta, se debe seguir este tutorial como el usuario mongod. Si inicia mongod como el usuario root, tendrá que actualizar la propiedad de los archivos más tarde.
Cree el usuario administrador
Importante
Excepción de Localhost
Se puede crear el administrador de usuario antes o después de activar el control de acceso. Si se habilita el control de acceso antes de crear cualquier usuario, MongoDB proporciona una excepción localhost que permite crear un administrador de usuarios en la base de datos admin. Una vez creado, se debe autenticar como administrador de usuarios para crear usuarios adicionales.
Usando mongosh:
cambie a la base de datos
adminañadir al usuario
myUserAdmincon los roles deuserAdminAnyDatabaseyreadWriteAnyDatabase":
use admin db.createUser( { user: "myUserAdmin", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] } )
Tip
El método passwordPrompt() solicita introducir la contraseña. También se puede especificar la contraseña directamente como un string. Recomendamos utilizar el método passwordPrompt() para evitar que la contraseña sea visible en la pantalla y se filtre potencialmente al historial del shell.
El rol de userAdminAnyDatabase permite a este usuario:
crea los usuarios
conceder o revocar roles a los usuarios
crear o modificar roles personalizados
Se puede asignar al usuario roles integrados adicionales o roles definidos por el usuario según sea necesario.
La base de datos donde se crea el usuario, en este ejemplo admin, es la base de datos de autenticación del usuario. Aunque el usuario necesita autenticarse en esta base de datos, el usuario puede tener roles en otras bases de datos. La base de datos de autenticación del usuario no limita los privilegios del usuario.
Reinicie la instancia de MongoDB con control de acceso
Apaga la mongod instancia. Utilizando mongosh, utiliza el siguiente comando:
db.adminCommand( { shutdown: 1 } )
Salir mongosh.
Inicie el mongod con el control de acceso activado.
Si se inicia el
mongoddesde la línea de comandos, agregar la opción de línea de comandos--auth:mongod --auth --port 27017 --dbpath /var/lib/mongodb Si se inicia el
mongodutilizando un archivo de configuración, agregar la configuración del archivo de configuraciónsecurity.authorization:security: authorization: enabled
Los clientes que se conecten a esta instancia ahora deben autenticarse y solo pueden realizar acciones según lo determinen los roles asignados.
Importante
Excepción de Localhost
Puede crear usuarios antes o después de activar el control de acceso. Si habilita el control de acceso antes de crear cualquier usuario, MongoDB proporciona una excepción localhost que le permite crear un administrador de usuarios en la base de datos admin. Una vez creado, debe autenticarse como administrador de usuarios para crear usuarios adicionales.
Conéctese y autentíquese como el administrador de usuarios
Usando mongosh, puedes:
Comienza mongosh con las opciones de línea de comandos -u
<username>, -p y --authenticationDatabase <database>:
mongosh --port 27017 --authenticationDatabase \ "admin" -u "myUserAdmin" -p
Se debe ingresar la contraseña cuando se pida.
Utilizando mongosh, se debe realizar la implementación de la base de datos:
mongosh --port 27017
En mongosh, cambia a la base de datos de autenticación (en este caso, admin) y utiliza el método db.auth(<username>, <pwd>) para autenticarte:
use admin db.auth("myUserAdmin", passwordPrompt()) // or cleartext password
Tip
El método passwordPrompt() solicita introducir la contraseña. También se puede especificar la contraseña directamente como un string. Recomendamos utilizar el método passwordPrompt() para evitar que la contraseña sea visible en la pantalla y se filtre potencialmente al historial del shell.
Introduzca la contraseña cuando se lo pidan.
Próximos pasos
Para utilizar la autenticación SCRAM para Sets de réplicas o clústeres fragmentados, consulta Implementar Set de réplicas autogestionado con autenticación mediante archivo de claves.