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. 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 Parameter | Description |
---|---|
clustercontroller.zookeeper.password | Password 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.password | Password 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.password | Password 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.password | Password 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_secret | Client secret of the Google Cloud Platform account. |
oauth.quickbooks.consumer_secret | Consumer secret of the Intuit developer account. |
oauth.salesforce.client_secret | Client 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_password | Password for the readonly Postgres user. |
pgsql.remote_password | Password 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_password | Password for custom proxy server used to upload crash reports. |
service.runas.password | Password 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_bytes | Key file(s) for the certificates uploaded by the administrator for external SSL. |
ssl.key.passphrase | Optional passphrase used to protect the external SSL key. |
svcmonitor.notification.smtp.password | SMTP Server password supplied by the administrator through TabConfig.exe. |
tabadminservice.password | Password for the service that allows server admins to download log files through the web interface. |
vizportal.openid.client_secret | This 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.password | Password used to bind to Active Directory. |
wgserver.saml.key.passphrase | Passphrase used to access the PKCS#8 SAML key file. |
zookeeper.tsm.password | Password that TSM uses to connect to Zookeeper coordination service |