Kerberos-delegatie voor JDBC-connectors inschakelen

Vanaf versie 2020.2 ondersteunt Tableau Server Kerberos-delegatie voor JDBC-connectors.

Met Kerberos-delegatie kan Tableau Server de Kerberos-referenties van de kijker van een werkmap of weergave gebruiken om een query uit te voeren namens de kijker. Dit is handig in de volgende situaties:

  • U moet weten wie toegang heeft tot de data (de naam van de kijker wordt weergegeven in de toegangslogboeken voor de databron).

  • Uw databron is beveiligd op rijniveau, waarbij verschillende gebruikers toegang hebben tot verschillende rijen.

Ondersteunde databronnen

Tableau ondersteunt JDBC Kerberos Uitvoeren als-verificatie met de volgende databronnen:

  • Oracle
  • PostgreSQL

Als u delegatie configureert met een Oracle-databron met behulp van een JDBC-gebaseerde connector, volgt u de procedure in dit onderwerp. Als alternatief, als de connector die u op Tableau Server gebruikt een native stuurprogramma gebruikt, volgt u de procedure in het Help-onderwerp Kerberos-delegatie inschakelen.

Vereisten

Voor Kerberos-delegatie is Active Directory vereist.

  • Het Tableau Server-informatiearchief moet worden geconfigureerd voor gebruik van LDAP - Active Directory.
  • MIT KDC wordt niet ondersteund.

Opmerking: U hoeft het Uitvoeren als-account niet in te schakelen om als besturingssysteem te fungeren.

Configuratieproces

In dit gedeelte wordt een voorbeeld gegeven van het proces om Kerberos-delegatie in te schakelen.

  1. Tableau Server heeft een Kerberos-serviceticket nodig om te delegeren namens de gebruiker die de aanroep naar de database initieert. U moet een domeinaccount aanmaken dat gebruikt wordt voor het delegeren naar de opgegeven database. Dit account wordt het Uitvoeren als service-account genoemd. In dit onderwerp is de voorbeeldgebruiker geconfigureerd als het Uitvoeren als-account tabsrv@EXAMPLE.COM.

    Het account moet worden geconfigureerd voor delegatie in Active Directory:

    1. Open Active Directory-gebruikers en -computers op een Windows-server die is verbonden met het gebruikersdomein.
    2. Klik op de pagina Eigenschappen voor het Uitvoeren als service-account op het tabblad Delegatie en selecteer Deze gebruiker alleen vertrouwen voor delegering naar opgegeven services en Elk verificatieprotocol gebruiken.
  2. Maak een keytab-bestand voor het Uitvoeren als service-account.

    In het volgende voorbeeld wordt de ktab-tool gebruikt die bij de JDK wordt geleverd. U kunt de tool downloaden op AdoptOpenJDK(Link wordt in een nieuw venster geopend). Wanneer u ktab gebruikt om de keytab te maken, gebruikt u een aanmeldingsprincipal in UPN-formaat (bijvoorbeeld service@EXAMPLE.COM), en geen Service Principal Name (bijvoorbeeld HTTP/service.example.com@EXAMPLE.COM). U kunt ook keytabs genereren met het ktpass-hulpprogramma. In dat geval kunt u beide typen principalnamen gebruiken.

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

    Tableau Server gebruikt het Uitvoeren als service-account en de bijbehorende keytab om te verifiëren en rechtstreeks verbinding te maken met de database.

  3. Kopieer de keytab naar de Tableau Server-datadirectory en controleer of het Uitvoeren als service-account toegang heeft tot het keytab-bestand en het kan lezen. Standaard bevindt de Tableau Server-datadirectory zich op C:\ProgramData\Tableau. Als u Tableau Server uitvoert in een gedistribueerde implementatie, voert u deze stap uit op elk knooppunt in het cluster.

  4. Maak een krb5.conf-bestand en installeer het in C:\Windows op alle Tableau Server-knooppunten.

    Als u al een krb5.ini-bestand op computers in uw organisatie hebt geïmplementeerd, kopieert u dat bestand en gebruikt u het voor Tableau Server. Zie het onderwerp over krb5.conf(Link wordt in een nieuw venster geopend) in de MIT Kerberos-documentatie voor meer informatie.

    Om de locatie van het Kerberos-configuratiebestand te wijzigen, voert u de volgende TSM-opdracht uit:

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

    Hieronder ziet u een voorbeeld van een krb5.conf-bestand. Tableau-ondersteuning kan u niet helpen met het maken van 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. Voer de volgende TSM-opdrachten uit om Kerberos-delegatie in te schakelen, het delegatieserviceaccount in te stellen en het keytab-bestand aan het serviceaccount te koppelen:

    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

    In sommige gevallen kan TSM een foutmelding retourneren waarin het volgende wordt vermeld: --force-keys. Als u deze fout krijgt, voer de opdracht dan opnieuw uit met de --force-keys-parameter toegevoegd aan het argument.

  6. Voer de volgende TSM-opdracht uit om de wijzigingen toe te passen op Tableau Server:

    tsm pending-changes apply

    Als voor de in behandeling zijnde wijzigingen de Server opnieuw moet worden opgestart, geeft de opdracht pending-changes apply een prompt weer om u te laten weten dat de server opnieuw wordt gestart. Deze prompt verschijnt ook als de server is gestopt, maar in dat geval vindt er geen herstart plaats. U kunt de prompt onderdrukken met de optie --ignore-prompt, maar dit verandert niets aan het herstartgedrag. Als opnieuw opstarten niet nodig is voor de wijzigingen, worden de wijzigingen zonder waarschuwing van een prompt toegepast. Zie tsm pending-changes apply voor meer informatie.

Bedankt voor uw feedback.De feedback is verzonden. Dank u wel.