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 keystore Java pour Tableau Server est répliqué dans le dossier /tabsvc/keystores pour chaque service sur ce nœud sous /var/opt/tableau/tableau_server/data/tabsvc/config.

Par exemple,

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

Si vous utilisez un répertoire d’installation personnalisé, les fichiers keystore sont disponibles sous

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

Par défaut, les utilisateurs et les groupes suivants ont accès à ce répertoire :

  • root
  • tableau (utilisateur)
  • membres du groupe « tableau »

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

Cette section décrit comment appliquer un cryptage PGP à la sortie de sauvegarde. Avec cette méthode, créez un canal nommé et fournissez-le en tant qu’argument de fichier, puis utilisez-le comme entrée pour le cryptage gpg. L’avantage est que les secrets ne sont jamais écrits sur le disque en texte ordinaire. gpg doit être disponible, ainsi qu’une clé privée. La section suivante présente un exemple de cette méthode.

L’exemple de cette section décrit une manière de traiter les secrets de manière à les stocker sur un ordinateur séparé.

Pour obtenir davantage d’informations, consultez les références externes suivantes :

Exemple : décrypter et exporter

Voici un exemple de sécurisation du fichier lors de l’exportation de la configuration.

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

Voici les détails de cette opération :

  • Créez un canal nommé avec un accès limité à rw par les autorisations de fichiers pour l’utilisateur actuel.

    mkfifo -m 600 /tmp/secure1

  • Appelez gpg pour crypter les données envoyées au canal nommé, en mettant l’opération en arrière-plan en tant que processus séparé. Il est bloqué dans l’attente des données. Le résultat sera un fichier contenant les données cryptées.

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

  • Appelez tsm pour exporter la configuration, en fournissant le canal nommé comme argument de fichier.

    tsm settings export -f /tmp/secure1

  • Supprimez le canal nommé.

    rm /tmp/secure1

Les données cryptées se trouvent dans le fichier "encrypted.enc."

Exemple : décrypter et importer

Voici un exemple de décryptage et d’importation de la configuration.

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

Voici les détails de cette opération :

  • Créez un canal nommé avec un accès limité à rw par les autorisations de fichiers pour l’utilisateur actuel.

    mkfifo -m 600 /tmp/secure2

  • Décryptez la configuration et envoyez-la au canal nommé. Mettez l’opération en arrière-plan en tant que processus séparé. Il sera bloqué dans l’attente d’être lu.

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

  • Exécutez la commande d’importation de configuration tsm, en vous connectant comme nécessaire.

    tsm settings import -f /tmp/secret2

  • Supprimez le canal nommé.

    rm /tmp/secure1

La configuration en attente contient la configuration importée.

Exécutez tsm pending-changes apply pour appliquer les modifications. Si les modifications en attente nécessitent un redémarrage du serveur, la commande pending-changes apply affichera une invite pour vous informer qu’un redémarrage va avoir lieu. Cette invite s’affiche même si le serveur est arrêté, mais dans ce cas, il n’y a pas de redémarrage. Vous pouvez supprimer l’invite à l’aide de l’option --ignore-prompt, mais cela ne modifiera pas le comportement de redémarrage. Si les modifications ne nécessitent pas de redémarrage, les modifications sont appliquées sans invite. Pour plus d’informations, consultez tsm pending-changes apply.

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. Vous pouvez utiliser une technique similaire comme décrit ci-dessus pour décrypter le contenu du fichier précédemment crypté et l’envoyer via un tuyau nommé à 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 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

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_passwordPassword for the readonly Postgres user.
pgsql.remote_passwordPassword 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_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
Merci de vos commentaires !Avis correctement envoyé. Merci