Stratégie de sécurité du contenu
Tableau Server prend en charge la norme CSP (Content Security Policy, ou stratégie de sécurité du contenu). CSP est conçu comme une couche supplémentaire de sécurité pour les scripts inter-sites et autres attaques malveillantes basées sur le Web. CSP est implémenté comme un en-tête de réponse HTTP qui vous permet de spécifier les emplacements d’où les ressources externes, par exemple des scripts ou des images, peuvent être chargées en toute sécurité.
Consultez le site Web de Mozilla(Le lien s’ouvre dans une nouvelle fenêtre) pour plus d’information sur CSP.
Configurer et activer CSP
Vous pouvez configurer et activer CSP à l’aide de la commande Options tsm configuration set. Si vous exécutez Tableau Server dans un déploiement distribué, exécutez ces commandes sur le nœud initial du cluster. La configuration sera appliquée à tout le cluster après l’exécution de tsm pending-changes apply.
Étape 1 : Définir les directives par défaut
Tableau Server inclut l’ensemble de directives par défaut dans la table ci-dessous.
Pour définir une directive, utilisez la syntaxe tsm suivante :
tsm configuration set -k content_security_policy.directive.<directive_name> -v "<value>"
Par exemple, pour définir la directive connect_src
, exécutez la commande suivante :
tsm configuration set -k content_security_policy.directive.connect_src -v "* unsafe-inline"
Option | Valeur par défaut | Description |
---|---|---|
content_security_policy.directive.default_src | ‘none’ | Fait office de commande de secours pour les autres directives de récupération. Valeurs valides pour |
content_security_policy.directive.connect_src | * | Limite les URL qui peuvent être chargées à l’aide d’interfaces de script. Valeurs valides pour |
content_security_policy.directive.script_src | * | Spécifie les sources valides pour JavaScript. Valeurs valides pour |
content_security_policy.directive.style_src | * ‘unsafe-inline’ | Spécifie les sources valides pour les feuilles de style. Valeurs valides pour |
content_security_policy.directive.img_src | * data: | Spécifie les sources valides pour les images et les icônes favorites. Valeurs valides pour |
content_security_policy.directive.font_src | * data: | Spécifie les sources valides pour les polices chargées à l’aide de @font-face. Valeurs valides pour |
content_security_policy.directive.frame_src | * data: | Spécifie les sources valides pour le chargement de contextes de navigation imbriqués à l’aide d’éléments tels que <frame> et <iframe>. Valeurs valides pour |
content_security_policy.directive.object_src | data: | Spécifie les sources valides pour les éléments <object>, <embed>, et <applet>. Valeurs valides pour |
content_security_policy.directive.report_uri | /vizql/csp-report | Demande à l’utilisateur de signaler les tentatives d’infraction de la norme CSP. Ces rapports d’infraction consistent en des documents JSON envoyés via une demande HTTP POST à l’URI spécifiée. Valeurs valides pour |
Étape 2 : Ajouter des directives supplémentaires (facultatif)
Les directives par défaut incluses avec Tableau Server sont un sous-ensemble des directives prises en charge par CSP.
Pour une liste des directives CSP prises en charge, consultez https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy(Le lien s’ouvre dans une nouvelle fenêtre).
Vous pouvez ajouter des directives à l’ensemble par défaut existant, en ajoutant la nouvelle directive dans l’espace de nom content_security_policy.directive. Vous devez inclure le paramètre --force-keys
lorsque vous ajoutez de nouvelles directives. La syntaxe est la suivante :
tsm configuration set -k content_security_policy.directive.<new_directive_name> -v "<value>" --force-keys
Par exemple, pour ajouter la directive worker-src
(Le lien s’ouvre dans une nouvelle fenêtre), exécutez la commande suivante :
tsm configuration set -k content_security_policy.directive.worker-src -v "none" --force-keys
Étape 3 : Spécifier des directives de rapport uniquement (facultatif)
Vous pouvez configurer CPS pour que certaines directives fassent l’objet de rapports et que d’autres soient appliquées. Lorsque vous définissez content_security_policy.enforce_enabled sur « true », toutes les directives sont appliquées (même si content_security_policy.report_only_enable est également défini sur sur « true »).
Pour spécifier des directives comme « rapport uniquement » et non pas appliquées, ajoutez les directives à l’espace de noms report_only_directive. Vous devez inclure le paramètre --force-keys
lorsque vous ajoutez de nouvelles directives. La syntaxe est la suivante :
tsm configuration set -k content_security_policy.report_only_directive.<directive_name> -v "<value>" --force-keys
Par exemple, pour que la directive script_src
fasse l’objet d’un rapport uniquement, exécutez la commande suivante :
tsm configuration set -k content_security_policy.report_only_directive.script_src -v " http://*.example.com" --force-keys
Étape 4 : Activer CSP sur Tableau Server
Après avoir configuré les directives, activez CSP sur Tableau Server.
Les options suivantes sont utilisées pour activer le mode Application ou Rapport uniquement pour les directives que vous avez définies.
Option | Valeur par défaut | Description |
---|---|---|
content_security_policy.enforce_enabled | false | Ajoute un en-tête CSP à toutes les demandes afin que toute infraction soit appliquée par le navigateur. |
content_security_policy.report_only_enabled | true | Ajoute un en-tête CSP à toutes les demandes afin que toutes les infractions soit enregistrées dans nos journaux vizql-client, mais non appliquées par le navigateur. |
Pour activer l’application des directives CSP que vous avez spécifiées, exécutez la commande suivante :
tsm configuration set -k content_security_policy.enforce_enabled -v true
Étape 5 : Exécuter tsm pending-changes apply
Une fois que vous avez fini de configurer CSP, exécutez tsm pending-changes apply.
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.
Afficher le rapport CSP
Pour afficher les infractions à CSP pour une visualisation donnée, chargez la visualisation dans un navigateur qui inclut des outils de développeur. Cet exemple utilise le navigateur Chrome.
Chargez une visualisation de test comportant des infractions et hébergée sur le déploiement Tableau Server où vous avez configuré CSP.
Entrez
CTRL+Shift+I
pour ouvrir les outils de développeur dans Chrome.Cliquez sur l’onglet Réseau.
Dans le champ Filtre, entrez
csp-report
, puis cliquez sur Trouver tout.S’il n’y a pas d’infractions, la recherche ne renvoie pas de rapports CSP.
S’il y a des infractions, cliquez sur l’onglet En-têtes dans le volet Résultats et faites défiler jusqu’en bas pour afficher Charge utile de la demande.