MongoDB Enterprise es compatible con Kerberos. Kerberos Es un protocolo de autenticación de red. El agente de MongoDB puede autenticarse en instancias de MongoDB que ejecutan Kerberos.
Requisitos previos
Configurar KDC para emitir tickets con una duración mínima de cuatro horas
Los tickets Kerberos pueden autenticar usuarios por tiempo limitado. Debe configurar el Centro de Distribución de Claves Kerberos (KDC) para emitir tickets con una validez de cuatro horas o más. El Agente de MongoDB renueva el ticket periódicamente. El servicioKDC 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 Agente de MongoDB interactúa con las bases de datos de MongoDB en su implementación como lo haría un usuario de MongoDB. Por lo tanto, debe configurar su implementación de MongoDB y el Agente de MongoDB para que admitan la autenticación.
Puede especificar los mecanismos de autenticación de la implementación cuando Puede agregar la implementación o editar la configuración de una implementación existente. Como mínimo, la implementación debe habilitar el mecanismo de autenticación que desea que utilice el Agente de MongoDB. El Agente de MongoDB puede usar cualquier mecanismo de autenticación compatible.
Para los fines de este tutorial, debes asegurarte de lo siguiente:
Su implementación admite la autenticación Kerberos y
El agente MongoDB utiliza la autenticación Kerberos.
Para saber cómo habilitar la autenticación Kerberos, consulte Habilitar la autenticación Kerberos para su proyecto de Ops Manager.
Configurar el host del agente MongoDB para usar Kerberos
Se deben instalar dos archivos relacionados con Kerberos en cualquier host que ejecute Monitoring o Backup:
Cree o configure el archivo de configuración Kerberos5 krb.conf.
PlataformaRuta predeterminadanotasLinux
/etc/krb5.confWindows
%WINDIR%\krb5.iniEsta es la ruta predeterminada para las implementaciones de Kerberos que no se basan en Active Directory. Consulte la documentación de su implementación de Kerberos para su versión de Windows para saber dónde se almacena el archivo de configuración de Kerberos.
En sistemas Linux: asegúrese de que el binario kinit esté ubicado
/usr/bin/kiniten.kinitobtiene o renueva un ticket de concesión de tickets Kerberos, que autentica al Agente mediante Kerberos.
Procedimientos
Crear un usuario principal de Kerberos para el agente de MongoDB
Cree o elija un nombre principal deusuario (UPN) de Kerberos para el agente de MongoDB.
Un UPN se formatea en dos partes para que el servicio pueda identificarse de forma única en todo el ámbito Kerberos:
Componente | Descripción |
|---|---|
Nombre del servicio | El nombre de un servicio que un host proporciona al ámbito Kerberos, como ImportanteOps Manager 6.0.0 deja de usar las alertas SNMP. Ops Manager 7.0.0 no las incluirá. Para obtener más información sobre otras opciones de alerta, consulte Integraciones de servicios de terceros. |
Kerberos realm | Un conjunto de hosts y servicios administrados que comparten la misma base de datos Kerberos. Según la convención de nombres de Kerberos, |
Ejemplo
En un dominio Kerberos establecido EXAMPLE.COM como, el agente MongoDB establecería su UPN en: mongodb-agent@EXAMPLE.COM
Genere un keytab archivo para el UPN Kerberos del Agente MongoDB.
Genere un archivo keytab *.keytab () para el UPN del Agente MongoDB y cópielo en el host que lo ejecuta. Asegúrese de que el usuario del sistema operativo que ejecuta el Agente MongoDB sea el mismo que el propietario del keytab archivo.
Crear un usuario y asignar roles para el UPN del agente MongoDB
Cuando se activa la automatización, Ops Manager administra la autenticación del agente MongoDB.
Para configurar Kerberos para la autenticación del agente MongoDB, consulte Habilitar la autenticación Kerberos para su proyecto de Ops Manager.
Después de crear el UPN de Kerberos para el Agente MongoDB, cree un usuario MongoDB en su implementación que corresponda al UPN del Agente MongoDB y otórguele privilegios.
El lugar donde crea el usuario MongoDB depende de si utiliza o no la autorización LDAP.
Si utiliza la autorización LDAP en su implementación de MongoDB, debe crear un usuario y un grupo LDAP para el agente de MongoDB en el servidor LDAP. Después de crear el usuario y el grupo LDAP, asigne el grupo LDAP a un rol de MongoDB en la admin base de datos de su implementación.
Advertencia
Al usar la autorización LDAP, no cree ningún usuario de MongoDB en la $external base de datos. MongoDB 3.4 y versiones posteriores no se inician si existe un usuario de MongoDB en la $external base de datos y la autorización LDAP está habilitada.
Para el usuario de MongoDB que representa al Agente de MongoDB:
Cree un nuevo usuario LDAP en su servidor LDAP nombrado con el UPN del agente MongoDB.
Cree un grupo LDAP cuyo nombre coincida con el rol del agente MongoDB.
Cree el rol del agente MongoDB en su base de datos
admincon los permisos adecuados.Nota
Cuando se activa la automatización, esta crea automáticamente un rol para el usuario del agente MongoDB para la autenticación LDAP.
Asignar el usuario LDAP al grupo LDAP.
Tip
Para aprender a: | Ver |
|---|---|
Crear un usuario LDAP | Documentación para su implementación LDAP. |
Crear un grupo LDAP | Documentación para su implementación LDAP. |
Asignar los roles apropiados para el Agente MongoDB | |
Asignar un grupo LDAP y un rol de MongoDB | Sección Roles LDAP de la página de autorización LDAP en el manual de MongoDB. |
Configurar la autorización LDAP sin la automatización de Ops Manager | Página autorizacion LDAP en el manual de MongoDB. |
Si no utiliza la autorización LDAP, debe agregar el UPN del agente de MongoDB como usuario $external en la base de datos de su implementación de MongoDB. Sin la autorización LDAP, MongoDB utiliza la $external base de datos para autenticar a un usuario con Kerberos.
Nota
Para descubrir los roles apropiados para el MongoDB Agent, accede a: Required Access for MongoDB Agent.
mongoshDesde, emita los siguientes comandos para crear el usuario 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" } ] } )