Gérer les secrets de serveur
Tableau Server doit stocker un certain nombre de secrets qu’il utilise pour effectuer diverses fonctions, notamment sécuriser la communication interne, communiquer avec d’autres applications ou le système d’exploitation, ou mettre en œuvre une communication sécurisée avec les clients. Dans ce contexte, le terme secret peut désigner un mot de passe, un jeton ou toute autre chaîne utilisée pour authentifier une entité sur une autre.
Deux catégories de secrets sont nécessaires pour exécuter Tableau Server. Elles diffèrent selon la façon dont les secrets sont générés :
- Secrets générés par les administrateurs. Il s’agit notamment des informations d’identification et des secrets associés pour le compte Exécuter en tant qu’utilisateur et des informations d’identification SMTP utilisées par Tableau Server.
- Secrets générés automatiquement par différents processus du système. Par exemple, un secret est nécessaire pour protéger la communication entre les processus Cluster Controller et ZooKeeper. Et plusieurs mots de passe différents sont requis pour chaque service et utilisateur programmatique qui communique avec Postgres.
La plupart des secrets sont chiffrés au repos. Lorsqu’un secret est nécessaire, il est déchiffré au moment de l’exécution.
Cette rubrique explique comment fonctionne le stockage de secrets et décrit les mesures à prendre pour gérer correctement le stockage de secrets sur Tableau Server.
Fonctionnement des secrets
Lors de l’installation, Tableau Server génère et stocke une clé principale dans le keystore Java. La clé principale sert à chiffrer une clé de chiffrement de la configuration qui s’applique à l’ensemble du système.
Chaque fois qu’un nouveau secret est créé ou mis à jour, il est chiffré avec la clé de chiffrement de la configuration. La valeur chiffrée est alors enregistrée avec son paramètre de configuration correspondant dans un fichier YAML sur le serveur. Les paramètres contenant une valeur chiffrée utilisent le format ENC(<encrypted string>)
, où <encrypted string>
est une chaîne chiffrée en Base64.
Au moment de l’exécution, lorsqu’un secret donné doit être utilisé, les valeurs chiffrées sont lues dans la mémoire et déchiffrées avec la clé de chiffrement de la configuration.
Dans le cas de modifications en attente, lorsque des secrets sont entrés lors d’un changement de configuration, l’ensemble de la transaction est crypté. Dans ce scénario, après que vous avez saisi un secret et enregistré le changement en attente, le secret est transmis au service de coordination (via SSL crypté). Le service de coordination crypte le secret et le stocke jusqu’à ce que les modifications en attente soient appliquées. Lorsque des modifications sont appliquées, le secret (toujours crypté) est promu à la version de configuration actuelle.
Tableau Server crypte les secrets avec AES 256 bits en mode GCM. Les clés utilisées pour le stockage sécurisé sont différentes de celles utilisées pour chiffrer les informations d’identification de la base de données intégrée avant qu’elles ne soient stockées dans le référentiel.
Qui a accès à la clé principale ?
Dans une installation par défaut, le magasin de clés Java pour Tableau Server est installé dans le dossier \ProgramData\Tableau\Tableau Server\data\tabsvc\crypto\keystores\
. Si vous avez installé Tableau sur un lecteur autre que le lecteur système, le chemin d’accès est <install drive>:\Tableau\Tableau Server\data\tabsvc\crypto\keystores\
. Par défaut, les comptes suivants ont accès à ce répertoire :
- Compte Exécuter en tant qu’utilisateur (si configuré)
- Compte Windows local prédéfini par NetworkService
- Compte Windows local prédéfini par LocalSystem
- Membres du groupe Administrateurs d’ordinateurs
Importer et exporter les informations de configuration
Tableau Services Manager introduit une fonction d’importation et d’exportation des informations de configuration à l’aide de la commande tsm settings export.
Remarque : cette version de Tableau Server ne prend pas en charge la restauration des informations de configuration à partir d’une sauvegarde. Au lieu de cela, nous vous recommandons d’utiliser les commandes de configuration d’exportation et d’importation pour sauvegarder et restaurer les informations de configuration.
Tandis que les secrets de configuration sont cryptés lors d’un stockage sur le disque en interne, si la configuration est exportée dans un fichier, les secrets sont écrits dans le fichier en texte ordinaire. C’est l’administrateur qui doit prendre les mesures nécessaires pour protéger ce fichier. Plusieurs options sont disponibles :
- Écrivez le fichier sur un système de fichiers crypté.
- Écrivez le fichier sur un répertoire qui est limité à des utilisateurs ou des groupes spécifiques selon les autorisations du système de fichiers.
- Cryptez le fichier de sortie.
Sécurisation des secrets pour les opérations d’importation et d’exportation
Utilisez un ensemble d’outils tiers, par exemple OpenSSL, pour crypter la sortie de sauvegarde.
Nœuds de cluster
Lorsque vous ajoutez un nouveau nœud à votre cluster Tableau Server, vous devez d’abord générer le fichier de configuration de nœud (tsm topology). Le fichier de configuration de nœud contient une copie du fichier keystore principal utilisé pour le cryptage des secrets de configuration.
Important : Nous vous recommandons vivement de prendre des mesures supplémentaires pour sécuriser le fichier de configuration du nœud lors de l’exportation d’un fichier de configuration contenant des secrets.
Lorsque vous installez et configurez Tableau Server sur le nouveau nœud, vous devez fournir le fichier de configuration de nœud à la commande initialize-tsm
.
Journalisation des événements de stockage de secrets
Les événements suivants en rapport avec le stockage de secrets sont enregistrés dans le journal :
- Génération de nouvelles clés de chiffrement
- Annulation ou modification d’une clé de chiffrement
- Chiffrement d’une nouvelle valeur dans le fichier de configuration
Pour plus d’informations sur les fichiers journaux et leur emplacement de stockage, consultez Travailler avec des fichiers journaux.
Gestion des secrets
En tant qu’administrateur de Tableau Server, la tâche la plus importante liée au stockage des secrets est leur mise à jour périodique. Dans certains cas (dépannage ou audit du serveur), vous serez peut-être amené à récupérer un mot de passe.
Pour d’autres opérations, comme la mise à niveau de versions, la sauvegarde et la restauration ou l’ajout de nouveaux nœuds à un cluster, comme indiqué précédemment, Tableau Server gère automatiquement le stockage des secrets et les processus associés.
Mise à jour des secrets
Vous devez mettre à jour les secrets de manière régulière, conformément à la politique de sécurité de votre entreprise.
Pour mettre à jour la clé principale et les secrets générés automatiquement, exécutez tsm security regenerate-internal-tokens.
Récupération de mots de passe
Vous pourrez être amené à récupérer des mots de passe dans le cadre d’activités de dépannage ou d’autres opérations. Par exemple, il vous faudra peut-être récupérer les informations d’identification d’utilisateurs Postgres en lecture seule qui sont générées et chiffrées par Tableau Server. Dans ces cas, vous pouvez exécuter une commande tsm qui récupérera et déchiffrera les mots de passe.
Pour récupérer un mot de passe, ouvrez l’invite de commande et exécutez une commande tsm configuration get
pour l’un des paramètres répertoriés dans le tableau ci-dessous.
Par exemple, pour récupérer le mot de passe d’un utilisateur Postgres en lecture seule, entrez la commande suivante :
tsm configuration get -k pgsql.readonly_password
La commande renvoie le mot de passe en texte clair :
$ 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 | Mot de passe pour l’utilisateur Postgres tblwgadmin. Remarque : bien que le paramètre de configuration soit crypté dans les fichiers de configuration de Tableau (tabsvc.yml, workgroup.yml), ce mot de passe est stocké en texte ordinaire dans les fichiers utilisés par SAML. |
pgsql.readonly_password | Password for the readonly Postgres user. |
pgsql.remote_password | Password for the tableau Postgres user. |
redis.password | Mot de passe pour Redis. Remarque : bien que le paramètre de configuration soit crypté dans les fichiers de configuration de Tableau (tabsvc.yml, workgroup.yml), la configuration continue d’être en texte ordinaire dans le fichier redis.conf utilisé par l’application Redis. Redis ne prend pas en charge les mots de passe cryptés/sécurisés. |
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 |