內容安全性原則

Tableau Server 支援內容安全性原則 (CSP) 標準。CSP 是針對跨網站指令碼和其他惡意網路攻擊的額外安全性層級。CSP 會實施為 HTTP 回應標頭,可讓您指定可安全載入如指令碼和影像等外部資源的位置。

有關 CSP 的詳情,請參閱 Mozilla 網站(連結在新視窗開啟)

設定和啟用 CSP

CSP 使用 tsm configuration set 選項 命令設定和啟用。如果在分散式部署中執行 Tableau Server,請在叢集的初始節點上執行以下命令。執行 tsm pending-changes apply 之後,設定將在整個叢集上套用。

步驟 1:設定預設指示詞

Tableau Server 包含下表中的預設指示詞集合。

若要設定指示詞,請使用以下 tsm 語法:

tsm configuration set -k content_security_policy.directive.<directive_name> -v "<value>"

例如,若要設定 connect_src 指示詞,請執行以下命令:

tsm configuration set -k content_security_policy.directive.connect_src -v "* unsafe-inline"

選項預設值

說明

content_security_policy.directive.default_src‘none’

作為其他擷取指示詞的遞補。

default_src 的有效值(連結在新視窗開啟)

content_security_policy.directive.connect_src*

限制可使用指令碼介面載入的 URL。

connect_src 的有效值(連結在新視窗開啟)

content_security_policy.directive.script_src*

指定 JavaScript 的有效來源。

script_src 的有效值(連結在新視窗開啟)

content_security_policy.directive.style_src* ‘unsafe-inline’

指定樣式表的有效來源。

style_src 的有效值(連結在新視窗開啟)

content_security_policy.directive.img_src* 資料:

指定影像和 Favicon 的有效來源。

img_src 的有效值(連結在新視窗開啟)

content_security_policy.directive.font_src* 資料:

指定使用 @font-face 載入之字型的有效來源。

font_src 的有效值(連結在新視窗開啟)

content_security_policy.directive.frame_src* 資料:

指定使用如 <frame> 和 <iframe> 等元素載入至巢狀瀏覽內容的有效來源。

frame_src 的有效值(連結在新視窗開啟)

content_security_policy.directive.object_src資料:

指定 <object>、<embed> 和 <applet> 元素的有效來源。

object_src 的有效值(連結在新視窗開啟)

content_security_policy.directive.report_uri/vizql/csp-report

指示使用者代理程式嘗試違反 CSP。這些違規報告包含透過 HTTP POST 要求傳送至指定 URI 的 JSON 文件。

report_uri 的有效值(連結在新視窗開啟)

步驟 2:新增其他指示詞(可選)

Tableau Server 隨附的預設指示詞是 CSP 支援的指示詞子集。

有關完整的支援 CSP 指示詞清單,請移至 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy(連結在新視窗開啟)

您可以透過在 content_security_policy.directive 命名空間中新增新的指示詞,將指示詞新增至現有的預設集合。新增新的指示詞時必須包含 --force-keys 參數。語法如下:

tsm configuration set -k content_security_policy.directive.<new_directive_name> -v "<value>" --force-keys

例如,若要新增 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.<directive_name> -v "<value>" --force-keys

例如,若要進報告 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_enabledfalse

將 CSP 標頭新增至所有要求,讓瀏覽器強制執行任何違規。

content_security_policy.report_only_enabledtrue將 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 瀏覽器。

  1. 在您設定 CSP 的 Tableau Server 部署上載入託管的具有違規之測試視覺效果。

  2. 輸入 CTRL+Shift+I 以在 Chrome 中開啟開發人員工具。

  3. 按一下 [網路] 索引標籤。

  4. [篩選器] 欄位中,輸入 csp-report,然後按一下 [尋找全部]

    • 如果沒有違規,則搜尋不會傳回任何 CSP 報告。

    • 如果有違規,請按一下結果窗格中的 [標頭] 索引標籤,捲動到底部以檢視 [要求承載]

感謝您的意見反應!已成功提交您的意見回饋。謝謝!