Habilitar la delegación de Kerberos para conectores JDBC

Desde la versión 2020.2, Tableau Server es compatible con Kerberos para la delegación con conectores JDBC.

La delegación de Kerberos habilita Tableau Server para usar las credenciales de Kerberos del visor de un libro de trabajo o vista para ejecutar una consulta en nombre del visor. Es útil en las siguientes situaciones:

  • Debe saber quién accede a los datos (el nombre del visor se muestra en los registros de acceso de la fuente de datos).

  • La fuente de datos tiene seguridad de nivel de fila, con la que distintos usuarios tienen acceso a distintas filas.

Fuentes de datos admitidas

Tableau es compatible con la autenticación RunAs de JDBC Kerberos con las siguientes fuentes de datos:

  • Oracle
  • PostgreSQL

Si está configurando la delegación con una fuente de datos de Oracle mediante un conector basado en JDBC, siga el procedimiento de este tema. Como alternativa, si el conector que quiere ejecutar en Tableau Server usa un controlador nativo, siga el procedimiento que aparece en la página de ayuda Habilitar la delegación de Kerberos.

Requisitos

La delegación de Kerberos requiere Active Directory.

  • Para usar LDAP - Active Directory es necesario configurar el almacén de información de Tableau Server.
  • No se admite MIT KDC.

Nota: No es necesario habilitar la cuenta de ejecución para que actúe como el sistema operativo.

Proceso de configuración

En esta sección se muestra un ejemplo del proceso para habilitar la delegación de Kerberos.

  1. Tableau Server necesitará un vale de servicio de Kerberos para delegar en nombre del usuario que inicia la llamada a la base de datos. Debe crear una cuenta de dominio que se utilizará para delegar a la base de datos dada. Esta cuenta se denomina la "cuenta Ejecutar como servicio". En este tema, el usuario de ejemplo configurado como cuenta de Ejecutar como es tabsrv@EXAMPLE.COM.

    La cuenta debe configurarse para la delegación en Active Directory:

    1. En un servidor Windows Server que esté conectado al dominio del usuario, abra Usuarios y equipos de Active Directory.
    2. En la página Propiedades de la cuenta Ejecutar como servicio, haga clic en la pestaña Delegación y seleccione Confiar en este usuario para la delegación solo a los servicios especificados y Usar cualquier protocolo de autenticación.
  2. Cree un archivo keytab para la cuenta Ejecutar como servicio.

    En el siguiente ejemplo se utiliza la herramienta ktab que se proporciona con el JDK. Puede descargar la herramienta en AdoptOpenJDK(El enlace se abre en una ventana nueva). Cuando utilice ktab para crear una keytab, utilice un nombre principal de registro en formato UPN (por ejemplo, service@EXAMPLE.COM) y no un nombre de entidad de seguridad de servicio (por ejemplo, HTTP/service.example.com@EXAMPLE.COM). También puede generar keytabs con la utilidad ktpass, en cuyo caso puede usar cualquier estilo de nombre principal.

    <JDK_HOME>/bin/ktab -k E:/tmp/tabsrv.keytab -a tabsrv@EXAMPLE.COM

    Tableau Server usará la cuenta Ejecutar como servicio y el archivo keytab asociado para realizar la autenticación y una conexión directa con la base de datos.

  3. Copie la keytab en el directorio de datos de Tableau Server y verifique que la cuenta de servicio Ejecutar como puede acceder y leer el archivo keytab. El directorio de registro predeterminado de Tableau Server es C:\ProgramData\Tableau. Si ejecuta Tableau Server en una implementación distribuida, ejecute este paso en cada nodo del clúster.

  4. Cree un archivo krb5.conf, e instálelo en C:\Windows en todos los nodos de Tableau Server.

    Si ya tiene un archivo krb5.ini implementado en los equipos de su organización, copie ese archivo y úselo para Tableau Server. Para obtener más información, consulte la documentación de Kerberos de MIT, krb5.conf(El enlace se abre en una ventana nueva).

    Para cambiar la ubicación del archivo de configuración de Kerberos, ejecute el siguiente comando de TSM:

    tsm configuration set -k native_api.kerberos_config_path --force-keys -v "C:\temp\krb5.ini"

    El siguiente es un ejemplo de un archivo krb5.conf. El equipo de soporte de Tableau no puede ayudar a crear krb5.conf.

    [libdefaults]
    forwardable = true
    default_realm = EXAMPLE.COM
    default_tkt_enctypes = rc4-hmac
    default_tgs_enctypes = rc4-hmac
    
    [realms]
    EXAMPLE.COM = {
    kdc = kdc.example.com
    admin_server = kdc.example.com
    }
    
    [domain_realm]
    .example.com = EXAMPLE.COM
    example.com = EXAMPLE.COM
  5. Ejecute los siguientes comandos de TSM para habilitar la delegación de Kerberos, configurar la cuenta de servicio de delegación y asociar el archivo keytab con la cuenta de servicio:

    tsm configuration set -k wgserver.delegation.enabled -v true
    tsm configuration set -k native_api.datasource_impersonation_runas_principal -v tabsrv@EXAMPLE.COM
    tsm configuration set -k native_api.datasource_impersonation_runas_keytab_path -v <path-to-file>kerberos.keytab
    tsm configuration set -k native_api.protocol_transition_a_d_short_domain -v false
    tsm configuration set -k native_api.protocol_transition_uppercase_realm -v true

    En algunos casos, TSM puede devolver un error en el que se mencione --force-keys. Si le aparece este error, vuelva a ejecutar el comando con el parámetro --force-keys anexado al argumento.

  6. Ejecute el siguiente comando de TSM para aplicar los cambios en Tableau Server:

    tsm pending-changes apply

    Si los cambios pendientes requieren un reinicio del servidor, el comando pending-changes apply mostrará un mensaje para informarle de que se producirá un reinicio. Este mensaje aparece aunque el servidor esté detenido, pero en ese caso no se reiniciará. Puede suprimir el mensaje con la opción --ignore-prompt, pero no se modificará el comportamiento de reinicio. Si los cambios no requieren un reinicio, se aplicarán sin ningún mensaje. Para obtener más información, consulte tsm pending-changes apply.

¡Gracias por sus comentarios!