Verwalten von Servergeheimnissen

Tableau Server muss bestimmte Geheimnisse zum Ausführen verschiedener Funktionen speichern. Dabei handelt es sich üblicherweise um die Sicherung der internen Kommunikation, die Kommunikation mit anderen Anwendungen oder dem Betriebssystem oder um die Bereitstellung einer sicheren Kommunikation mit Clients. In diesem Kontext kann sich der Begriff Geheimnis auf ein Kennwort, ein Token oder eine andere Zeichenfolge beziehen, die zum Authentifizieren von Entitäten verwendet wird.

Es existieren zwei Kategorien von Geheimnissen, die für die Ausführung von Tableau Server erforderlich sind. Sie unterscheiden sich danach, wie die Geheimnisse generiert werden:

  • Von Administratoren generierte Geheimnisse Dazu zählen Anmeldeinformationen und die zugehörigen Geheimnisse für das Konto "Als Benutzer ausführen" und die von Tableau Server verwendeten SMTP-Anmeldeinformationen.
  • Von verschiedenen Prozessen im System automatisch generierte Geheimnisse Ein Geheimnis ist beispielsweise zum Schutz der Kommunikation zwischen dem Cluster Controller und ZooKeeper-Prozessen erforderlich. Zudem sind für jeden Dienst und programmatischen Benutzer, der mit Postgres kommuniziert, zahlreiche verschiedene Kennwörter erforderlich.

Die meisten Geheimnisse werden im Leerlauf verschlüsselt. Wenn es benötigt wird, erfolgt die Entschlüsselung des Geheimnisses zur Laufzeit.

In diesem Thema werden die Funktion der Geheimnisspeicherung und die Anforderungen an die ordnungsgemäße Verwaltung der Speicherung von Geheimnissen in Tableau Server beschrieben.

Funktionsweise der Geheimnisspeicherung

Bei der Installation generiert und speichert Tableau Server einen Master-Schlüssel in einem Java-Schlüsselspeicher. Der Master-Schlüssel dient der Verschlüsselung eines Verschlüsselungsschlüssels für die Konfiguration, der im gesamten System verwendet wird.

Bei jeder Erstellung oder Aktualisierung eines neuen Geheimnisses wird das Geheimnis mit dem Verschlüsselungsschlüssel für die Konfiguration verschlüsselt. Anschließend wird der verschlüsselte Wert mit dem entsprechenden Konfigurationsparameter in einer YAML-Datei auf dem Server gespeichert. Für Parameter mit einem verschlüsselten Format wird das Format ENC(<encrypted string>) verwendet, wobei die <encrypted string> eine Base64-codierte verschlüsselte Zeichenfolge ist.

Wenn zur Laufzeit der Zugriff auf ein bestimmtes Geheimnis erforderlich ist, werden die verschlüsselten Werte in den Speicher gelesen und mit dem Verschlüsselungsschlüssel für die Konfiguration entschlüsselt.

Bei ausstehenden Änderungen, bei denen bei einer Konfigurationsänderung Geheimnisse eingegeben werden, wird die gesamte Transaktion verschlüsselt. In diesem Szenario wird das Geheimnis nach Eingabe des Geheimnisses und dem anschließenden Speichern der ausstehenden Änderungen an den Koordinationsdienst übertragen (über verschlüsseltes SSL). Der Koordinationsdienst verschlüsselt das Geheimnis und speichert es, bis die ausstehenden Änderungen angewendet sind. Wenn Änderungen angewendet werden, wird das (noch verschlüsselte) Geheimnis zur aktuellen Konfigurationsversion heraufgestuft.

Tableau Server verschlüsselt Geheimnisse mithilfe von 256-Bit-AES im GCM-Modus. Die für die sichere Speicherung verwendeten Schlüssel unterscheiden sich von den Ressourcenschlüsseln, die vor dem Speichern im Repository zum Verschlüsseln der eingebetteten Datenbankanmeldeinformationen verwendet werden.

Wer hat Zugriff auf den Master-Schlüssel?

In einer Standardinstallation wird der Java-Schlüsselspeicher für Tableau Server in den Ordner /var/opt/tableau/tableau_server/data/tabsvc/config für jeden Dienst auf diesem Knoten unter /tabsvc/keystores repliziert.

Beispiel:

/var/opt/tableau/tableau_server/data/tabsvc/config/tabadminagent_<version_number>/tabsvc/keystores/tableauserver.jks.

Bei Verwendung eines benutzerdefinierten Installationsverzeichnisses finden sich die Schlüsselspeicherdateien unter .

<install directory>/tableau_server/data/tabsvc/config/<service name_#.version_number>/tabsvc/keystores

Die folgenden Benutzer und Gruppen haben standardmäßig Zugriff auf dieses Verzeichnis:

  • root
  • tableau (Benutzer)
  • Mitglieder der Gruppe 'tableau'

Importieren und Exportieren von Konfigurationsinformationen

Tableau Services Manager führt die Möglichkeit ein, Konfigurationsinformationen mithilfe von tsm settings export zu importieren und zu exportieren.

Hinweis:Diese Version von Tableau Server unterstützt nicht das Wiederherstellen von Konfigurationsinformationen aus einer Sicherung. Stattdessen wird empfohlen, die Befehle zum Exportieren und Importieren der Konfiguration zum Sichern und Wiederherstellen der Konfigurationsinformationen zu verwenden.

Während Konfigurationsgeheimnisse verschlüsselt werden, wenn sie intern auf dem Datenträger gespeichert werden, wenn die Konfiguration in eine Datei exportiert wird, werden Geheimnisse in die Datei als Nur-Text geschrieben. Es obliegt dem Administrator, Maßnahmen zum Schutz dieser Datei zu ergreifen. Es stehen verschiedene Optionen zur Verfügung:

  • Schreiben Sie die Datei in ein verschlüsseltes Dateisystem.
  • Schreiben Sie die Datei in ein Verzeichnis, das durch Dateisystemberechtigungen auf bestimmte Benutzer oder Gruppen beschränkt ist.
  • Verschlüsseln Sie die Ausgabedatei.

Sichern von Geheimnissen für Import- und Exportvorgänge

In diesem Abschnitt wird beschrieben, wie die Sicherungsausgabe mit PGP verschlüsselt wird. Bei dieser Methode erstellen Sie eine benannte Pipe und geben diese als Dateiargument an. Dies verwenden Sie anschließend als Eingabe, um die Sicherungsausgabe mit GPG zu verschlüsseln. Der Vorteil besteht darin, dass die Geheimnisse niemals in Nur-Text auf die Festplatte geschrieben werden. Es müssen GPG und ein privater Schlüssel vorhanden sein. Ein Beispiel dieser Methode wird im folgenden Abschnitt gezeigt.

Im Beispiel in diesem Abschnitt wird eine Möglichkeit beschrieben, wie Geheimnisse übergeben werden, um sie auf einem separaten Computer zu speichern.

Weitere Informationen finden Sie unter den folgenden externen Verweisen:

Beispiel: Verschlüsseln und Exportieren

Im Folgenden finden Sie ein Beispiel zum Sichern der Datei beim Exportieren der Konfiguration.

mkfifo -m 600 /tmp/secure1 && (gpg --symmetric --batch --yes --passphrase-file ~/.secrets/pgppassphrase.txt --cipher-algo AES256 --output encrypted.enc < /tmp/secure1 &) && tsm settings export -f /tmp/secure1 && rm /tmp/secure1

Vorgangsdetails:

  • Erstellen Sie eine Named Pipe, wobei der Zugriff entsprechend den Dateiberechtigungen für den aktuellen Benutzer auf Lesen und Schreiben begrenzt ist.

    mkfifo -m 600 /tmp/secure1

  • Rufen Sie GPG auf, um die an die Named Pipe gesendeten Daten zu verschlüsseln, und schieben Sie sie in den Hintergrund in einen getrennten Prozess. Dadurch wird das Warten auf Daten blockiert. Dadurch ergibt sich eine Datei, die die verschlüsselten Daten enthält.

    gpg --symmetric --batch --yes --passphrase-file ~/.secrets/pgppassphrase.txt --cipher-algo AES256 --output encrypted.enc < /tmp/secure1 &

  • Rufen Sie TSM auf, um die Konfiguration zu exportieren, und geben Sie die Named Pipe als das Dateiargument an.

    tsm settings export -f /tmp/secure1

  • Löschen Sie die Named Pipe.

    rm /tmp/secure1

Die verschlüsselten Dateien befinden sich in der Datei "encrypted.enc".

Beispiel: Entschlüsseln und Importieren

Im Folgenden finden Sie ein Beispiel zum Entschlüsseln und Importieren der Konfiguration.

mkfifo -m 600 /tmp/secret2 && (gpg --decrypt --batch --yes --passphrase-file ~/.secrets/pgppassphrase.txt encrypted.enc > /tmp/secret2 &) && tsm settings import -f /tmp/secret2 && rm /tmp/secret2

Vorgangsdetails:

  • Erstellen Sie eine Named Pipe, wobei der Zugriff entsprechend den Dateiberechtigungen für den aktuellen Benutzer auf Lesen und Schreiben begrenzt ist.

    mkfifo -m 600 /tmp/secure2

  • Entschlüsseln Sie die Konfiguration, und senden Sie sie an die Named Pipe. Versetzen Sie diese in den Hintergrund in einen separaten Prozess. Dadurch wird das Warten, gelesen zu werden, blockiert.

    gpg --decrypt --batch --yes --passphrase-file ~/.secrets/pgppassphrase.txt encrypted.enc > /tmp/secret2 &

  • Führen Sie den Befehl zum Importieren der TSM-Konfiguration aus, und melden Sie sich dabei bei Bedarf an.

    tsm settings import -f /tmp/secret2

  • Löschen Sie die Named Pipe.

    rm /tmp/secure1

Die ausstehende Konfiguration enthält die importierte Konfiguration.

Führen Sie tsm pending-changes apply aus, um die Änderungen durchzuführen. 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.

Clusterknoten

Beim Hinzufügen eines neuen Knotens zu Ihrem Tableau Server-Cluster müssen Sie zunächst die Knotenkonfigurationsdatei (tsm topology) konfigurieren. Die Knotenkonfigurationsdatei enthält eine Kopie der Master-Keystore-Datei, die zum Verschlüsseln der Konfigurationsgeheimnisse verwendet wird.

Wichtig: Beim Export sollte eine Konfigurationsdatei mit Geheimnissen unbedingt durch zusätzliche Maßnahmen geschützt werden.

Beim Installieren und Konfigurieren von Tableau Server auf dem neuen Knoten müssen Sie die Knotenkonfigurationsdatei im Befehl initialize-tsm bereitstellen. Sie können eine ähnliche Technik zu der oben beschriebenen zum Entschlüsseln der Inhalte der zuvor verschlüsselten Datei verwenden und sie mittels einer Named Pipe an den Befehl initialize-tsm senden.

Ereignisprotokollierung für den Geheimnisspeicher

Es werden die folgenden Ereignisse protokolliert, die mit der Speicherung von Geheimnissen in Zusammenhang stehen:

  • Generierung neuer Verschlüsselungsschlüssel
  • Rollup oder Änderung des Verschlüsselungsschlüssels
  • Verschlüsselung eines neuen Werts in der Konfigurationsdatei

Weitere Informationen zu Protokolldateien und zu deren Speicherplatz finden Sie unter Arbeiten mit Protokolldateien.

Verwalten von Geheimnissen

Bezüglich des Geheimnisspeichers ist die wichtigste Aufgabe eines Tableau Server-Administrators das regelmäßige Aktualisieren der Geheimnisse. In einigen Fällen (Problembehebung des Servers oder Audit) müssen Sie möglicherweise ein Kennwort abrufen.

Bei anderen Vorgängen (beispielsweise bei Versionsupgrades, Sicherungen und Wiederherstellungen oder beim Hinzufügen neuer Knoten zu einem Cluster) erledigt Tableau Server die Speicherung der Geheimnisse und die zugehörigen Prozesse wie zuvor erwähnt automatisch.

Aktualisieren von Geheimnissen

Sie sollten Geheimnisse gemäß der Sicherheitsrichtlinie Ihres Unternehmens regelmäßig aktualisieren.

Zur Aktualisierung des Hauptschlüssels und der automatisch generierten Geheimnisse führen Sie tsm security regenerate-internal-tokens aus.

Abrufen von Kennwörtern

In einigen Fällen müssen Sie für die Problembehebung oder andere Vorgänge möglicherweise ein Kennwort abrufen. Beispielsweise benötigen Sie u. U. die schreibgeschützten Postgres-Benutzeranmeldeinformationen, die von Tableau Server generiert und verschlüsselt werden. In diesen Fällen können Sie einen TSM-Befehl ausführen, mit dessen Hilfe das Kennwort für Sie abgerufen und entschlüsselt wird.

Öffnen Sie zum Abrufen eines Kennworts die Eingabeaufforderung, und stellen Sie den Befehl tsm configuration get für einen der in der folgenden Tabelle aufgeführten Parameter aus.

Geben Sie beispielsweise zum Abrufen eines Kennworts für den schreibgeschützten Postgres-Benutzer den folgenden Befehl ein:

tsm configuration get -k pgsql.readonly_password

Der Befehl gibt das Kennwort als Klartext zurück:

$ tsm configuration get -k pgsql.readonly_password

password

Configuration ParameterDescription
clustercontroller.zookeeper.passwordPassword for cluster controller to connect to zookeeper.
indexandsearchserver.client.password Password for logging into Index and Search Server.
indexandsearchserver.ssl.admin.cert.bytes Admin certificate that is used for administrative access to the Index and Search Server. The admin certificate is used to generate the node certificate.
indexandsearchserver.ssl.admin.key.file_bytes Certificate key for administrative access to the Index and Search Server.
indexandsearchserver.ssl.node.cert.bytes Certificate that is used for Index and Search Server node-to-node communication.
indexandsearchserver.ssl.node.key.file_bytes Certificate key that is used for Index and Search Server node-to-node communication.
indexandsearchserver.ssl.root.cert.bytes Certificate that is used to sign the admin and node certificates . This certificate is used by TSM for health check and by NLP to connect to Index and Search Server.
indexandsearchserver.ssl.root.key.file_bytes Certificate key for root certificate.
filestore.zookeeper.passwordPassword for filestore to connect to zookeeper.
hyper.connection.init_password Password used to initialize the Hyper database for user tableau_internal_user and is then used for connecting to Hyper.
jdbc.passwordPassword for the rails Postgres user.
kms.persistent_store A collection of master encryption keys (MEKs) used by the Key Management System.
maestro.rserve.password Password for connecting to an external Rserve instance used by Tableau Prep Conductor for running flows that have nodes with R scripts.
maestro.tabpy.passwordPassword for connecting to an external TabPy (Python server) instance used by Tableau Prep Conductor for running flows that have nodes with Python scripts.
oauth.google.client_secretClient secret of the Google Cloud Platform account.
oauth.quickbooks.consumer_secretConsumer secret of the Intuit developer account.
oauth.salesforce.client_secretClient secret of the Salesforce developer account.
pgsql.adminpassword

Kennwort für den tblwgadmin Postgres-Benutzer

Hinweis: Obwohl der Konfigurationsparameter in den Konfigurationsdateien von Tableau (tabsvc.yml, workgroup.yml) verschlüsselt ist, wird dieses Kennwort als Klartext in Dateien gespeichert, die vom SAML verwendet werden.

pgsql.readonly_passwordPassword for the readonly Postgres user.
pgsql.remote_passwordPassword for the tableau Postgres user.
redis.password

Kennwort für Redis.

Hinweis: Obwohl der Konfigurationsparameter in den Konfigurationsdateien von Tableau (tabsvc.yml, workgroup.yml) verschlüsselt ist, erfolgt die Konfiguration dennoch in Form von Klartext in der Datei "redis.conf", die von der Redis-Anwendung verwendet wird. Redis unterstützt keine verschlüsselten/gesicherten Kennwörter.

servercrashupload.proxy_server_passwordPassword for custom proxy server used to upload crash reports.
service.runas.passwordPassword of the Run As users. Stored temporarily.
ssl.cert.file_bytes The content of one of the three SSL certificate files uploaded by the administrator. The certificate files are required to enable secure external connections to Tableau Server.
ssl.chain.file_bytes The chain file(s) for the certificates uploaded by the administrator for external SSL.
ssl.key.file_bytesKey file(s) for the certificates uploaded by the administrator for external SSL.
ssl.key.passphraseOptional passphrase used to protect the external SSL key.
svcmonitor.notification.smtp.passwordSMTP Server password supplied by the administrator through TabConfig.exe.
tabadminservice.passwordPassword for the service that allows server admins to download log files through the web interface.
vizportal.openid.client_secretThis is the password ("provider client secret") used for OpenID Connect SSO.
vizqlserver.external_proxy_password Password used to authenticate to an external proxy.
wgserver.domain.passwordPassword used to bind to Active Directory.
wgserver.saml.key.passphrasePassphrase used to access the PKCS#8 SAML key file.
zookeeper.tsm.passwordPassword that TSM uses to connect to Zookeeper coordination service
Vielen Dank für Ihr Feedback!Ihr Feedback wurde erfolgreich übermittelt. Vielen Dank.