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
. 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 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 | 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_password | Password for the readonly Postgres user. |
pgsql.remote_password | Password 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_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 |