Administrar secretos del servidor

Tableau Server necesita almacenar varios secretos que usa para realizar diferentes funciones, como proteger las comunicaciones internas, comunicarse con otras aplicaciones o con el sistema operativo, o proporcionar una comunicación segura con los clientes. En este contexto, el término secreto puede hacer referencia a una contraseña, un token u otra cadena que se use para autenticar una entidad en otra.

Hay dos categorías de secretos que se necesitan para ejecutar Tableau Server. Se diferencian en la forma en que se generan los secretos:

  • Secretos generados por los administradores. Son credenciales y secretos asociados de la cuenta Ejecutar como usuario y las credenciales SMTP usadas por Tableau Server.
  • Secretos generados automáticamente por diferentes procesos en el sistema. Por ejemplo, se necesita un secreto para proteger la comunicación entre los procesos de ZooKeeper y el controlador del clúster. También pueden ser diferentes contraseñas necesarias para cada servicio y usuario de programación que se comunica con PostgreSQL.

La mayoría de los secretos están cifrados mientras están en reposo. Cuando se necesita un secreto, se descifra en tiempo de ejecución.

En este tema se describe cómo funciona el almacenamiento de los secretos y lo que necesita realizar para administrar correctamente el almacenamiento de los secretos en Tableau Server.

Información sobre el funcionamiento del almacenamiento de secretos

Durante la instalación, Tableau Server genera y almacena una clave maestra en un almacén de claves de Java. La clave maestra se usa para cifrar una clave de cifrado de configuración que se usa en todo el sistema.

Al crear o actualizar un secreto, este se cifra con la clave de cifrado de configuración. A continuación, el valor cifrado se almacena con el parámetro de configuración correspondiente en un archivo YAML en el servidor. Los parámetros que contienen un valor cifrado están en el formato ENC(<encrypted string>), donde <encrypted string> es una cadena cifrada con codificación Base64.

En tiempo de ejecución, cuando se necesita obtener acceso a un secreto específico, los valores cifrados se leen en la memoria y se descifran con la clave de cifrado de configuración.

Si hubiera cambios pendientes, en los que los secretos se introducen durante un cambio de configuración, toda la transacción se cifra. En este caso, después de introducir un secreto y guardar el cambio pendiente, el secreto se transmite al Servicio de coordinación (mediante SSL cifrado). El Servicio de coordinación cifra el secreto y lo almacena hasta que se aplican los cambios pendientes. Cuando se aplican los cambios, el secreto (aún cifrado) se promueve a la versión de configuración actual.

Tableau Server cifra los secretos con AES de 256 bits en el modo GCM. Las claves usadas para el almacenamiento seguro son distintas de las claves de activos que se usan para cifrar las credenciales de bases de datos incrustadas antes de almacenarlas en el repositorio.

¿Quién tiene acceso a la clave maestra?

En una instalación predeterminada, el almacén de claves Java de Tableau Server se replicará en la carpeta /tabsvc/keystores para cada servicio de dicho nodo en /var/opt/tableau/tableau_server/data/tabsvc/config.

Por ejemplo:

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

Si utiliza un directorio de instalación personalizado, los archivos del almacén de claves estarán en

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

De forma predeterminada, los siguientes usuarios y grupos tienen acceso a este directorio:

  • root
  • tableau (usuario)
  • miembros del grupo "tableau"

Información de configuración de la importación y la exportación

Tableau Services Manager introduce la capacidad de importar y exportar información de configuración con tsm settings export.

Nota: Esta versión de Tableau Server no admite la restauración de la información de configuración a partir de una copia de seguridad. Se recomienda utilizar los comandos de configuración de exportación e importación para hacer una copia de seguridad de la información de configuración y restaurarla.

Mientras los secretos de configuración se cifran cuando se almacenan en el disco de manera interna, al exportar la configuración a un archivo, los secretos se escriben en el archivo con texto plano. Es decisión del administrador tomar medidas para proteger este archivo. Hay una serie de opciones disponibles:

  • Escribir el archivo en un sistema de archivos cifrados.
  • Escribir el archivo en un directorio restringido a determinados usuarios o grupos por permisos del sistema de archivos.
  • Cifre el archivo de salida.

Proteger los secretos para las operaciones de importación y exportación

En esta sección se describe cómo cifrar mediante PGP la copia de seguridad de salida. De esta forma, creará una canalización con nombre y deberá proporcionarla como argumento del archivo que luego utilizará como entrada para cifrarlo mediante GPG. La ventaja reside en que los secretos nunca se escriben en el disco con texto plano. GPG debe estar disponible, así como también una clave privada. En la siguiente sección se muestra un ejemplo de este método.

En el ejemplo de esta sección se describe un método para manipular los secretos para almacenarlos en un equipo aparte.

Consulte las siguientes referencias externas para obtener más información:

Ejemplo: cifrado y exportación

A continuación se muestra un ejemplo de cómo proteger el archivo al exportar la configuración.

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

Los detalles de esta operación son:

  • Cree una canalización con nombre que tenga acceso limitado mediante permisos de archivo de rw para el usuario actual.

    mkfifo -m 600 /tmp/secure1

  • Llame a gpg para cifrar los datos enviados a la canalización, colocándola en segundo plano en un proceso independiente. Quedará bloqueada mientras esté pendiente de recibir datos. El resultado será un archivo que contendrá los datos cifrados.

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

  • Llame a tsm para exportar la configuración, indicando la canalización como argumento del archivo.

    tsm settings export -f /tmp/secure1

  • Elimine la canalización con nombre.

    rm /tmp/secure1

Los datos cifrados están en el archivo "encrypted.enc".

Ejemplo: descifrado e importación

A continuación se muestra un ejemplo de cómo descifrar e importar la configuración.

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

Los detalles de esta operación son:

  • Cree una canalización con nombre que tenga acceso limitado mediante permisos de archivo de rw para el usuario actual.

    mkfifo -m 600 /tmp/secure2

  • Descifre la configuración y envíela a la canalización. Colóquela en segundo plano en un proceso independiente; quedará bloqueada mientras esté pendiente de leer.

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

  • Ejecute el comando de importación tsm configuration (inicie la sesión si es necesario).

    tsm settings import -f /tmp/secret2

  • Elimine la canalización con nombre.

    rm /tmp/secure1

La configuración pendiente contiene la configuración importada.

Ejecute tsm pending-changes apply para confirmar los cambios. Si los cambios pendientes requieren un reinicio del servidor, el comando pending-changes apply mostrará un mensaje para informarle de que se producirá un reinicio. Este mensaje aparece aunque el servidor esté detenido, pero en ese caso no se reiniciará. Puede suprimir el mensaje con la opción --ignore-prompt, pero no se modificará el comportamiento de reinicio. Si los cambios no requieren un reinicio, se aplicarán sin ningún mensaje. Para obtener más información, consulte tsm pending-changes apply.

Nodos de clúster

Al añadir un nodo nuevo al clúster de Tableau Server, primero deberá generar el archivo de configuración del nodo (tsm topology). El archivo de configuración de nodo contiene una copia del archivo de almacén de claves maestro empleado para cifrar los secretos de configuración.

Importante: Se recomienda encarecidamente que tome medidas adicionales para proteger el archivo de configuración del nodo para exportar un archivo de configuración con secretos.

Al instalar y configurar Tableau Server en el nodo nuevo, deberá proporcionar el archivo de configuración del nodo en el comando initialize-tsm. Puede emplear una técnica parecida, como se ha descrito anteriormente, para descifrar el contenido del archivo cifrado y enviarlo al comando initialize-tsm a través de una canalización.

Registro de eventos del almacenamiento de secretos

Quedan registrados los siguientes eventos relacionados con el almacenamiento de secretos:

  • Generar nuevas claves de cifrado
  • La clave de cifrado se implementa o cambia
  • Cifrar un nuevo valor en el archivo de configuración

Para obtener más información sobre los archivos de registro y dónde se almacenan, consulte Trabajar con archivos de registro.

Administración de secretos

Como administrador de Tableau Server, la tarea más importante relacionada con el almacenamiento de secretos es actualizar los secretos de forma periódica. En algunos casos (como la solución de problemas del servidor o auditorías), puede que necesite recuperar una contraseña.

Para otras operaciones, como actualizar versiones, realizar copias de seguridad y restauración, o añadir nodos a un clúster (como se indicó anteriormente), Tableau Server administra automáticamente el almacenamiento de secretos y los procesos relacionados.

Actualización de secretos

Debe actualizar los secretos de forma periódica, según la directiva de seguridad de su empresa.

Para actualizar la clave maestra y los secretos generados automáticamente, ejecute tsm security regenerate-internal-tokens.

Recuperar contraseñas

En algunos casos, puede que necesite recuperar una contraseña para solucionar un problema o realizar otras operaciones. Por ejemplo, puede que necesite las credenciales de usuario readonly de PostgreSQL generadas y cifradas por Tableau Server. En estos casos, puede ejecutar un comando tsm que recuperará y descifrará la contraseña automáticamente.

Para recuperar una contraseña, abra un símbolo del sistema y ejecute el comando tsm configuration get para uno de los parámetros que se indican en la tabla siguiente.

Por ejemplo, para recuperar una contraseña para el usuario readonly de PostgreSQL, escriba el comando siguiente:

tsm configuration get -k pgsql.readonly_password

El comando indicará la contraseña en texto no cifrado:

$ 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

Contraseña para el usuario de Postgres tblwgadmin.

Nota: Aunque el parámetro de configuración esté cifrado en los archivos de configuración de Tableau (tabsvc.yml y workgroup.yml), esta contraseña se almacena en texto sin formato en otros archivos utilizados por SAML.

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

Contraseña de Redis.

Nota: Aunque el parámetro de configuración esté cifrado en los archivos de configuración de Tableau (tabsvc.yml y workgroup.yml), la configuración se mantendrá en formato de texto plano en el archivo redis.conf utilizado por la aplicación Redis. Redis no admite las contraseñas cifradas ni protegidas.

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
¡Gracias por sus comentarios!Sus comentarios se han enviado correctamente. ¡Gracias!