Docs Menu
Docs Home
/ /
Interno
/ / / / /

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

Implementar el control de acceso en un sistema existente Elconjunto 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 mongoshnecesita usar una cuenta de usuario. Consulte 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, se mongos enlazan a localhost de forma predeterminada.

Este tutorial utiliza los programas. Los usuarios mongod mongod.exe de Windows deberían usar el programa.

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 lo requiere, consulte Actualizar el conjunto de réplicas autoadministradas a autenticación de archivo de claves (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 unmongod, conecte cadamongodusandomongoshy emita eldb.shutdownServer()en la base de datos admin:

use admin
db.shutdownServer()

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

4

Reinicie cada del mongod conjunto de réplicas con la security.keyFile opción del archivo de configuración o la opción de la línea de --keyFile comandos. Al ejecutar con mongod la opción de la --keyFile línea de comandos security.keyFile o la opción del archivo de configuración, se aplican la autenticación interna/de membresía autogestionada y el control de acceso basado en roles en las 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.

Utilice para rs.status() identificar al miembro principal del conjunto de réplicas. Si está conectado al principal, continúe con el siguiente paso. De lo contrario, conéctese a al principal mediante mongosh la interfaz localhost.

Importante

Debe conectarse al servidor principal 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

Puede usar el método junto con varios métodos o comandos de autenticación/gestión de usuarios para solicitar la contraseña en lugar de especificarla directamente en la llamada al método/comando. Sin embargo, puede especificarla directamente como lo hacía con versiones anteriores passwordPrompt() del mongo shell.

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

Puede usar el método junto con varios métodos o comandos de autenticación/gestión de usuarios para solicitar la contraseña en lugar de especificarla directamente en la llamada al método/comando. Sin embargo, puede especificarla directamente como lo hacía con versiones anteriores passwordPrompt() del mongo shell.

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, que otorga acceso a las operaciones de clusterAdmin replicación.

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

Tip

Puede usar el método junto con varios métodos o comandos de autenticación/gestión de usuarios para solicitar la contraseña en lugar de especificarla directamente en la llamada al método/comando. Sin embargo, puede especificarla directamente como lo hacía con versiones anteriores passwordPrompt() del mongo shell.

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

Introduzca la contraseña cuando se lo pidan.

Consulte Roles de administración de clúster para obtener una lista completa de los roles integrados relacionados con las operaciones del conjunto 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, consulte Usar509 el certificado X. para la autenticación de membresía con MongoDB autoadministrado.

Para actualizar de la autenticación interna de archivo de claves a509 la autenticación interna X.,consulte Actualizar MongoDB autoadministrado de la autenticación de archivo de claves a la autenticación X..509

Volver

Implementar Set de réplicas

En esta página