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