知識庫

在 Tableau Server 中封鎖或允許不安全的指令碼


發佈時間 : 16 Mar 2017
上次修改日期 : 24 Aug 2022

問題

使用從依據 SQL 的資料來源中或從 Rserve 伺服器中取得資料的 Tableau 工作簿時,您可以使用直接傳送至資料來源的運算式建立計算,這些運算式稱為直通運算式。以下 Tableau Desktop 文件中描述這些運算式類型:

直通函數是名稱以 RAWSQL_SCRIPT_ 開頭的函數。

在某些情況下,直通運算式可能是 SQL 注入攻擊的向量 — 即,攻擊者或授權在運算式中以值形式包括惡意指令。工作簿包含滿足以下所有標準的計算時,可能會出現這種情況:

  • 計算包括 SCRIPT_RAWSQL_ 函數。

  • 運算式使用在工作簿中透過參數傳送到計算的值。

  • 參數以字串形式輸入。

  • 此參數是第一個傳送至計算的參數。

  • 該參數未被引號包括。

例如,在以下運算式中,Parameter 1 可能旨在包含字串值,例如「小」、「中」或「大」。

RAWSQL_STR([Parameter 1])

但是,如果使用者可以將 Parameter 1 的值設定為任意文字,則該使用者或授權以建立 SQL 注入攻擊。

由於像這樣的運算式可能包括惡意指令,所以它被稱為不安全的指令集

請注意最後一個標準 — 不安全的指令集包括沒有引號的參數。請考慮以下範例:

RAWSQL_BOOL("%1", [Parameter 1])

此範例未構成不安全的指令集,因為 Parameter 1 的值包括在引號中,因此 SQL 未將此值視為指令。

環境

  • Tableau Server

解決方法

發布到 Tableau Server 時允許不安全的指令集

Tableau Server 2018.2 版及更新版本 (TSM 之後)

您可以使用以下的 tsm 組態集 指令,允許使用者發布包含不安全指令碼的工作簿:

tsm configuration set vizqlserver.allow_insecure_scripts true

Tableau Server 2018.2 之前的版本(TSM 之前)

透過使用以下 tabadmin set 指令,可以允許使用者發布包含不安全指令集的工作簿:

tabadmin set vizqlserver.allow_insecure_scripts true

原因

預設情況下,不允許使用者將包含不安全指令集的工作簿發布到 Tableau Server — 即不允許發布包含滿足所有上述標準的計算的工作簿。使用者嘗試發布工作簿時,他們會看到來自伺服器的以下回應:

"This worksheet contains custom user scripts or SQL with injectable string parameters, which may be vulnerable on the target platform."

無論使用者嘗試發布時使用的是 Tableau Desktop、tabcmd publish 指令還是 REST API 中的發布工作簿,都會封鎖發布。
 

    其他資訊

    關於在 Tableau Server 上啟用或停用不安全指令集的附註

    vizqlserver.allow_insecure_scripts 設定旨在用於使用者可能嘗試使用參數值傳送未授權的 SQL 或 Rserve 指令的情況。為了保護 Tableau Server 安裝,預設設定為 false,讓使用者無法發布具不安全指令集的工作簿。請考慮關於 vizqlserver.allow_insecure_scripts 設定的以下幾點事項:

    • 如果使用者從未建立自訂的 SQL 或 R 運算式,則可以確定 vizqlserver.allow_insecure_scripts 已設定為 false,且未影響使用者發布工作簿的能力。

    • 如果使用者建立的計算包括自訂的 SQL 或 R 運算式,但是您認為其他使用者可能不會嘗試將指令傳送至資料來源,則可以允許發布不安全的指令集(即將 vizqlserver.allow_insecure_scripts 設定為 true)。

    • vizqlserver.allow_insecure_scripts 設定適用整個 Tableau Server 安裝。如果此設定為 false,則會對伺服器上的所有站台和專案封鎖發布包含不安全指令集的工作簿。

    • Tableau Public 和 Tableau Cloud 不允許計算中所包括的運算式包含以 RAWSCRIPT_ 開頭的函數。因此,vizqlserver.allow_insecure_scripts 的預設值 false 不會影響這些產品。
       
    • 如果將 vizqlserver.allow_insecure_scripts 設定變更為 False,然後嘗試存取在變更設定之前以不安全的指令碼發布的工作簿,則此錯誤訊息也會直接出現在 Tableau Server 上。


    討論本文...意見回饋論壇
    這篇文章是否解決了問題?