Skip to main content
AI Data Engine
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Configurar Kerberos para recursos compartidos SMB/CIFS en una implementación de AI Data Engine de un solo nodo

Colaboradores netapp-dbagwell

Escanea recursos compartidos SMB/CIFS desde una implementación de AI Data Engine (AIDE) de un solo nodo con autenticación Kerberos, para que no se almacene ninguna contraseña en la fuente de datos. Después de completar la configuración, AI Data Engine renueva automáticamente el ticket de Kerberos.

Antes de empezar

Permisos y acceso
  • Tienes privilegios de administrador de AI Data Engine.

  • Tienes acceso a raíz al host de AI Data Engine.

Sincronización de red y hora
  • Has revisado "requisitos de red" y "Requisitos de Kerberos y Active Directory", incluidas la sincronización horaria y DNS.

  • Has verificado que el host de AI Data Engine puede comunicarse con el KDC en el puerto 88, con el servidor de archivos en el puerto 445 y con tu servidor DNS en el puerto 53.

  • Has comprobado que NTP está activo en el host de AI Data Engine y que su reloj está sincronizado con tus controladores de dominio. Para comprobarlo, ejecuta timedatectl.

Active Directory
  • Dispones de una cuenta de servicio de análisis en Active Directory con acceso de lectura a los recursos compartidos SMB/CIFS que deseas analizar. La cuenta debe admitir el cifrado AES256.

Información que debes recopilar
  • Tienes la siguiente información:

    Artículo Descripción Ejemplo

    Dirección IP de KDC

    Dirección IP del controlador de dominio que actúa como centro de distribución de claves de Kerberos (KDC)

    10.0.1.50

    FQDN de KDC

    Nombre de dominio completo (FQDN) del mismo controlador de dominio

    dc.corp.example.com

    Dominio

    Dominio de Active Directory, en minúsculas

    corp.example.com

    Dominio

    El reino de Kerberos, que es el dominio en mayúsculas

    CORP.EXAMPLE.COM

    Usuario de escaneo

    Cuenta de servicio con acceso de lectura al recurso compartido

    svc-aide

    Contraseña de escaneo

    Contraseña del usuario scan. Solo la introduces al crear el keytab.

    No aplicable

    FQDN del servidor de archivos

    Nombre de dominio completo (FQDN) del servidor de archivos que aloja el recurso compartido. No utilices una dirección IP.

    filer.corp.example.com

    Nombre del recurso compartido

    Nombre del recurso compartido SMB/CIFS

    sharename

Archivos Kerberos que utiliza AI Data Engine

Debes crear los siguientes archivos en el host de AI Data Engine. El instalador crea los /opt/netapp/aide directorios e instala cifs-utils automáticamente para permitir el acceso SMB con autenticación Kerberos.

Archivo Ubicación

Configuración de Kerberos

/etc/krb5.conf

Keytab

/opt/netapp/aide/kerberos_refresher/datasense.keytab

Archivo principal

/opt/netapp/aide/kerberos_refresher/kerberos_creds.env

Caché de tickets, que AI Data Engine crea al actualizar el ticket

/opt/netapp/aide/kerberos_ccache/krb5cc_shared

Crear los archivos de Kerberos

Proporciona a AI Data Engine la configuración y las credenciales necesarias para obtener los tickets de Kerberos para la cuenta de servicio de análisis.

Pasos
  1. Instala las herramientas del cliente Kerberos.

    1. En Ubuntu o Debian, ejecuta los siguientes comandos.

      apt-get update -qq
      apt-get install -y krb5-user
    2. En RHEL, CentOS o Rocky Linux, ejecuta el siguiente comando.

      dnf -y install krb5-workstation
  2. Establece las variables que utilizan los siguientes comandos. Sustituye cada valor entre corchetes angulares por tu propio valor, sin incluir los corchetes angulares. Introduce el reino en mayúsculas y el dominio en minúsculas.

    export KDC_IP="<kdc_ip>"
    export KDC_FQDN="<kdc_fqdn>"
    export AD_DOMAIN="<domain>"
    export REALM="<REALM>"
    export SCAN_USER="<scan_user>"
    export FILE_SERVER_FQDN="<file_server_fqdn>"
    export SHARE_NAME="<share_name>"
    1. Comprueba que las variables estén definidas.

      echo "KDC_IP=[${KDC_IP}] REALM=[${REALM}] SCAN_USER=[${SCAN_USER}]"
      Nota Las variables solo existen en la sesión actual del shell. Si abres un nuevo shell, vuelve a configurarlas.
  3. Crea el archivo de configuración de Kerberos.

    tee /etc/krb5.conf >/dev/null <<EOF
    [libdefaults]
        default_realm = ${REALM}
        dns_lookup_realm = false
        dns_lookup_kdc = false
        rdns = false
        ticket_lifetime = 24h
        renew_lifetime = 7d
        forwardable = true
    
    [realms]
        ${REALM} = {
            kdc = ${KDC_IP}:88
            admin_server = ${KDC_IP}:749
        }
    
    [domain_realm]
        .${AD_DOMAIN} = ${REALM}
        ${AD_DOMAIN} = ${REALM}
    EOF
    chmod 644 /etc/krb5.conf

    El archivo utiliza la dirección IP del KDC para que la autenticación Kerberos no dependa del DNS.

  4. Crea un keytab para la cuenta de servicio de análisis.

    1. Ejecuta ktutil.

    2. En el prompt ktutil, introduce el siguiente comando. Sustituye <scan_user> y <REALM> por tus valores. El prompt ktutil no utiliza las variables del shell.

      addent -password -p <scan_user>@<REALM> -k 1 -e aes256-cts-hmac-sha1-96
    3. Cuando ktutil te pida una contraseña, introduce la contraseña del usuario de análisis.

    4. En el ktutil indicador, introduce los siguientes comandos.

      wkt /tmp/krb5.keytab
      quit
  5. Comprueba el keytab.

    klist -kt /tmp/krb5.keytab
    kinit -kt /tmp/krb5.keytab "${SCAN_USER}@${REALM}"
    klist
    kdestroy

    El segundo comando klist debe mostrar un ticket válido para el usuario de escaneo. Un ticket confirma que el keytab y la conexión con el KDC funcionan. Si kinit falla, consulta Solucionar problemas de autenticación Kerberos.

  6. Instala el keytab y luego elimina la copia temporal.

    install -o root -g 4321 -m 640 /tmp/krb5.keytab /opt/netapp/aide/kerberos_refresher/datasense.keytab
    rm -f /tmp/krb5.keytab

    El actualizador de tickets se ejecuta como usuario raíz con el ID de grupo 4321. El keytab y el archivo de principal deben poder leerlos ese grupo y ningún otro usuario.

  7. Crea el archivo principal. El valor KRB5_RENEW_INTERVAL_H es el intervalo de renovación del ticket en horas.

    tee /opt/netapp/aide/kerberos_refresher/kerberos_creds.env >/dev/null <<EOF
    KRB5_USER=${SCAN_USER}
    KRB5_REALM=${REALM}
    KRB5_RENEW_INTERVAL_H=3
    EOF
    chgrp 4321 /opt/netapp/aide/kerberos_refresher/kerberos_creds.env
    chmod 640 /opt/netapp/aide/kerberos_refresher/kerberos_creds.env

Comprueba la resolución de nombres

AI Data Engine resuelve el servidor de archivos y el KDC utilizando la configuración de DNS del host. Comprueba primero la resolución de nombres y cambia la configuración de DNS solo si un nombre no se resuelve.

Pasos
  1. Comprueba que el servidor de archivos y el KDC se puedan resolver mediante su nombre de dominio completo (FQDN).

    nslookup "${FILE_SERVER_FQDN}"
    nslookup "${KDC_FQDN}"
  2. Comprueba el resultado.

    1. Si ambos nombres se resuelven en las direcciones IP correctas, continúa con Inicia la primera actualización del ticket.

    2. Si alguno de los nombres no se resuelve, completa Corregir la resolución de nombres y luego vuelve a este procedimiento.

Inicia la primera actualización del ticket

AI Data Engine actualiza el ticket de Kerberos de la cuenta de servicio de análisis cada tres horas. Inicia la primera actualización para poder analizar los recursos compartidos de inmediato.

Nota No añadas una kinit entrada al crontab del host. AI Data Engine actualiza los tickets automáticamente.
Pasos
  1. Inicia una tarea de actualización, espera a que finalice y muestra su registro.

    export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
    JOB="ds-krb5-manual-$(date +%s)"
    kubectl -n aide create job "${JOB}" --from=cronjob/ds-krb5-ticket-refresher
    kubectl -n aide wait --for=condition=complete "job/${JOB}" --timeout=120s
    kubectl -n aide logs "job/${JOB}"
  2. Comprueba que la caché de tickets compartida exista y que tenga una marca de tiempo reciente.

    ls -l /opt/netapp/aide/kerberos_ccache/krb5cc_shared
Resultado

El registro de trabajos muestra que se obtuvo un ticket para el usuario de análisis.

Comprueba la configuración de Kerberos

Antes de añadir el recurso compartido, comprueba que AI Data Engine pueda utilizar los archivos de Kerberos y resolver los nombres. Si has abierto un nuevo shell, vuelve a configurar la variable FILE_SERVER_FQDN y establece KUBECONFIG tal y como se muestra en Inicia la primera actualización del ticket.

Pasos
  1. Busca el pod del servicio de montaje.

    POD=$(kubectl -n aide get pod -l app.kubernetes.io/name=ds-mount-server -o jsonpath='{.items[0].metadata.name}')
  2. Comprueba que el servidor de archivos se resuelva desde dentro de AI Data Engine.

    kubectl -n aide exec "${POD}" -- nslookup "${FILE_SERVER_FQDN}"
  3. Comprueba que AI Data Engine tenga un ticket para el usuario de escaneo.

    kubectl -n aide exec "${POD}" -- klist
Resultado

El servidor de archivos se resuelve con la dirección IP correcta y `klist`muestra un ticket para el usuario de escaneo.

Añade una fuente de datos SMB/CIFS que usa Kerberos

Añade el recurso compartido como fuente de datos e inicia los escaneos para que AI Data Engine pueda empezar a analizar sus datos.

Pasos
  1. En la interfaz de usuario de AI Data Engine, selecciona Configuración.

  2. En la pestaña Sistemas analizados, selecciona Add system.

  3. Selecciona Grupo de recursos compartidos de archivos.

  4. Introduce un nombre para el grupo.

  5. Introduce la ruta del recurso compartido con el formato <file_server_fqdn>/<share_name>. Sustituye los marcadores de posición por tus propios valores. No uses una dirección IP.

  6. Para el método de autenticación, selecciona Kerberos. Deja vacíos los campos de nombre de usuario y contraseña.

  7. Revisa tus selecciones y pulsa Confirm.

  8. Selecciona Activar análisis para el nuevo sistema.

Para obtener más información sobre cómo conectar fuentes de datos, consulta "Conecta una fuente de datos a AI Data Engine".

Corregir la resolución de nombres

Realiza este procedimiento únicamente si el servidor de archivos o el KDC no se resuelven mediante el nombre de dominio completo (FQDN). Esto configura tu servidor DNS de Active Directory como servidor de nombres para el host. Si has abierto un nuevo shell, vuelve a configurar las variables KDC_IP y AD_DOMAIN.

Pasos
  1. Comprueba que tu servidor DNS de Active Directory también resuelva nombres externos.

    1. Ejecuta el siguiente comando. Sustituye <external_fqdn> por un nombre ajeno a tu dominio al que AI Data Engine deba poder acceder. Por ejemplo, utiliza un endpoint de los que aparecen en "Acceso a Internet saliente".

      nslookup <external_fqdn> "${KDC_IP}"
    2. Si el comando falla, pide al administrador de Active Directory que habilite el reenvío de DNS y, a continuación, repite este paso.

  2. Haz una copia de seguridad /etc/resolv.conf, y configura tu servidor DNS de Active Directory como servidor de nombres.

    cp /etc/resolv.conf /etc/resolv.conf.bak
    ORIG_SEARCH=$(grep '^search' /etc/resolv.conf.bak | head -1 | cut -d' ' -f2-)
    printf 'search %s\nnameserver %s\n' "${ORIG_SEARCH}" "${KDC_IP}" > /etc/resolv.conf
  3. Evita que el gestor de red sobrescriba la configuración de DNS tras un reinicio.

    1. En RHEL con NetworkManager, ejecuta los siguientes comandos.

      mkdir -p /etc/NetworkManager/conf.d
      printf '[main]\ndns=none\n' > /etc/NetworkManager/conf.d/90-dns-none.conf
      systemctl reload NetworkManager
    2. En Ubuntu con systemd-resolved, ejecuta los siguientes comandos.

      mkdir -p /etc/systemd/resolved.conf.d
      printf '[Resolve]\nDNS=%s\nDomains=%s\n' "${KDC_IP}" "${AD_DOMAIN}" > /etc/systemd/resolved.conf.d/ad-dns.conf
      systemctl restart systemd-resolved
  4. Reinicia CoreDNS para que AI Data Engine use la nueva configuración de DNS. CoreDNS reenvía las consultas de nombres fuera del clúster a los servidores de nombres en /etc/resolv.conf, por lo que debe reiniciarse para aplicar el cambio.

    export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
    kubectl -n kube-system rollout restart deployment coredns
    kubectl -n kube-system rollout status deployment coredns --timeout=120s
  5. Comprueba de nuevo la resolución de nombres. Consulta Comprueba la resolución de nombres.

Actualiza el archivo de configuración de Kerberos

Si sustituyes /etc/krb5.conf después de la configuración, por ejemplo, copiando un archivo nuevo sobre él, AI Data Engine seguirá usando el archivo anterior hasta que reinicies los servicios afectados.

Pasos
  1. Reinicia el servicio de montaje y elimina las tareas anteriores de actualización de tickets.

    export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
    kubectl -n aide rollout restart daemonset ds-mount-server
    kubectl -n aide delete job -l app.kubernetes.io/name=ds-krb5-ticket-refresher --ignore-not-found
  2. Inicia una nueva actualización de ticket. Consulta Inicia la primera actualización del ticket.

Solucionar problemas de autenticación Kerberos

Averigua la causa de un fallo de Kerberos y restablece el escaneo de tus recursos compartidos SMB/CIFS.

Síntoma Posible causa Resolución

El error IP no permitida con Kerberos aparece al añadir un recurso compartido.

La ruta del recurso compartido utiliza una dirección IP.

Introduce la ruta de acceso del recurso compartido como un FQDN.

kinit falla al comprobar el keytab o no se emite ningún ticket.

La contraseña o el realm son incorrectos, el realm no está en mayúsculas, la cuenta de análisis no admite el cifrado AES256, el host no puede comunicarse con el KDC en el puerto 88 o el reloj del host difiere del KDC en más de la desviación permitida.

Comprueba la contraseña y el reino, y verifica que la cuenta admita el cifrado AES256. Abre el puerto 88 hacia el KDC y comprueba que NTP esté activo en el host. A continuación, vuelve a crear el keytab.

La tarea de actualización de tickets falla, o no se crea ninguna caché de tickets.

Falta el keytab, el archivo principal o /etc/krb5.conf, o está vacío, o la propiedad del grupo y los permisos son incorrectos.

Comprueba que los archivos estén en las ubicaciones indicadas en Archivos Kerberos que utiliza AI Data Engine. Comprueba que el archivo keytab y el archivo de principal tengan el grupo 4321 y el modo 640. Comprueba que el directorio de caché de tickets sea propiedad de root:4321 y tenga el modo 770. Si no es así, ejecuta chown root:4321 /opt/netapp/aide/kerberos_ccache && chmod 770 /opt/netapp/aide/kerberos_ccache.

El nombre del servidor de archivos o del KDC no se resuelve en el host.

El host no utiliza un servidor DNS que pueda resolver los nombres de tu Active Directory.

Completa Corregir la resolución de nombres.

Los nombres se resuelven en el host, pero no dentro de AI Data Engine.

CoreDNS no se reinició después de cambiar /etc/resolv.conf.

Reinicia CoreDNS. Consulta Corregir la resolución de nombres.

Los nombres externos no se resuelven en AI Data Engine después de configurar tu servidor DNS de Active Directory.

El servidor DNS de Active Directory no reenvía consultas externas.

Comprueba que nslookup <external_fqdn> "${KDC_IP}" devuelva un resultado. Si no es así, pide al administrador de Active Directory que habilite el reenvío de DNS o añade tu servidor DNS original como segundo servidor de nombres en /etc/resolv.conf.

Aparece el error mount error(126).

AI Data Engine no puede leer /etc/krb5.conf.

Comprueba que /etc/krb5.conf exista en el host y que kubectl -n aide exec "${POD}" -- cat /etc/krb5.conf muestre su contenido.

Los cambios en /etc/krb5.conf no surten efecto.

El archivo se sustituyó después de la configuración y AI Data Engine sigue usando el archivo anterior.

Consulta Actualiza el archivo de configuración de Kerberos.

No se encuentra el comando ktutil, kinit o klist.

Las herramientas de cliente de Kerberos no están instaladas en el host.

Instala las herramientas del cliente Kerberos. Consulta Crear los archivos de Kerberos.

El archivo /etc/resolv.conf vuelve a su configuración anterior después de reiniciar.

El administrador de red sobrescribe el archivo.

Evita que el gestor de red sobrescriba la configuración de DNS. Consulta Corregir la resolución de nombres.

Eliminar la configuración de Kerberos

Si ya no escaneas recursos compartidos SMB/CIFS con Kerberos, elimina la fuente de datos y los archivos de Kerberos.

Pasos
  1. Desde la interfaz de usuario de AI Data Engine, elimina la fuente de datos SMB/CIFS que utiliza Kerberos.

  2. Elimina los archivos de Kerberos.

    rm -f /opt/netapp/aide/kerberos_refresher/datasense.keytab
    rm -f /opt/netapp/aide/kerberos_refresher/kerberos_creds.env
    rm -f /opt/netapp/aide/kerberos_ccache/krb5cc_shared
  3. Si ninguna otra aplicación en el host lo usa, elimina /etc/krb5.conf.

  4. Si has modificado la configuración del DNS, restablece la configuración original.

    1. Restaura la copia de seguridad de /etc/resolv.conf.

      cp /etc/resolv.conf.bak /etc/resolv.conf
    2. En RHEL, si has añadido una configuración de NetworkManager, elimínala.

      rm -f /etc/NetworkManager/conf.d/90-dns-none.conf
      systemctl reload NetworkManager
    3. En Ubuntu donde has añadido una configuración de systemd-resolved, elimínala.

      rm -f /etc/systemd/resolved.conf.d/ad-dns.conf
      systemctl restart systemd-resolved
    4. Reinicia CoreDNS.

      export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
      kubectl -n kube-system rollout restart deployment coredns