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
- Inicie MongoDB sin autenticación
- Conéctese al servidor usando el shell MongoDB
- Crear el administrador de usuarios
- Habilite la autenticación en el archivo de configuración
mongod
- Conéctese y autentíquese como administrador de usuarios
- 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.