Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Actualización del set de réplicas autogestionado a autenticación con archivo de claves

Aplicar el control de acceso sobre un sistema existente set de réplicas requiere configuración:

  • La seguridad entre los miembros del Set de réplicas mediante Autenticación Interna, y

  • Seguridad entre los clientes que se conectan y el set de réplicas mediante Controles de acceso de usuarios.

Para este tutorial, cada nodo del set de réplicas utiliza el mismo mecanismo de autenticación interna y la misma configuración.

La aplicación de la autenticación interna también refuerza el control de acceso de los usuarios. Para conectarse al conjunto de réplicas, los clientes como mongosh necesitas utilizar una cuenta de usuario. Mira Usuarios.

Si Cloud Manager u Ops Manager administra su implementación, consulte el manual de Cloud Manager o el manual de Ops Manager para aplicar el control de acceso.

Importante

Para evitar actualizaciones de configuración debido a cambios en las direcciones IP, utilice nombres de host DNS en lugar de direcciones IP. Es particularmente importante usar un nombre de host DNS en lugar de una dirección IP al configurar miembros de set de réplicas o miembros de clústeres particionados.

Utiliza nombres de host en lugar de direcciones IP para configurar clústeres en un horizonte de red dividido. A partir de MongoDB 5.0, los nodos que solo están configurados con una dirección IP no pasan la validación de inicio y no se inician.

Los binarios de MongoDB, mongod y mongos, se enlazan a localhost por defecto.

Este tutorial utiliza los programas mongod. Los usuarios de Windows deben usar el programa mongod.exe en su lugar.

Los archivos de claves son medidas de seguridad mínimas y son ideales para entornos de prueba o desarrollo. Para entornos de producción, recomendamos usar certificados X..509

Este tutorial cubre la creación del número mínimo de usuarios administrativos únicamente en la base de datos admin. Para la autenticación de usuario, el tutorial utiliza el mecanismo de autenticación SCRAM por defecto. Los mecanismos de seguridad de desafío-respuesta son más adecuados para entornos de prueba o desarrollo. Para entornos de producción, recomendamos usar certificados X.509 o Autenticación Proxy LDAP autogestionada (disponible solo para MongoDB Enterprise) o Autenticación Kerberos en implementaciones autogestionadas (disponible solo para MongoDB Enterprise).

Para obtener detalles sobre la creación de usuarios para un mecanismo de autenticación específico, consultar las páginas correspondientes a cada mecanismo de autenticación.

Consultar ➤ Configurar el Control de Acceso Basado en Roles para conocer las mejores prácticas para la creación y gestión de usuarios.

El siguiente procedimiento para aplicar el control de acceso requiere tiempo de inactividad. Para un procedimiento que no requiera tiempo de inactividad, consulte Actualizar set de réplicas autogestionado (sin tiempo de inactividad).

1

Con la autenticación keyfile, cada instanciasmongod del set de réplicas utiliza el contenido del keyfile como contraseña compartida para autenticar a otros miembros en la implementación. Solo mongod instancias con el archivo de clave correcto pueden unirse al set de réplicas.

Nota

Los archivos de claves para la autenticación interna de miembros utilizan el formato YAML para permitir múltiples claves en un archivo de claves. El formato YAML acepta:

  • Una string de clave única (igual que en versiones anteriores)

  • Una secuencia de cadenas clave

El formato YAML es compatible con los archivos de claves de una sola clave existentes que utilizan el formato de archivo de texto.

La longitud de una clave debe estar entre 6 y 1024 caracteres y solo puede contener caracteres del conjunto base64. Todos los miembros del set de réplicas deben compartir al menos una clave común.

Nota

En los sistemas UNIX, el archivo de claves no debe tener permisos de grupo ni de otros. En los sistemas Windows, no se verifican los permisos de los archivos de claves.

Se puede generar un archivo de claves utilizando cualquier método que se elija. Por ejemplo, la siguiente operación utiliza openssl para generar un string de caracteres complejo pseudoaleatorio de 1024 caracteres que se utilizará como contraseña compartida. Luego utiliza chmod para cambiar los permisos del archivo para proporcionar permisos de lectura solo al propietario del archivo:

openssl rand -base64 756 > <path-to-keyfile>
chmod 400 <path-to-keyfile>

Consultar Keyfiles para obtener más información y requisitos para el uso de los keyfiles.

2

Copia el archivo de claves en cada servidor que aloje a los miembros del Set de réplicas. Asegúrate de que el usuario que ejecuta las instancias de mongod sea el propietario del archivo y pueda acceder al archivo de claves.

Evitar almacenar el archivo de claves en medios de almacenamiento que puedan desconectarse fácilmente del hardware que aloja las instancias de mongod, como una unidad USB o un dispositivo de almacenamiento conectado a la red.

3

Apague cada del conjunto de mongod réplicas, empezando por las secundarias.Continúe hasta que todos los miembros del conjunto de réplicas estén desconectados, incluidos los árbitros. La primaria debe ser la última en apagarse para evitar posibles reversiones.

Para apagar un mongod, conecta cada mongod utilizando mongosh y ejecuta el comando db.shutdownServer() en la base de datos admin:

use admin
db.shutdownServer()

Al final de este paso, todos los miembros del set de réplicas deben estar desconectados.

4

Reinicia cada mongod en el set de réplicas utilizando la configuración del archivo de configuración security.keyFile o la opción en la línea de comandos --keyFile. Ejecutar mongod con la opción de línea de comandos --keyFile o la opción en el archivo de configuración security.keyFile aplica tanto la autenticación autogestionada interna/de membresía como el control de acceso basado en roles en implementaciones autogestionadas.

Si utiliza un archivo de configuración, establezca

Incluye opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a la implementación o si los miembros de la implementación se ejecutan en diferentes hosts, se debe especificar la configuración net.bindIp.

security:
keyFile: <path-to-keyfile>
replication:
replSetName: <replicaSetName>
net:
bindIp: localhost,<hostname(s)|ip address(es)>

Inicia la mongod usando el archivo de configuración:

mongod --config <path-to-config-file>

Para obtener más información sobre el archivo de configuración, consultar opciones del archivo de configuración.

Si utiliza las opciones de línea de comandos, inicie el mongod con las siguientes opciones:

  • --keyFile configurado en la ruta del archivo de clave, y

  • --replSet configura el nombre del Set de réplicas.

Incluir opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a su implementación o si los miembros de su implementación se ejecutan en hosts diferentes, especificar el --bind_ip.

mongod --keyFile <path-to-keyfile> --replSet <replicaSetName> --bind_ip localhost,<hostname(s)|ip address(es)>

Importante

Para evitar actualizaciones de configuración debido a cambios en las direcciones IP, utilice nombres de host DNS en lugar de direcciones IP. Es particularmente importante usar un nombre de host DNS en lugar de una dirección IP al configurar miembros de set de réplicas o miembros de clústeres particionados.

Utiliza nombres de host en lugar de direcciones IP para configurar clústeres en un horizonte de red dividido. A partir de MongoDB 5.0, los nodos que solo están configurados con una dirección IP no pasan la validación de inicio y no se inician.

Para obtener más información sobre las opciones de la línea de comandos, consulte la mongod página de referencia.

5

Conecta mongosh a una de las instancias de mongod a través de la interfaz localhost. Debes ejecutar mongosh en la misma máquina física que la instancia mongod.

Utiliza rs.status() para identificar al primario set de réplicas. Si estás conectado al primario, continúa con el siguiente paso. Si no, conecta mongosh al primario a través de la interfaz localhost.

Importante

Debes conectarte al primario antes de continuar.

6

Importante

Después de que se cree el primer usuario, la excepción localhost ya no está disponible.

El primer usuario debe tener privilegios para crear otros usuarios, como un usuario con el userAdminAnyDatabase. Esto asegura que puedas crear usuarios adicionales después de que se cierre la Excepción de Localhost en Implementaciones Autogestionadas.

Si al menos un usuario no tiene privilegios para crear usuarios, una vez que se cierre la excepción de localhost, es posible que no se pueda crear o modificar usuarios con nuevos privilegios y, por lo tanto, no se pueda acceder a las operaciones necesarias.

Añadir un usuario usando el método db.createUser(). El usuario debe tener como mínimo el rol userAdminAnyDatabase en la base de datos admin.

Debe estar conectado al primario para crear usuarios.

El siguiente ejemplo crea al usuario fred con el rol userAdminAnyDatabase en la base de datos admin.

Importante

Las contraseñas deben ser aleatorias, largas y complejas para garantizar la seguridad del sistema y para prevenir o retrasar el acceso malicioso.

Tip

Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shell mongo.

admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "fred",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

Se debe ingresar la contraseña cuando se indique. Se debe consultar Roles de usuario de base de datos para ver una lista completa de los roles incorporados relacionados con las operaciones de administración de bases de datos.

7

Autentícate en la base de datos admin.

En mongosh, utiliza db.auth() para autenticarte. Por ejemplo, los siguientes se autentican como el usuario administrador fred:

Tip

Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shell mongo.

db.getSiblingDB("admin").auth("fred", passwordPrompt()) // or cleartext password

Como alternativa, conecta||||||| una nueva mongosh instancia al miembro primario del Set de réplicas utilizando los parámetros -u <username>, -p <password> y --authenticationDatabase.

mongosh -u "fred" -p --authenticationDatabase "admin"

Si no especificas la contraseña para la opción de línea de comandos -p, mongosh solicita la contraseña.

8

El usuario administrador del clúster tiene el rol clusterAdmin, que otorga acceso a operaciones de replicación.

Cree un usuario administrador del clúster y asígnele el rol de clusterAdmin en la base de datos admin:

Tip

Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shell mongo.

db.getSiblingDB("admin").createUser(
{
"user" : "ravi",
"pwd" : passwordPrompt(), // or cleartext password
roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
}
)

Introduzca la contraseña cuando se lo pidan.

Consulta Roles de administración del clúster para obtener una lista completa de los roles incorporados relacionados con las operaciones del set de réplicas.

9

Crear usuarios para permitir que los clientes se conecten e interactúen con el set de réplicas. Consultar Roles de usuario de base de datos para roles básicos incorporados que se pueden utilizar en la creación de usuarios de solo lectura y lectura-escritura.

También puede que desees usuarios administrativos adicionales. Para obtener más información sobre los usuarios, consulta Usuarios en implementaciones autogestionadas.

Para obtener detalles sobre el uso de X.509 para la autenticación interna, consultar Verificar la pertenencia al clúster con X.509 en MongoDB autogestionado.

Para actualizar de la autenticación interna del archivo de claves a la autenticación interna X.509, consultar Actualización de la autenticación del archivo de claves a la autenticación X.509.

Volver

Implementar Set de réplicas

En esta página