知识库

在 Tableau Server 中阻止或允许不安全的脚本


发布时间: 16 Mar 2017
上次修改日期: 13 Jun 2023

问题

使用从基于 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 configuration set 命令,可以允许用户发布包含不安全脚本的工作簿:

tsm configuration set vizqlserver.allow_insecure_scripts true

2018.2 之前的 Tableau Server 版本(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 上。


     
    此文章是否已解决问题?