Aktivieren der Kerberos-Delegierung für JDBC-Connectoren

Ab Version 2020.2 unterstützt Tableau Server die Kerberos-Delegierung für JDBC-Connectoren.

Die Kerberos-Delegierung ermöglicht Tableau Server die Verwendung der Kerberos-Anmeldeinformationen der Person, die eine Arbeitsmappe oder Ansicht anzeigt, um für den Anzeigenden eine Abfrage auszuführen. Diese Option ist in den folgenden Situationen hilfreich:

  • Sie müssen wissen, wer auf die Daten zugreift (der Name der anzeigenden Person wird in den Zugriffsprotokollen für die Datenquelle angegeben).

  • Für Ihre Datenquelle ist Sicherheit auf Zeilenebene festgelegt, das heißt, unterschiedliche Benutzer können auf unterschiedliche Zeilen zugreifen.

Unterstützte Datenquellen

Tableau unterstützt die JDBC-Kerberos-RunAs-Authentifizierung mit den folgenden Datenquellen:

  • Oracle
  • PostgreSQL

Wenn Sie die Delegation mit einer Oracle-Datenquelle unter Verwendung eines JDBC-basierten Connectors konfigurieren, sollten Sie der in diesem Thema beschriebenen Vorgehensweise folgen. Wenn der Connector, den Sie auf Tableau Server ausführen, einen systemeigenen Treiber verwendet, befolgen Sie alternativ das Verfahren im Hilfethema Aktivieren der Kerberos-Delegierung.

Anforderungen

Für die Kerberos-Delegierung ist Active Directory erforderlich.

  • Der Tableau Server-Informationsspeicher muss für die Verwendung von "LDAP – Active Directory" konfiguriert werden.
  • MIT KDC wird nicht unterstützt.

Hinweis: Sie müssen das Konto "Agieren als" nicht aktivieren, um als Betriebssystem zu agieren.

Konfigurationsprozess

Dieser Abschnitt bietet ein Beispiel für den Vorgang zur Aktivierung der Kerberos-Delegation.

  1. Für Tableau Server ist ein Kerberos-Service-Ticket erforderlich, um im Namen des Benutzers zu delegieren, der den Aufruf der Datenbank initiiert. Sie müssen ein Domänenkonto erstellen, das für die Delegierung an die jeweilige Datenbank verwendet wird. Dieses Konto wird als "Ausführen als"-Dienstkonto bezeichnet. In diesem Thema ist der Beispielbenutzer, der für das Konto "Agieren als" konfiguriert ist, tabsrv@EXAMPLE.COM.

    Das Konto muss für die Delegierung in Active Directory konfiguriert werden:

    1. Öffnen Sie auf einem Windows-Server, der mit der Benutzerdomäne verbunden ist, "Active Directory-Benutzer und -Computer".
    2. Klicken Sie auf der Seite Eigenschaften für das Konto "Agieren als" auf die Registerkarte Delegierung und wählen Sie die Optionen Diesen Benutzer nur bei der Delegierung an bestimmte Dienste als vertrauenswürdig einstufen und Beliebiges Authentifizierungsprotokoll verwenden aus.
  2. Erstellen Sie eine Keytab-Datei für das "Ausführen als"-Dienstkonto.

    Im folgenden Beispiel wird das im JDK bereitgestellte Ktab-Tool verwendet. Sie können das Tool unter AdoptOpenJDK(Link wird in neuem Fenster geöffnet) herunterladen. Verwenden Sie bei der Verwendung der Ktab zum Erstellen der Keytab-Datei einen Prinzipal für die Anmeldung im UPN-Format (beispielsweise service@EXAMPLE.COM), aber keinen Dienstprinzipalnamen (beispielsweise HTTP/service.example.com@EXAMPLE.COM). Darüber hinaus können Sie Keytabs mit dem Ktpass-Dienstprogramm generieren. In diesem Fall können Sie beide Prinzipalnamensformate verwenden.

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

    Tableau Server verwendet das "Ausführen als"-Dienstkonto und die zugewiesene Keytab-Datei für die Authentifizierung und Herstellung einer direkten Verbindung zur Datenbank.

  3. Kopieren Sie die Keytab in das Tableau Server-Datenverzeichnis und stellen Sie sicher, dass das "Als Dienst ausführen"-Konto auf die Keytab-Datei zugreifen und diese lesen kann. Das Tableau Server-Datenverzeichnis befindet sich standardmäßig unter C:\ProgramData\Tableau. Wenn Sie Tableau Server in einer verteilten Bereitstellung ausführen, sollten Sie diesen Schritt auf jedem Knoten im Cluster durchführen.

  4. Erstellen Sie eine krb5.conf-Datei und installieren Sie sie auf allen Tableau Server-Knoten unter C:\Windows.

    Wenn auf den Computern Ihrer Organisation bereits krb5.ini-Dateien bereitgestellt sind, sollten Sie diese Datei kopieren und für Tableau Server verwenden. Weitere Informationen finden Sie im MIT Kerberos Documentation-Thema krb5.conf(Link wird in neuem Fenster geöffnet).

    Führen Sie den folgenden Befehl aus, um den Speicherort der Kerberos-Konfigurationsdatei zu ändern:

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

    Im Folgenden finden Sie ein Beispiel für eine krb5.conf-Datei. Der Tableau-Support kann beim Erstellen von krb5.conf-Dateien keine Unterstützung bereitstellen.

    [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. Führen Sie die folgenden TSM-Befehle aus, um die Kerberos-Delegierung zu aktivieren, das Dienstkonto für die Delegierung festzulegen und dem Dienstkonto die keytab-Datei zuzuweisen:

    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 einigen Fällen gibt TSM möglicherweise einen Fehler mit dem Hinweis --force-keys zurück. Wenn Sie diesen Fehler erhalten, führen Sie den Befehl erneut aus, und hängen Sie den Parameter --force-keys an das Argument an.

  6. Führen Sie den folgenden TSM-Befehl aus, um die Änderungen auf Tableau Server anzuwenden:

    tsm pending-changes apply

    Wenn die ausstehenden Änderungen einen Neustart des Servers erfordern, zeigt der Befehl pending-changes apply eine Meldung an, um Sie darüber zu informieren, dass ein Neustart stattfinden wird. Diese Meldung wird auch angezeigt, wenn der Server angehalten ist. In diesem Fall erfolgt jedoch kein Neustart. Sie können diese Meldung mithilfe der Option --ignore-prompt unterdrücken, dies ändert jedoch nichts an dem Neustartverhalten. Wenn die Änderungen keinen Neustart erfordern, werden die Änderungen ohne Meldung angewendet. Weitere Informationen finden Sie unter tsm pending-changes apply.

Vielen Dank für Ihr Feedback!Ihr Feedback wurde erfolgreich übermittelt. Vielen Dank.