Docs Menu
Docs Home
/ /

Utilice SCRAM para autenticar a los clientes en implementaciones autogestionadas

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.

1

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.

2

Abra una nueva terminal y conéctese al clúster con mongosh:

mongosh --port 27017

Si se conecta a una implementación diferente, especifique opciones adicionales de línea de comandos, como --host, según sea necesario para conectarse.

3

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:

  1. cambie a la base de datos admin

  2. añadir al usuario myUserAdmin con los roles de userAdminAnyDatabase y readWriteAnyDatabase ":

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.

4

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 mongod desde 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 mongod utilizando un archivo de configuración, agregar la configuración del archivo de configuración security.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.

5

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.

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.

Volver

SCRAM

En esta página