Gestire i segreti del server

Tableau Server deve memorizzare una serie di segreti che utilizza per eseguire varie funzioni, in genere per garantire la sicurezza della comunicazione interna, la comunicazione con altre applicazioni o il sistema operativo, oppure per fornire una comunicazione sicura con i client. In questo contesto, il termine segreto può riferirsi a una password, un token o un’altra stringa usata per autenticare un’entità a un’altra.

Sono disponibili due categorie di segreti per l’esecuzione di Tableau Server. Si differenziano a seconda di come vengono generati i segreti:

  • Segreti generati dagli amministratori. Queste includono le credenziali e i relativi segreti per l’account Utente Esegui come e le credenziali SMTP utilizzate da Tableau Server.
  • Segreti che sono generati automaticamente da vari processi nel sistema. Ad esempio, è obbligatorio un segreto per proteggere la comunicazione tra il Controller Cluster e i processi di ZooKeeper. E sono obbligatorie diverse password per ogni servizio e utente programmatico che comunica con Postgres.

La maggior parte dei segreti sono crittografati a riposo. Quando un segreto è necessario, viene decrittografato in fase di esecuzione.

In questo argomento viene descritto il funzionamento dell’archiviazione dei segreti e le operazioni che devi eseguire per gestire correttamente l’archiviazione dei segreti su Tableau Server.

Informazioni sul funzionamento dell’archiviazione dei segreti

Durante l’installazione, Tableau Server genera e memorizza una chiave master in un archivio delle chiavi Java. La chiave master viene usata per crittografare una chiave di crittografia della configurazione utilizzata nel sistema.

Ogni volta che un nuovo segreto viene creato o aggiornato, il segreto viene crittografato con la chiave di crittografia della configurazione. Il valore criptato viene quindi archiviato con il corrispondente parametro di configurazione in un file YAML sul server. I parametri che contengono un valore crittografato usano il formato, ENC(<encrypted string>)dove <encrypted string> è una stringa con codifica Base64.

In fase di esecuzione, quando è necessario che tu acceda a un determinato segreto, i valori criptati vengono letti in memoria e decriptati con la chiave di crittografia della configurazione.

Nel caso di modifiche in sospeso dove i segreti vengono immessi durante la modifica di una configurazione, l’intera transazione viene crittografata. In questo scenario, dopo aver inserito un segreto e salvato le modifiche in sospeso, questo viene trasmesso al servizio di coordinazione (su SSL crittografato). Il servizio di coordinazione applica la crittografia al segreto e lo archivia fino all’applicazione delle modifiche in sospeso. Quando le modifiche vengono applicate, il segreto (ancora crittografato) viene innalzato alla versione di configurazione corrente.

Tableau Server crittografa i segreti con AES a 256 bit in modalità GCM. Le chiavi utilizzate per l’archiviazione sicura sono diverse dalle chiavi di risorse utilizzate per crittografare le credenziali del database incorporate prima che queste vengano archiviate nel repository.

Chi ha accesso alla chiave master?

In un’installazione predefinita, l’archivio delle chiavi Java per Tableau Server verrà replicato nella cartella /tabsvc/keystores per ogni servizio su quel nodo alla voce /var/opt/tableau/tableau_server/data/tabsvc/config.

Ad esempio,

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

Se stai usando una directory di installazione personalizzata, i file dell’archivio delle chiavi verranno rilevati alla voce

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

Per impostazione predefinita, gli utenti e i gruppi seguenti hanno accesso a questa directory:

  • root
  • tableau (utente)
  • membri del gruppo "tableau"

Importare ed esportare le informazioni di configurazione

Tableau Services Manager introduce la possibilità di importare ed esportare le informazioni di configurazione usando l’tsm settings export.

Nota: questa versione di Tableau Server non supporta il ripristino delle informazioni di configurazione da un backup. Ti consigliamo invece di utilizzare i comandi di esportazione e importazione per eseguire il backup e il ripristino delle informazioni di configurazione.

Mentre i segreti di configurazione vengono crittografati quando memorizzati su disco internamente, quando la configurazione viene esportata in un file, i segreti vengono scritti in un file in testo normale. È compito dell’amministratore adottare misure per proteggere questo file. Sono disponibili diverse opzioni:

  • Scrivi il file in un file system crittografato.
  • Scrivi il file in una directory con restrizioni per utenti o gruppi specifici per le autorizzazioni del file system.
  • Crittografa il file di output.

Proteggere i segreti per le operazioni di importazione ed esportazione

Questa sezione descrive come crittografare l’output di backup. Con questo metodo, creerai una pipe con nome che fornirai come argomento di file, quindi la userai come input per crittografarlo. Il vantaggio è che i segreti non vengono mai scritti su disco in testo normale. Il gpg deve essere disponibile così come una chiave privata. Un esempio di questo metodo è illustrato nella sezione seguente.

L’esempio in questa sezione descrive come gestire i segreti in un computer separato.

Per maggiori informazioni, consulta i riferimenti esterni seguenti:

Esempio: crittografa ed esporta

Di seguito è riportato un esempio di come proteggere il file durante l’esportazione della configurazione.

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

I dettagli di questa operazione sono:

  • Creare un pipe con nome, con accesso limitato dalle autorizzazioni dei file a rw per l’utente corrente.

    mkfifo -m 600 /tmp/secure1

  • Chiama gpg per crittografare i dati inviati dal pipe con nome, eseguendo un processo separato. Esso bloccherà i dati in attesa. Il risultato sarà un file contenente i dati crittografati.

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

  • Chiama tsm per esportare la configurazione, fornendo la pipe con nome come argomento del file.

    tsm settings export -f /tmp/secure1

  • Cancella il pipe con nome.

    rm /tmp/secure1

I dati crittografati si trovano nel file "encrypted.enc".

Esempio: decrittografare e importare

Di seguito è riportato un esempio di come decrittografare e importare la configurazione.

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

I dettagli di questa operazione sono:

  • Creare un pipe con nome, con accesso limitato dalle autorizzazioni dei file a rw per l’utente corrente.

    mkfifo -m 600 /tmp/secure2

  • Decrittografa la configurazione e inviala alla pipe con nome. Metti in secondo piano questo processo separato, si bloccherà in attesa di essere letto.

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

  • Esegui il comando di importazione della configurazione tsm, effettua il login se necessario.

    tsm settings import -f /tmp/secret2

  • Cancella il pipe con nome.

    rm /tmp/secure1

La configurazione in sospeso contiene la configurazione importata.

Esegui le tsm pending-changes apply alle modifiche di commit. Se le modifiche in sospeso richiedono il riavvio del server, il comando pending-changes apply visualizzerà un messaggio per segnalare che verrà eseguito un riavvio. Questo messaggio viene visualizzato anche se il server è stato arrestato, ma in questo caso il riavvio non viene eseguito. Puoi eliminare la richiesta usando l’opzione --ignore-prompt, ma questo non modifica il comportamento del riavvio. Se le modifiche non richiedono un riavvio, vengono applicate senza visualizzare alcun messaggio. Per maggiori informazioni, consulta tsm pending-changes apply.

Nodi cluster

Quando si aggiunge un nuovo nodo al cluster di Tableau Server, dovrai generare il file di configurazione del nodo (tsm topology). Il file di configurazione del nodo contiene una copia dell’archivio chiavi master utilizzato per crittografare i segreti di configurazione.

Importante: ti consigliamo vivamente di adottare misure aggiuntive per proteggere il file di configurazione del nodo durante l’esportazione di un file di configurazione con segreti.

Quando installi e configuri Tableau Server nel nuovo nodo, dovrai specificare il file di configurazione del nodo al comando initialize-tsm. Puoi utilizzare una tecnica simile come descritto in precedenza per decrittografare il contenuto del file precedentemente crittografato e inviarlo tramite una pipe con nome al comando initialize-tsm.

Archiviazione dei segreti della registrazione degli eventi

Gli eventi seguenti relativi all’archiviazione dei segreti vengono registrati:

  • Generazione di nuove chiavi di crittografia
  • Chiave di crittografia attivata o modificata
  • Crittografia di un nuovo valore nel file di configurazione

Per maggiori informazioni sui file di log e su dove vengono archiviati, consulta Lavorare con i file di log.

Gestire i segreti

In qualità di amministratore di Tableau Server, il compito più importante relativo alla memorizzazione dei segreti è quello di aggiornare periodicamente i segreti. In alcuni casi (risoluzione dei problemi del server o controllo) potresti dover recuperare una password.

Per altre operazioni, ad esempio l’aggiornamento di versioni, il backup e il ripristino o l’aggiunta di nuovi nodi a un cluster, come indicato in precedenza, Tableau Server gestisce l’archiviazione dei segreti e i processi correlati automaticamente.

Aggiornare i segreti

Ti consigliamo di aggiornare periodicamente i segreti in base ai criteri di sicurezza dell’azienda.

Per aggiornare la chiave principale e i segreti generati automaticamente, esegui tsm security regenerate-internal-tokens.

Recuperare le password

In alcuni casi, potresti dover recuperare una password per la risoluzione dei problemi o altre operazioni. Ad esempio, potresti aver bisogno delle credenziali utente Postgres generate e crittografate da Tableau Server. In questi casi, puoi eseguire un comando tsm che consenta di recuperare e decrittografare la password.

Per recuperare una password, apri il prompt dei comandi e rilascia un comando tsm configuration get per uno dei parametri indicati nella tabella seguente.

Per recuperare ad esempio una password per l’utente Postgres, digita il comando seguente:

tsm configuration get -k pgsql.readonly_password

Il comando restituirà la password in testo non crittografato:

$ 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

Password per l’utente amministratore Postgres.

Nota: sebbene il parametro di configurazione sia crittografato nei file di configurazione di Tableau (tabsvc.yml, workgroup.yml), questa password viene memorizzata in testo normale nei file utilizzati da SAML.

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

Password per Redis.

Nota: sebbene il parametro di configurazione sia crittografato nei file di configurazione di Tableau (tabsvc.yml, workgroup.yml), la configurazione sarà ancora in testo normale nel file redis.conf utilizzato dall’applicazione Redis. Redis non supporta le password crittografate/protette.

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
Grazie per il tuo feedback.Il tuo feedback è stato inviato. Grazie!