HTTP 响应标头
- 版本 :2022.1 及更高版本
Tableau Server 支持 OWASP Secure Headers Project(链接在新窗口中打开) 中指定的某些响应标头。
Tableau Server 支持 OWASP Secure Headers Project 中指定的某些响应标头。
本主题介绍如何为 Tableau Server 配置以下响应标头:
HTTP 严格传输安全性 (HSTS)
Referrer-Policy
X-Content-Type-Options
X-XSS-Protection
Tableau Server 还支持内容安全策略 (CSP) 标准。本主题未讨论 CSP 配置。请参见内容安全策略。
配置响应标头
所有响应标头都是使用 tsm configuration set 命令配置的。
配置完响应标头后,运行 tsm pending-changes apply。
如果待定更改需要重新启动服务器,pending-changes apply
命令将显示一个提示,告知您将进行重新启动。即使服务器已停止,此提示也会显示,但在这种情况下不会重新启动。您可以使用 --ignore-prompt
选项隐藏提示,但这样做不会改变重新启动行为。如果更改不需要重新启动,则会在不提示的情况下应用更改。有关详细信息,请参阅tsm pending-changes apply。
HTTP 严格传输安全性 (HSTS)
HSTS 强制连接到 Tableau Server 的客户端使用 HTTPS 进行连接。有关详细信息,请参见 OWASP 条目 HTTP 严格传输安全性 (HSTS)。
选项
gateway.http.hsts
默认值:
false
HTTP 严格传输安全性 (HSTS) 头强制浏览器在启用它的域上使用 HTTPS。
gateway.http.hsts_options
默认值:
"max-age=31536000"
默认情况下,会为一年(31536000 秒)期间设置 HSTS 策略。此时间段指定浏览器将通过 HTTPS 访问服务器的时间量。
默认值:
true
若要从 Tableau Server 发送的响应中排除 Referrer-Policy 标头,请将此值设置为
false
。默认值:
no-referrer-when-downgrade
此选项定义 Tableau Server 的引用页策略。您可以指定 OWASP 网页上的 Referrer-Policy 表中列出的任何策略值字符串。
gateway.http.x_content_type_nosniff
默认值:
true
默认情况下,系统使用此选项将 X-Content-Type-Options HTTP 头设置为“nosniff”。
gateway.http.x_xss_protection
默认值:
true
默认情况下,系统使用此选项启用了 X-XSS-Protection 响应头。
Referrer-Policy
从 2019.2 开始,Tableau Server 包括配置 Referrer-Policy HTTP 标头行为的功能。此策略启用时的默认行为是将包括所有“secure as”连接的来源 URL(策略 no-referrer-when-downgrade
)。在以前的版本中,Tableau Server 发送的响应中未包括 Referrer-Policy 标头。有关 Referrer-Policy 支持的各种策略选项的详细信息,请参见 OWASP 条目 Referrer-Policy。
选项
gateway.http.referrer_policy_enabled
gateway.http.referrer_policy
X-Content-Type-Options
X-Content-Type-Options 响应 HTTP 头指定 Content-Type 头中的 MIME 类型不应由浏览器更改。在某些情况下,如果未指定 MIME 类型,则浏览器可能会通过评估有效负载的特征来尝试确定 MIME 类型。然后浏览器将相应地显示内容。这个过程被称为“嗅探”。误解 MIME 类型可能会导致安全漏洞。
有关详细信息,请参见 OWASP 条目 X-Content-Type-Options。
选项
X-XSS-Protection
HTTP X-XSS-Protection 响应头会发送到浏览器以启用跨站点脚本 (XSS) 保护。在用户在浏览器中禁用 XSS 保护的情况下,X-XSS-Protection 响应头会覆盖配置。
有关详细信息,请参见 OWASP 条目 X-XSS-Protection。
选项
此部分中的其他文章
Tableau Server 支持内容安全策略 (CSP) 标准。CSP 旨在为抵御跨站点脚本攻击和其他基于 Web 的恶意攻击提供一层额外的安全保护。CSP 以 HTTP 响应头的形式实现,它允许您指定可从何处安全地加载诸如脚本和图像等外部资源。
有关 CSP 的详细信息,请参见 Mozilla 网站。
配置和启用 CSP
使用 tsm configuration set 选项 命令来配置和启用 CSP。如果在分布式部署中运行 Tableau Server,请在群集中的初始节点上运行这些命令。配置将在您运行 tsm pending-changes apply 之后在整个群集中应用。
步骤 1:设置默认指令
Tableau Server 包括下表中的一组默认指令。
若要设置指令,请使用以下 tsm 语法:
tsm configuration set -k content_security_policy.directive.
例如,若要设置 connect_src
指令,请运行以下命令:
tsm configuration set -k content_security_policy.directive.connect_src -v "* unsafe-inline"
选项 | 默认值 | 描述 |
---|---|---|
content_security_policy.directive.default_src | “none” | 充当其他拉取指令的后备指令。 |
content_security_policy.directive.connect_src | * | 限制可使用脚本接口加载的 URL。 |
content_security_policy.directive.script_src | * | 指定 JavaScript 的有效来源。 |
content_security_policy.directive.style_src | *“unsafe-inline” | 指定样式表的有效来源。 |
content_security_policy.directive.img_src | * 数据: | 指定图像和网站图标的有效来源。 |
content_security_policy.directive.font_src | * 数据: | 指定使用 @font-face 加载的字体的有效来源。 |
content_security_policy.directive.frame_src | * 数据: | 指定使用诸如 和 |
content_security_policy.directive.object_src | 数据: | 指定 |
content_security_policy.directive.report_uri | /vizql/csp-report | 指示用户代理报告尝试违反 CSP 的次数。这些违例报告由通过 HTTP POST 请求发送到指定 URI 的 JSON 文档组成。 |
步骤 2:添加其他指令(可选)
Tableau Server 附带的默认指令是 CSP 支持的指令的子集。
有关支持的 CSP 指令的完整列表,请转到 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy。
通过在 content_security_policy.directive 命名空间中添加新指令,您可以向现有默认指令集中添加指令。添加新指令时,您必须包括 --force-keys
参数。语法如下:
tsm configuration set -k content_security_policy.directive.
例如,若要添加 worker-src
指令,请运行以下命令:
tsm configuration set -k content_security_policy.directive.worker-src -v "none" --force-keys
步骤 3:指定仅报告的指令(可选)
您可以将 CPS 配置为报告某些指令和执行其他指令。将 content_security_policy.enforce_enabled 设置为 true 时,则执行所有指令(即使 content_security_policy.report_only_enable 也设置为 true)。
若要将指令指定为“仅报告”而不执行,请将指令添加到 report_only_directive 命名空间。添加新指令时,您必须包括 --force-keys
参数。语法如下:
tsm configuration set -k content_security_policy.report_only_directive.
例如,若要仅报告 script_src
指令,请运行以下命令:
tsm configuration set -k content_security_policy.report_only_directive.script_src -v " http://*.example.com" --force-keys
步骤 4:在 Tableau Server 上启用 CSP
配置了指令之后,在 Tableau Server 上启用 CSP。
以下选项用于为您设置的指令启用执行或仅报告模式。
选项 | 默认值 | 描述 |
---|---|---|
content_security_policy.enforce_enabled | false | 向所有请求中添加 CSP 标头,以便浏览器将实施任何违例。 |
content_security_policy.report_only_enabled | true | 向所有请求中添加 CSP 标头,以便在 vizql-client 日志中记录任何违例,但浏览器不实施这些违例。 |
若要执行您已指定的 CSP 指令,请运行以下命令
tsm configuration set -k content_security_policy.enforce_enabled -v true
步骤 5:运行 tsm pending-changes apply
配置完 CSP 后,运行 tsm pending-changes apply。
如果待定更改需要重新启动服务器,pending-changes apply
命令将显示一个提示,告知您将进行重新启动。即使服务器已停止,此提示也会显示,但在这种情况下不会重新启动。您可以使用 --ignore-prompt
选项隐藏提示,但这样做不会改变重新启动行为。如果更改不需要重新启动,则会在不提示的情况下应用更改。有关详细信息,请参阅tsm pending-changes apply。
查看 CSP 报告
若要查看给定可视化项的 CSP 违例,请在包括开发者工具的浏览器中加载该可视化项。此示例使用 Chrome 浏览器。
加载一个包含违例情况的测试可视化项,该可视化项托管在您在其中配置了 CSP 的 Tableau Server 部署上。
输入
CTRL+Shift+I
,在 Chrome 中打开开发者工具。单击“Network”(网络)选项卡。
在“Filter”(筛选器)字段中,输入
csp-report
,然后单击“Find All”(查找全部)。如果没有违例,搜索将不会返回任何 CSP 报告。
如果有违例,请单击结果窗格的“Headers”(标题)选项卡,并滚动到底部来查看“Request Payload”(请求有效负载)。