Hantera serverhemligheter

Tableau Server behöver lagra ett antal hemligheter som används för att utföra olika funktioner, t.ex. för att skydda intern kommunikation, för att kommunicera med andra program eller operativsystemet eller för att skydda kommunikationen med klienter. I den här kontexten kan hemligheten vara ett lösenord, en token eller en annan sträng som används för att autentisera en entitet mot en annan.

Det finns två kategorier med hemligheter som krävs för att köra Tableau Server. Skillnaden mellan dem ligger i hur hemligheterna genereras.

  • Hemligheter genereras av administratörer. Exempel på dessa hemligheter är inloggningsuppgifter och associerade hemligheter för ”Kör som”-användarkontot och SMTP-inloggningsuppgifterna som används av Tableau Server.
  • Hemligheter som genereras automatiskt av olika processer i systemet. Till exempel krävs en hemlighet för att skydda kommunikationen mellan Cluster Controller- och ZooKeeper-processerna. Och ett antal olika lösenord krävs för varje tjänst och programmeringsanvändare som kommunicerar med Postgres.

De flesta hemligheter krypteras i vila. När en hemlighet behövs avkrypteras den i samband med körningen.

Det här avsnittet beskriver hur hemligheter fungerar och vad du behöver göra för att hantera lagringen av hemligheter i Tableau Server.

Förstå hur lagringen av hemligheter fungerar

Under installationen genererar och lagrar Tableau Server en huvudnyckel i ett Java-nyckelarkiv. Huvudnyckeln används för att kryptera en konfigurationskrypteringsnyckel som används i hela systemet.

När en ny hemlighet skapas eller uppdateras krypteras hemligheten med konfigurationskrypteringsnyckeln. Det krypterade värdet lagras sedan med motsvarande konfigurationsparameter i en YAML-fil på servern. Parametrar som innehåller ett krypterat värde har formatet ENC(<encrypted string>), där <encrypted string> är en Base64-kodad krypterad sträng.

När en hemlighet behövs vid körtillfället läses de krypterade värdena in i minnet och avkrypteras med konfigurationskrypteringsnyckeln.

Om det finns väntande ändringar och du anger hemligheter i samband med en konfigurationsändring krypteras hela transaktionen. När du har angett hemligheten och sparar den väntande ändringen skickas hemligheten till samordningstjänsten (via krypterad SSL). Samordningstjänsten krypterar hemligheten och lagrar den tills de väntande ändringarna tillämpas. När ändringarna tillämpas uppgraderas hemligheten (som fortfarande är krypterad) till den senaste konfigurationsversionen.

Tableau Server krypterar hemligheter med 256-bit AES i GCM-läge. Nycklarna som används för säker lagring skiljer sig från resursnycklarna som används för att kryptera inbäddade databasinloggningsuppgifter innan de lagras på lagringsplatsen.

Vem kan komma åt huvudnyckeln?

I en standardinstallation replikeras Java-nyckelarkivet för Tableau Server till mappen /tabsvc/keystores för varje tjänst på noden under /var/opt/tableau/tableau_server/data/tabsvc/config.

Exempel:

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

Om du använder en anpassad installationskatalog hittar du filerna för nyckelarkivet under

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

Som standard har följande användare och grupper åtkomst till den här katalogen:

  • rot
  • tableau (användare)
  • medlemmar i gruppen ”tableau”.

Importera och exportera konfigurationsinformation

Med Tableau Services Manager kan du importera och exportera konfigurationsinformation med export av tsm-inställningar.

Obs! I den här versionen av Tableau Server går det inte att återställa konfigurationsinformation från en säkerhetskopia. I stället rekommenderar vi att du använder export- och importkommandona för att säkerhetskopiera och återställa konfigurationsinformation.

Konfigurationshemligheter krypteras när de lagras internt på en disk, men när konfigurationen exporteras till en fil skrivs hemligheterna till filen i klartext. Det är administratörens ansvar att skydda den här filen. Du kan välja mellan flera olika alternativ:

  • Skriv filen till ett krypterat filsystem.
  • Skriv filen till en katalog som endast specifika användare eller grupper med behörighet till filsystemet kan komma åt.
  • Kryptera utdatafilen.

Skydda hemligheter vid import- och exportåtgärder

Det här avsnittet beskriver hur du krypterar den resulterande säkerhetskopian med PGP. Med den här metoden skapar du en namngiven pipa som du använder som filargument och använder sedan detta som indata till gpg för att kryptera den. Fördelen är att hemligheterna aldrig skrivs till disken i klartext. gpg och en privat nyckel måste vara tillgängliga. Ett exempel på den här metoden finns i avsnittet nedan.

Exemplet i det här avsnittet beskriver ett sätt att hantera hemligheter genom att lagra dem på en separat dator.

Mer information finns i följande externa referenser.

Exempel: kryptera och exportera

Följande exempel illustrerar hur du skyddar filen när du exporterar konfigurationen.

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

Så här ser processen ut:

  • Skapa en namngiven pipa med begränsad läs- och skrivåtkomst för den aktuella användaren.

    mkfifo -m 600 /tmp/secure1

  • Anropa gpg för att kryptera data som skickas till den namngivna pipan och kör processen separat i bakgrunden, så att den inte blockerar andra processer när den väntar på data. Resultatet är en fil med krypterade data.

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

  • Anropa tsm för att exportera konfigurationen och ange den namngivna pipan som filargument.

    tsm settings export -f /tmp/secure1

  • Ta bort den namngivna pipan.

    rm /tmp/secure1

Krypterade data finns i filen ”encrypted.enc”.

Exempel: avkryptera och importera

Följande exempel illustrerar hur du avkrypterar och importerar konfigurationen.

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

Så här ser processen ut:

  • Skapa en namngiven pipa med begränsad läs- och skrivåtkomst för den aktuella användaren.

    mkfifo -m 600 /tmp/secure2

  • Avkryptera konfigurationen och skicka den till den namngivna pipan. Kör processen separat i bakgrunden så att den inte blockerar andra processer när den väntar på att bli läst.

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

  • Kör import-kommandot för tsm-konfigurationen och logga in om det behövs.

    tsm settings import -f /tmp/secret2

  • Ta bort den namngivna pipan.

    rm /tmp/secure1

Den väntande konfigurationen innehåller den importerade konfigurationen.

Checka in ändringarna genom att köra tsm pending-changes apply. Om de väntande ändringarna kräver att servern startas om visar kommandot pending-changes apply en kommandotolk så att du vet att en omstart kommer att ske. Kommandotolken visas även om servern stoppas, men i så fall sker ingen omstart. Du kan utelämna tolken med alternativet --ignore-prompt, men det påverkar inte omstartsbeteendet. Om ändringarna inte kräver omstart används de utan någon kommandotolk. Du hittar mer information i tsm pending-changes apply.

Klusternoder

När du lägger till en ny nod i Tableau Server-klustret måste du först generera konfigurationsfilen för noden (tsm topology). Konfigurationsfilen för noden innehåller en kopia av den primära nyckelarkivfilen som används för att kryptera konfigurationshemligheterna.

Viktigt: Vi rekommenderar starkt att du vidtar ytterligare åtgärder för att skydda konfigurationsfilen för noden när du exporterar en konfigurationsfil med hemligheter.

När du installerar och konfigurerar Tableau Server på den nya noden måste du ange konfigurationsfilen för noden i kommandot initialize-tsm. Du kan använda en liknande metod som den ovan för att avkryptera innehållet i filen som tidigare krypterades och skicka den via en namngiven pipa till kommandot initialize-tsm.

Händelseloggning för lagring av hemligheter

Följande händelser som rör lagringen av hemligheter loggas:

  • Genereringen av nya krypteringsnycklar.
  • Krypteringsnycklar förnyas eller ändras.
  • Krypteringen av ett nytt värde i konfigurationsfilen.

Mer information om loggfiler och var de lagras finns i Arbeta med loggfiler.

Hantera hemligheter

Som Tableau Server-administratör är den viktigaste uppgiften när det gäller lagringen av hemligheter att regelbundet uppdatera hemligheterna. I vissa fall (felsökning eller granskning av servrar) kan du behöva hämta ett lösenord.

När det gäller andra åtgärder, som att uppgradera versioner, säkerhetskopiera och återställa eller lägga till nya noder i ett kluster, hanterar Tableau Server (som du sett ovan) lagringen av hemligheter och relaterade processer automatiskt.

Uppdatera hemligheter

Du bör uppdatera hemligheter med jämna mellanrum, baserat på företagets säkerhetspolicy.

Du kan uppdatera huvudnyckeln och automatiskt genererade hemligheter genom att köra tsm security regenerate-internal-tokens.

Hämta lösenord

I vissa fall kan du behöva hämta ett lösenord för felsökning eller för andra åtgärder. Du kan till exempel behöva readonly-inloggningsuppgifterna för Postgres som genereras och krypteras av Tableau Server. I dessa fall kan du köra ett tsm-kommando som hämtar och dekrypterar lösenordet åt dig.

Du kan hämta ett lösenord genom att öppna kommandotolken och köra ett tsm configuration get-kommando för någon av parametrarna som anges i tabellen nedan.

Om du till exempel vill hämta ett lösenord för en readonly-användare i Postgres skriver du följande kommando:

tsm configuration get -k pgsql.readonly_password

Kommandot returnerar lösenordet i klartext:

$ 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

Lösenord för tblwgadmin-användaren i Postgres.

Obs! Även om konfigurationsparametern är krypterad i Tableaus konfigurationsfiler (tabsvc.yml och workgroup.yml) så lagras det här lösenordet i klartext i filer som används av SAML.

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

Lösenord för Redis.

Obs! Även om konfigurationsparametern är krypterad i Tableaus konfigurationsfiler (tabsvc.yml och workgroup.yml) så lagras konfigurationen i klartext i redis.conf-filen som används av Redis-programmet. Redis stöder inte krypterade/skyddade lösenord.

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
Tack för din feedback!Din feedback har skickats in. Tack!