在 Tableau Server 中管理仪表板扩展程序和可视化项扩展程序

仪表板扩展程序是一些 Web 应用程序,这些应用程序运行在自定义仪表板区域中,并可使用 Tableau Extensions API(链接在新窗口中打开) 与仪表板的其他部分交互。仪表板扩展程序使用户能够直接在 Tableau 中与其他应用程序中的数据交互。与仪表板扩展程序一样,可视化项扩展程序是使用 Tableau Extensions API 的 Web 应用程序,允许开发人员创建新的可视化项类型。Tableau 用户可以通过工作表“标记”卡访问可视化项扩展程序。

注意:您必须是服务器管理员才能在服务器上启用仪表板扩展程序和可视化项扩展程序,或阻止特定扩展程序运行。您必须是服务器管理员才能将扩展程序添加到允许列表,以及控制扩展程序可访问的数据类型。服务器管理员还可配置站点上的用户在添加或查看扩展程序时是否将看到提示。有关扩展程序安全性和推荐部署选项的信息,请参见扩展程序安全性 - 最佳部署做法(链接在新窗口中打开)

有关在 Tableau 中使用仪表板扩展程序的信息,请参见使用仪表板扩展程序

有关使用可视化项扩展程序的信息,请参见将可视化项扩展程序添加到您的工作表

在 Tableau Server 上运行扩展程序之前

Tableau 支持两种托管扩展程序的方式:

  • 支持网络的扩展程序,位于本地网络内部或外部的 Web 服务器上。支持网络的扩展程序具有对 Web 的完全访问权限。
  • 沙盒化扩展程序,在受保护的环境中运行,无法访问 Web 上的任何其他资源或服务。

注意:从版本 2021.1.0 开始,Tableau 通过 Einstein Discovery 仪表板扩展程序支持与 Einstein Discovery 集成。这是一个特殊的扩展程序,可以访问 Salesforce.com 中的数据,并且默认情况下是允许的。它不被视为支持网络的扩展程序或沙盒化扩展程序。有关 Einstein Discovery 集成的详细信息,请参见Tableau Server 发行说明(链接在新窗口中打开)

沙盒化扩展程序由 Tableau 托管,并采用诸如内容安全策略 (CSP) 等 W3C 标准,以确保扩展程序无法在托管 Tableau Server 之外进行网络调用。沙盒化扩展程序可以查询仪表板中的数据,但不能将该数据发送到沙盒以外的任何位置。Tableau 2019.4 及更高版本中支持沙盒化扩展程序。默认情况下,如果为站点启用了扩展程序,则允许运行沙盒化扩展程序。

支持网络的扩展程序是 Web 应用程序,可在任何设置为 Web 服务器上的计算机上运行。其中包括本地计算机、域中的计算机以及第三方网站。由于支持网络的扩展程序可托管在第三方站点上,并且可访问工作簿中的数据,因此您需要仅允许信任的扩展程序。请参见测试支持网络的扩展程序以保障安全性

为了安全起见,您可以使用 Tableau Server 上扩展程序的设置来控制和限制允许运行的扩展程序。

  • 默认情况下,如果为站点启用了扩展程序,则允许运行沙盒化扩展程序。

  • 默认情况下,除非已显式将扩展程序添加到安全列表,否则不允许使用支持网络的扩展程序。

  • 默认情况下,只允许使用 HTTPS 协议的扩展程序,该协议可保障一条用于发送和接收数据的加密通道(唯一的例外情况是 http://localhost)。

  • 如果支持网络的扩展程序需要完整数据(访问基础数据),扩展程序将无法在 Tableau Server 上运行,除非您显式将扩展程序添加到允许列表,并授予扩展程序访问完整数据的权限。

控制扩展程序和对数据的访问

服务器管理员可控制一个全局设置,以允许服务器上所有站点的扩展程序。服务器管理员还可将扩展程序(包括沙盒化扩展程序)放在一个全局阻止列表上以防止它们运行(请参见阻止特定扩展程序)。默认情况下,服务器上已启用所有沙盒化扩展程序,但站点管理员可以选择覆盖默认值,并为站点禁止沙盒化扩展程序。

在服务器上更改启用扩展程序的全局设置

  1. 若要为服务器更改此设置,请转到“管理所有站点”>“设置”>“扩展程序”。如果服务器只有一个站点,则全局控制将出现在站点的设置页面上。

  2. 在“仪表板扩展程序和可视化项扩展程序”下,选中或清除“允许用户在此服务器上运行扩展程序”复选框。如果未选中此选项,则不允许运行扩展程序。此全局设置将覆盖每个站点的“允许用户在此站点上运行扩展程序”设置。

更改站点的默认设置

服务器管理员可控制是否为该站点启用扩展程序,以及是否允许在该站点上使用沙盒化扩展程序。也就是说,如果在服务器上启用了扩展程序,则默认站点设置允许在站点上运行沙盒化扩展程序,前提是未在服务器上明确阻止该扩展程序。默认站点设置允许出现在站点允许列表上的支持网络的扩展程序运行。如果默认情况下不允许沙盒化扩展程序,也可以将单个沙盒化扩展程序添加到允许列表中。

  1. 若要为站点更改这些设置,请转到“设置”>“扩展程序”

  2. 在“仪表板扩展程序和可视化项扩展程序”下,配置以下选项:

    • 允许用户在此站点上运行扩展程序
    • 允许沙盒化扩展程序运行,除非服务器管理员明确阻止了这些扩展程序

服务器管理员可在站点的允许列表中添加或移除支持网络的扩展程序和沙盒化扩展程序。将扩展程序添加到允许列表时,您可以控制是否允许扩展程序拥有完整数据的访问权限。请参见将扩展程序添加到允许列表并配置用户提示

标识扩展程序的 URL

作为 Web 应用程序,扩展程序与 URL 关联。您可以使用此 URL 来测试和验证扩展程序。您还使用 URL 将扩展程序添加到允许列表以允许完整数据访问权限,或将扩展程序添加到阻止列表来禁止任何访问。

从清单文件中

如果有扩展程序清单文件 (.trex),即一个定义扩展程序属性的 XML 文件,您可以从 <source-location> 元素中找到 URL。


<source-location>
    <url>https://www.example.com/myExtension.html</url>
</source-location>

				

从 Tableau Exchange 中

如果您从 Tableau Exchange 添加或下载了扩展程序,则可以在 Exchange 上找到该扩展程序的 URL。打开扩展程序的图块,在“技术规格”下,查找标题“托管于”下的 URL。

扩展程序的 Tableau Exchange 图块,显示了在哪里可以找到托管位置 URL

使用“关于”对话框识别仪表板扩展程序

如果已将扩展程序添加到仪表板,您可以从扩展程序属性中找到 URL。从“更多选项”菜单中,单击“关于”

“关于”对话框列出扩展程序的名称、作者、作者的网站,以及扩展程序的 URL。

将扩展程序添加到允许列表并配置用户提示

为了确保用户可使用受信任的支持网络的扩展程序,您可以将其添加到站点的允许列表。如果默认情况下未在站点上启用沙盒化扩展程序,也可以将沙盒化扩展程序添加到允许列表中。

在允许列表上,您可以控制是否授予扩展程序完整数据访问权限。默认情况下,当您向允许列表添加扩展程序时,该扩展程序仅有权访问摘要(或聚合)数据。您还可以控制用户是否会看到请求他们允许扩展程序访问数据的提示。您可能会只是为了配置用户是否看到提示而需要将扩展程序添加到允许列表(例如,沙盒化扩展程序)。当您向用户隐藏提示时,扩展程序可立即运行。

  1. 转到“设置”>“扩展程序”

  2. “启用特定扩展程序”下,添加扩展程序的 URL。请参见标识扩展程序的 URL

    提示:您可以使用句点和星号 (.* ) 作为 URL 中的通配符,以允许特定域或位置中的所有扩展程序。例如,若要允许 example.com 下使用端口 8080 的域中的所有扩展程序,您可以添加以下 URL:https://example.com:8080/.*。有关详细信息,请参见在安全列表 URL 中使用正则表达式

  3. 选择以允许拒绝扩展程序完整数据访问权限

    完整数据访问权限是指访问视图中基础数据的权限,而不仅仅是访问汇总或聚合数据的权限。完整数据访问权限还包括有关其数据源的信息,例如连接、字段和表的名称。通常,如果您要将要使用的扩展程序添加到安全列表中,您还希望允许该扩展程序访问完整数据(如果该扩展程序需要)。在将扩展程序添加到允许列表之前,一定要测试支持网络的扩展程序以保障安全性

  4. 选择以显示隐藏用户提示

    默认情况下,当用户向仪表板添加仪表板扩展程序或向工作表添加可视化项扩展程序时,或者当他们与具有扩展程序的视图进行交互时,会看到提示。提示告知用户有关扩展程序的详细信息以及扩展程序是否能访问完整数据。用户可以利用提示来允许或拒绝扩展程序运行。您可以向用户隐藏提示,从而允许扩展程序立即运行。

阻止特定扩展程序

默认全局策略允许所有沙盒化扩展程序,以及那些出现在站点允许列表中的支持网络的扩展程序。服务器管理员可通过将特定扩展程序添加到服务器的阻止列表来阻止这些扩展程序运行。如果扩展程序位于全局阻止列表上,则会覆盖站点允许列表上该扩展程序的任何设置。

  1. 若要将扩展程序添加到服务器的阻止列表,请转到“管理所有站点”>“设置”>“扩展程序”。在单站点安装上,阻止列表位于站点的“扩展程序”设置页面上。

  2. “阻止特定扩展程序”下,添加扩展程序的 URL。请参见标识扩展程序的 URL

在安全列表 URL 中使用正则表达式

一般情况下,将扩展程序添加到安全列表时,应该使用该扩展程序的具体 URL。但是,有时您可能希望允许从同一域和位置托管多个扩展程序。在这种情况下,在 URL 中使用通配符会很方便。扩展程序设置支持使用正则表达式。

正则表达式描述
.句点 (.) 是用于匹配任何字符的通配符。如果您需要在 URL 中指定句点 (.) 而不是通配符,则可以使用反斜杠 (\.) 对字符进行转义。
*星号 (*) 是指定前一个字符的一个或多个实例的限定符。

使用通配符时要小心,以免使安全列表过于宽松,并无意中允许不应有访问权限的扩展程序进行访问。

下表显示了在 URL 中使用正则表达式的一些示例。请注意,这些示例未显示扩展程序的协议和完整 URL。仅允许使用 HTTPS 协议的扩展程序(http://localhost 除外)。

若要指定...示例指定
域范围.*\.example.comexample.com 下的所有子域。
所有端口example.com:.*允许扩展程序从 example.com 上的所有端口访问。
域、端口和路径下的所有扩展程序example.com:8080/xyz/.*

域 example.com 下所有使用端口 8080 且位于 zyz 的扩展程序都被允许访问。

一系列域的所有端口.*\.example.com:.*允许访问 example.com 下所有子域上的所有端口上的扩展程序。
域和路径下与该模式匹配的所有扩展程序example.com/t.c/.*允许访问在 example.com 上与模式 t.c 匹配的文件夹下运行的扩展程序例如,tic、tac、toc。

测试支持网络的扩展程序以保障安全性

仪表板扩展程序和可视化项扩展程序是使用 Extensions API 与 Tableau 中的数据进行交互的 Web 应用程序。支持网络的扩展程序可以托管在域内部或外部的 Web 服务器上,并可以进行网络调用和访问 Internet 上的资源。由于潜在的漏洞(如跨站点脚本),在 Tableau Desktop 中使用支持网络的扩展程序之前,以及在 Tableau Server 上允许这些扩展程序之前,您应该对其进行测试和审查。

检查源文件

仪表板扩展程序和可视化项扩展程序是 Web 应用程序,并包括各种 HTML、CSS 和 JavaScript 文件,以及一个定义扩展程序属性的 XML 清单文件 (*.trex)。在许多情况下,扩展程序的代码都在 GitHub 上公开提供,可在该处进行检查或下载。在清单文件 (*.trex) 中,您可以找到源位置(或指明扩展程序托管位置的 URL)、作者姓名,以及可联系以寻求支持的作者或公司网站。<source-location> 元素在 URL 中指定,<author> 元素指定可联系以寻求支持的组织名称和网站 (website="SUPPORT_URL")。网站是用户在扩展程序的“关于”对话框中看到的“获得支持”链接。

许多扩展程序引用外部 JavaScript 库,如第三方的 jQuery 库或 API 库。验证外部库的 URL 是否指向库的受信任位置。例如,如果连接器引用 jQuery 库,请确保该库在一个被认为标准和安全的网站上。

所有扩展程序都需要使用 HTTPS 协议 (https://) 来托管其扩展程序。您应检查扩展程序的源文件,确保对外部库的引用也使用 HTTPS 或者托管在扩展程序所在的同一网站上。如果扩展程序托管在 Tableau 所在的同一计算机 (http://localhost) 上,则无需使用 HTTPS。

尽可能确保了解代码的作用。尤其是,试着了解代码如何构建至外部站点的请求,以及请求中发送了什么信息。特别是,请检查任何用户提供的数据是否经过验证以防止跨站点脚本。

了解数据访问

Tableau Extensions API 提供了方法,可访问数据源中活动表和字段的名称、数据源连接的摘要说明,以及工作表中的基础数据。如果扩展程序在视图中使用任何这些方法,扩展程序开发者必须在清单文件 (.trex) 中声明扩展程序需要完整数据权限。声明如下所示。


<permissions>
   <permission>full data</permission>
</permissions>

Tableau 使用此声明在运行时向用户提供提示,使用户能够选择是否允许此访问权限。如果扩展程序使用这些方法的其中任何一种,则在清单文件中未声明完整数据权限的情况下,扩展程序将会加载,但方法调用将失败。

有关扩展程序如何访问仪表板中的数据以及所使用的 JavaScript 方法的信息,请参见 Tableau Extensions API 中的访问基础数据(链接在新窗口中打开)。为了更好地了解扩展程序可找出哪些数据相关信息,您可以使用 DataSources(链接在新窗口中打开) 示例仪表板扩展程序(可从 Tableau Extensions API GitHub 存储库(链接在新窗口中打开)获得)来查看在调用 getDataSourcesAsync() 方法时公开了哪些数据。

在隔离环境中测试扩展程序

如有可能,请在与您的生产环境和用户计算机隔离的环境中测试扩展程序。例如,在所运行的 Tableau Server 版本并非用于生产的测试计算机或虚拟机上,将仪表板扩展程序或可视化项扩展程序添加到允许列表。

监视仪表板扩展程序创建的流量

测试支持网络的扩展程序时,请使用 Fiddler(链接在新窗口中打开)Charles HTTP 代理(链接在新窗口中打开)Wireshark(链接在新窗口中打开) 之类的工具检查扩展程序发出的请求和响应。确保您了解扩展程序所请求的内容。检查流量以确保扩展程序不读取与扩展程序的用途不直接相关的数据或代码。

感谢您的反馈!您的反馈已成功提交。谢谢!