Asegure MongoDB con nombre de usuario y contraseña

Tahseen Tauseef 20 junio 2023
Asegure MongoDB con nombre de usuario y contraseña

Este artículo de MongoDB le enseñará cómo configurar correctamente la función de seguridad más fundamental: asegurar MongoDB con un nombre de usuario y contraseña mediante la creación de un usuario de autenticación mientras accede de forma remota a MongoDB.

Como sabe, MongoDB se describe como una base de datos NoSQL y no sigue ninguna estructura de base de datos relacional; en cambio, almacena datos en documentos JSON.

Cuando instala MongoDB, la seguridad de la conexión remota de MongoDB no tiene ninguna autenticación habilitada, lo que significa que cualquier persona con su IP de HOST puede acceder rápidamente a sus servicios de MongoDB y realizar operaciones CRUD sin ninguna autenticación de MongoDB, que no es una forma segura de integrar el mongod base de datos a nivel mundial.

Además, ninguna autenticación significa invitar a todos a ingresar a sus bases de datos, confiscar todo y potencialmente rescatarlo por sus datos.

Este artículo de MongoDB cubrirá cómo asegurar la autenticación de MongoDB para que solo el usuario con credenciales de autenticación de MongoDB pueda acceder a las bases de datos.

Los temas tratados en este artículo de MongoDB son:

  • Habilitación de la autenticación de seguridad en MongoDB

    1. Inicie MongoDB sin autenticación
    2. Conéctese al servidor usando el shell MongoDB
    3. Crear el administrador de usuarios
    4. Habilite la autenticación en el archivo de configuración mongod
    5. Conéctese y autentíquese como administrador de usuarios
    6. Crear usuarios adicionales

Habilitar la autenticación de seguridad en MongoDB

Este artículo de MongoDB solo se aplica a los servidores MongoDB autogestionados. Todos los proveedores de MongoDB as a Service ya permiten la autenticación de forma preventiva.

Iniciar MongoDB sin autenticación

Abra un shell y ejecute el cliente MongoDB. Eso es fácil ya que este es el comportamiento predeterminado para MongoDB.

$ mongo

Conéctese al servidor utilizando MongoDB Shell

$ mongo mongodb://<host>:<port>

Es probable que el número de puerto sea 27017, pero siempre puede cambiarlo por uno diferente para mayor seguridad.

Crear el administrador de usuarios

Cambiar a la base de datos de administración:

> use admin

Deberá crear un usuario con el rol userAdminAnyDatabase, que le permite crear otros usuarios en cualquier base de datos existente. El siguiente ejemplo creará el usuario admin123 con la contraseña pass123.

> db.createUser(
  {
    user: "admin123",
    pwd: "pass123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

Luego desconéctese del shell mongo usando Ctrl+D.

Habilitar la autenticación en el archivo de configuración mongod

Edite mongod.conf con su editor preferido y habilite autorización.

$ sudo vi /etc/mongod.conf

Abra /etc/mongod.conf con cualquier editor de código y busque las siguientes líneas.

security:
    authorization: "disabled"

En la sección seguridad, elimine cualquier #, cambie autorización a habilitado o agréguelo si falta. Debe tener un aspecto como este:

security:
  authorization: "enabled"

Si no puede encontrar mongod.conf o en su lugar se llama mongodb.conf, está utilizando una versión obsoleta y rota de MongoDB.

En este caso, probablemente deba considerar actualizar a una versión más reciente de MongoDB. Pero, si no te importa, haz esto:

$ sudo vi /etc/mongodb.conf

Busque auth, elimine # y asegúrese de que esté configurado en true. Debe tener un aspecto como este:

auth = true

Después de cambiar deshabilitado a habilitado, deberá guardar el archivo y reiniciar mongod.

$ sudo service mongodb restart

Todos los clientes que se conecten a este servidor deberán autenticarse como usuarios válidos y solo podrán realizar acciones según lo determinen sus roles asignados.

Conectarse y autenticarse como administrador de usuarios

$ mongo mongodb://<host>:<port>> db.auth("admin123", "pass123")
1

El usuario también puede conectarse y autenticarse en un solo paso con mongo mongodb://superadmin:thepianohasbeendrinking@<host>:<port>. Aún así, no se recomienda esta opción porque dejará sus credenciales visibles en el historial de su terminal, que cualquier programa en su computadora puede leer.

Crear usuarios adicionales

La siguiente operación agrega un usuario admin456 a la base de datos de prueba que tiene el rol readWrite en la base de datos de prueba.

> use test
> db.createUser(
  {
    user: "admin456",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" } ]
  }
)

Presione Enter, luego mongo responderá con Usuario agregado con éxito: …. Luego escriba salir o use CTRL+C.

Artículo relacionado - MongoDB Authentication