MongoDB Enterprise ofrece soporte para Kerberos. Kerberos es un protocolo de autenticación de red. El MongoDB Agent puede autenticarse en instancias de MongoDB que ejecuten Kerberos.
Requisitos previos
Configura la KDC para emitir tickets con un tiempo de vida mínimo de cuatro horas
Los tickets de Kerberos pueden autenticar a los usuarios durante un tiempo limitado. Debes configurar el Centro de Distribución de Claves (KDC) de Kerberos para emitir tickets que sean válidos por cuatro horas o más. El agente de MongoDB renueva el ticket periódicamente. El El servicio KDC proporciona tickets de sesión y claves de sesión temporales a usuarios y hosts.
Agregar Kerberos como mecanismo de autenticación para la implementación
El MongoDB Agent interactúa con las bases de datos de MongoDB en tu implementación como lo haría un usuario de MongoDB. Como resultado, debe configurar su implementación de MongoDB y el MongoDB Agent para admitir la autenticación.
Puedes especificar los mecanismos de autenticación de la implementación cuando agregar la implementación, o puedes editar la configuración para una implementación existente. Como mínimo, la implementación debe habilitar el mecanismo de autenticación que desea que utilice el MongoDB Agent. El agente de MongoDB puede utilizar cualquier mecanismo de autenticacióncompatible.
Para los fines de este tutorial, asegúrate de lo siguiente:
Tu implementación admite la autenticación de Kerberos y
El agente de MongoDB utiliza autenticación Kerberos.
Para aprender a habilitar la autenticación Kerberos, consulta Habilita la autenticación Kerberos para tu proyecto de Ops Manager.
Configure el MongoDB Agent host para usar Kerberos
Los siguientes archivos de configuración de Kerberos se requieren en cualquier host que ejecute supervisión o copia de seguridad:
Cree o configure el krb5.conf Archivo de configuración de Kerberos.
PlataformaRuta por defectonotasLinux
/etc/krb5.confWindows
%WINDIR%\krb5.iniEsta es la ruta por defecto para implementaciones de Kerberos que no se basan en Active Directory. Consulta la documentación para tu implementación de Kerberos en tu versión de Windows para averiguar dónde se almacena el archivo de configuración de Kerberos.
En los sistemas Linux, asegúrate de que el archivo binario kinit se encuentre en
/usr/bin/kinit.kinitobtiene o renueva un ticket de concesión de tickets de Kerberos, que autentica al agente utilizando Kerberos.
Procedimientos
Crea un principal de usuario de Kerberos para el MongoDB Agent
Cree o elija un Nombre Principal de Usuario de Kerberos (UPN) para el MongoDB Agent.
Un UPN se formatea en dos partes para que el servicio pueda ser identificado de manera única en todo el realm Kerberos:
Componente | Descripción |
|---|---|
Nombre del servicio | El nombre de un servicio que un host proporciona al realm de Kerberos, como |
Kerberos realm | Un conjunto de hosts y servicios administrados que comparten la misma base de datos de Kerberos. Según la convención de nomenclatura de Kerberos, el |
Ejemplo
En un dominio Kerberos establecido como EXAMPLE.COM, el MongoDB Agent configuraría su UPN en: mongodb-agent@EXAMPLE.COM
Genera un archivo keytab para el Kerberos UPN del Agente de MongoDB.
Genera un archivo keytab (*.keytab) para el MongoDB Agent UPN y cópialo al host que ejecuta el MongoDB Agent. Asegúrese de que el usuario del sistema operativo que ejecuta el MongoDB Agent sea el mismo usuario del sistema operativo que posee el archivo keytab.
Crear un usuario y asignar roles para el UPN de MongoDB Agent
Cuando la Automatización está activada, Ops Manager gestiona la autenticación del MongoDB Agent.
Para configurar Kerberos para la autenticación del Agente de MongoDB, consulte Habilitar autenticación de Kerberos para su proyecto de Ops Manager.
Después de crear el UPN de Kerberos para el MongoDB Agent, crea un usuario de MongoDB en tu implementación que corresponda con el UPN del MongoDB Agent y asígnale privilegios.
Dónde crear el usuario de MongoDB depende de si utilizas o no autorización LDAP.
Si utiliza la autorizacion LDAP en su implementación de MongoDB, debe crear un usuario LDAP y un grupo LDAP para el MongoDB Agent en el servidor LDAP. Después de crear el usuario y grupo de LDAP, asigna el grupo de LDAP a un rol de MongoDB en la base de datos admin de tu implementación.
Advertencia
Al utilizar la autorizacion LDAP, no crear ningún usuario de MongoDB en la base de datos $external. MongoDB 3.4 y posteriores no se inician si existe un usuario MongoDB en la base de datos $external y la autorizacion LDAP está habilitada.
Para el usuario de MongoDB que representa el MongoDB Agent:
Crea un nuevo usuario LDAP en tu servidor LDAP con el nombre del UPN del MongoDB Agent.
Cree un grupo LDAP cuyo nombre coincida con el rol del MongoDB Agent.
Cree el rol del MongoDB Agent en su base de datos
admincon los permisos apropiados.Nota
Cuando se activa la automatización, Automation automáticamente crea un rol para el usuario del MongoDB Agent para la autenticación LDAP.
Asigne el usuario LDAP al grupo LDAP.
Tip
Para aprender a: | Ver |
|---|---|
Crear un usuario LDAP | Documentación para su implementación de LDAP. |
Crear un grupo LDAP | Documentación para su implementación de LDAP. |
Asigna los roles adecuados para el MongoDB Agent | |
Mapee un grupo LDAP y un rol de MongoDB | sección Roles LDAP de la página autorizacion LDAP en el manual de MongoDB. |
Configure la autorizacion LDAP sin la automatización Ops Manager | Página autorizacion LDAP en el manual de MongoDB. |
Si no está utilizando la autorizacion LDAP, debe agregar el UPN del MongoDB Agent como usuario $external en la base de datos de su implementación de MongoDB. Sin autorización LDAP, MongoDB utiliza la base de datos $external para autenticar a un usuario con Kerberos.
Nota
Para descubrir los roles apropiados para el MongoDB Agent, accede a: Required Access for MongoDB Agent.
Desde mongosh, ejecuta los siguientes comandos para crear el usuario de MongoDB:
db.getSiblingDB("$external").createUser( { user : "<Kerberos Principal>", roles : [ { role : "clusterAdmin", db : "admin" }, { role : "readWriteAnyDatabase", db : "admin" }, { role : "userAdminAnyDatabase", db : "admin" }, { role : "dbAdminAnyDatabase", db : "admin" }, { role : "backup", db : "admin" }, { role : "restore", db : "admin" } ] } )