Este documento describe cómo configurar el administrador de trabajos de Sintéticos (SJM) para ejecutar monitores con compatibilidad de autenticación de Kerberos. También incluye un tutorial opcional para establecer un Centro de distribución de claves (KDC) de Kerberos y una aplicación web protegida por SPNEGO en una instancia EC2 de Amazon Linux 2023, para que pueda validar la configuración antes de apuntar el administrador de trabajos a su propio dominio.
Valores de marcador de posición
Antes de comenzar, identifique los siguientes valores para su entorno. Reemplace cada marcador de posición con su propio valor dondequiera que aparezca en este documento.
Marcador de posición | Descripción | Ejemplo |
|---|---|---|
| Reino de Kerberos (debe estar en mayúsculas) |
|
| Dirección IPv4 privada de la instancia EC2 |
|
| Nombre de dominio completo (FQDN) de la aplicación web |
|
| Identidad de Kerberos asignada a los trabajadores de Sintéticos |
|
| Ruta completa en el host donde se almacena el keytab del cliente |
|
| Clave de ubicación privada de New Relic |
|
Requisitos y compatibilidad
La autenticación de Kerberos depende del acceso directo de red al Centro de distribución de claves (KDC), la resolución de DNS interna y los relojes estrechamente sincronizados. Estas restricciones limitan dónde puede ejecutarlo, así que revise los siguientes requisitos antes de comenzar.
Admitimos la autenticación de Kerberos en estos entornos:
- Ubicaciones privadas que ejecutan el administrador de trabajos de Sintéticos en un entorno de contenedor de Docker
- Ubicaciones privadas que ejecutan el administrador de trabajos de Sintéticos en un entorno de contenedor de Podman
No admitimos la autenticación de Kerberos en estos entornos:
- Ubicaciones públicas, que no tienen ruta de red al KDC interno
- Entornos del administrador de trabajos de Kubernetes y OpenShift
El administrador de trabajos proporciona credenciales de Kerberos solo a los trabajos de monitor de navegador. Los monitores de API con script y los monitores de ping se ejecutan sin autenticación de Kerberos.
Cada contenedor de tiempo de ejecución del navegador adquiere su propio ticket de Kerberos (a través de kinit, antes del lanzamiento de Chrome), por lo que la ubicación privada también debe cumplir con estos requisitos:
- Acceda a su KDC en el puerto 88 de TCP y UDP desde dentro de los contenedores de tiempo de ejecución.
- Resuelva los nombres de host de su KDC y de la aplicación objetivo desde el interior de los contenedores de tiempo de ejecución. En los despliegues de Docker, si el DNS interno no los resuelve, asócielos con
RUNTIME_EXTRA_HOSTS—esta variable es exclusiva de Docker. Los despliegues de Podman dependen del DNS interno. - Mantenga el reloj del host de la ubicación privada a menos de 5 minutos del reloj del KDC, usando un servicio como
chrony. Los contenedores de tiempo de ejecución comparten el reloj del kernel del host, por lo que sincronizar el host es suficiente.
Parte 1: configurar un laboratorio de pruebas de Kerberos (opcional)
Sugerencia
La Parte 1 crea un reino de Kerberos autónomo y una aplicación de prueba protegida para que pueda validar la configuración del administrador de trabajos de principio a fin. No es la ruta de producción y New Relic no administra su KDC. Si ya ejecuta un KDC de Kerberos o un dominio de Active Directory, obtenga el nombre del reino, la dirección del KDC y un keytab de cliente de quien lo administre, y luego pase a la Parte 2.
Parte 2: configure el gestor de trabajos de Sintéticos para Kerberos
Para permitir que los contenedores del ejecutor del navegador de Sintéticos resuelvan automáticamente el KDC, adquieran tickets de Kerberos y se autentiquen en los extremos protegidos, agregue las siguientes variables de entorno de Kerberos y el montaje de volumen de keytab al comando que inicia el administrador de trabajos.
Advertencia
Cuando habilita Kerberos en una ubicación privada, cada trabajo de monitor de navegador en esa ubicación recibe el montaje de keytab y las variables de entorno de Kerberos. El administrador de trabajos no filtra las credenciales por monitor ni por URL. Chrome decide qué hosts reciben un ticket de Kerberos basándose solo en KERBEROS_HOST_ALLOWLIST, así que mantenga esa lista de permitidos lo más reducida posible.
Importante
Configure las cuatro variables KERBEROS_* o no configure ninguna. Si solo configura algunos, el administrador de trabajos de Sintéticos no se inicia y registra un error de configuración de Kerberos incompleta.
Comando estándar (sin Kerberos)
$docker run -e PRIVATE_LOCATION_KEY=<PRIVATE_LOCATION_KEY> \> -d --restart unless-stopped \> -v /var/run/docker.sock:/var/run/docker.sock:rw \> newrelic/synthetics-job-managerComando requerido (con soporte para Kerberos habilitado)
Agregue las cuatro variables de entorno de KERBEROS_* (-e) y el montaje de volumen del keytab (-v) al comando que ya utiliza para iniciar el administrador de trabajos.
Parte 3: solucionar problemas de autenticación de Kerberos
Si la inicialización de Kerberos falla dentro del contenedor de tiempo de ejecución, la canalización de inicio del contenedor aún realiza el lanzamiento del navegador y ejecuta el monitor. Luego, el monitor falla frente a un extremo protegido con un desafío HTTP 401 o un tiempo de espera de navegación, y agregamos una etiqueta al resultado con una causa raíz de KerberosInitWarning. Debido a que la falla parece un tiempo de espera ordinario, revise los logs de trabajo en busca de los siguientes códigos de error antes de investigar el script del monitor.
Estos códigos son independientes de la validación de inicio de la Parte 2 —si configura solo algunas de las variables de KERBEROS_*, el administrador de trabajos no se iniciará en absoluto y ninguno de estos códigos aparecerá en los logs de un trabajo.
Código de error | Causa | Qué hacer |
|---|---|---|
| El contenedor de tiempo de ejecución no puede comunicarse con el KDC a través de la red. | Compruebe las reglas del firewall para el puerto 88 de TCP y UDP entre el host de su ubicación privada y el KDC. |
| El principal no coincide con el keytab, o el keytab está dañado. | Verifique el keytab en el host ejecutando
. |
| El reloj del host difiere del reloj del KDC en más de 5 minutos. | Sincronice el reloj del host con NTP, mediante un servicio como
. |
| El contenedor no puede resolver el nombre de host del KDC ni el reino. | Compruebe la configuración del resolutor de DNS interno para su contenedor del administrador de trabajos, o asigne los hosts con
. |
| El contenedor de tiempo de ejecución no puede leer el keytab montado, o no se pudo analizar ningún principal a partir de este (un keytab vacío o mal formado). | Verifique que el keytab sea legible dentro del contenedor de tiempo de ejecución y contenga al menos un principal:
. |
| Un error criptográfico o de GSSAPI a nivel del sistema detuvo el protocolo de enlace. | Compare los tipos de cifrado en el keytab del cliente (
enumera el enctype de cada entrada) con el valor
configurado en el KDC en el paso 3. Una discrepancia entre lo que ofrece el keytab y lo que acepta el KDC causa la mayoría de estas fallas. |