本文将为您介绍如何使用Ticket报表嵌入方案免登嵌入到第三方系统,同时可控制嵌入至第三方系统的Quick BI报表权限,以及如何通过票据管理有效防止链接被恶意分享数据泄露的问题。

背景信息

Quick BI全新推出了安全增强的嵌入分析方案,简称Ticket报表嵌入方案,当使用Quick BI专业版时,可实现链接、访问、看数等多场景一站式安全管控,帮助您低成本与企业业务系统集成,高效构建自有品牌特色的数据产品。Ticket报表嵌入方案具备以下特点。ticket报表嵌入

注意事项

使用Ticket报表嵌入方案,需要关注以下几点:
  • 目前仅支持将群空间的仪表板、电子表格的报表嵌入到其他系统。
  • 若您需要使用全局参数能力,请联系Quick BI运营负责人

步骤1:开通需要嵌入的报表

仅当报表是发布状态时,才支持设置报表嵌入功能。

您可以使用以下任意一种方式开通报表嵌入:
  • 方式一:从开发者中心模块

    1. 在Quick BI产品首页,按照下图指引,进入嵌入报表页面。报表嵌入_4.3
    2. 新增嵌入报表页面,选择目标工作空间和数据对象类型后,在列表中选中数据对象名称后,单击开通嵌入报表嵌入_4.23

      若报表太多时,您也可以输入报表名称,帮助您快速搜索到目标报表。

  • 方式二:从报表编辑页面

    支持嵌入报表为仪表板、电子表格和自助取数,下面以仪表板为例介绍。

    1. 在仪表板编辑页面,按照下图指引,开通嵌入报表。报表嵌入_4.3
    2. 报表嵌入配置对话框,进行以下配置。
      参数名称 描述
      嵌入对象 选择嵌入的对象。
      • 选择页面整体,则嵌入的对象为当前仪表板。
      • 选择某个组件,则嵌入的对象为当前仪表板下的某个组件。
      展示型配置 嵌入后,是否携带当前仪表板的标题。
      安全认证类型Ticket链接 选择Ticket认证并生成Ticket链接。
      您可以手动输入Ticket链接或者单击快捷生成,生成Ticket。生成Ticket_4.3
      获取嵌入代码 支持生成URL链接Iframe代码
    3. 单击复制

步骤2:通过API接口生成AccessTicket票据

  1. 调用CreateTicket接口生成报表嵌入需要使用的Ticket。
    生成accessTicket的各项参数说明如下:
    参数名称 类型 描述
    WorksId String 开通嵌入的报表ID。

    目前仅支持仪表板和电子表格。

    CmptId String 组件ID。为以上报表中某个组件的ID。

    获取组件ID调用的接口请参见QueryWorksBloodRelationship

    TicketNum Integer Ticket的票据数量。
    • 默认值为1。
    • 建议值为1。
    • 最大值为99999。

    每次使用票据访问后,Ticket的票据数量减1。

    UserId String Quick BI的UserId,非您的阿里云账号ID。

    您可以调用QueryUserInfoByAccount接口,获取UserId。UserId样例为fe67f61a35a94b7da1a34ba174a7****

    说明 UserIdAccountName只填一个即可,不填时默认绑定报表的Owner。若您需要配置数据行级权限,请参见附1:配置数据行级权限
    AccountName String 用户的账号名称。
    • 如果用户是阿里云主账号wangwu,格式为[主账号],例如wangwu
    • 如果用户是RAM账号zhangsan**@aliyun.cn,格式为[主账号:子账号],例如wangwu:zhangsan**
    说明 UserIdAccountName只填一个即可,不填时默认绑定报表的Owner。若您需要配置数据行级权限,请参见附1:配置数据行级权限
    AccountType Integer 用户的账号类型。
    • 1:阿里云账号
    • 3:Quick BI自建账号
    • 4:钉钉
    • 5:RAM子账号
    • 9:企业微信
    • 10:飞书
    说明 若AccountName不为空时,则AccountType也不能为空。
    ExpireTime Integer 过期时间。
    • 单位:分钟
    • 默认值:240
    WatermarkParam String 报表的水印参数。

    不得超过50个字符。

    GlobalParam String 报表过滤条件的全局参数

    格式为JSON格式的字符串。

    说明 若您需要使用全局参数能力,请联系Quick BI运营负责人
    说明
    • 链接防分享控制:TicketNum的取值建议为1,表示生成的第三方嵌入链接仅被访问一次。
    • 报表嵌入时,支持绑定水印参数WatermarkParam
  2. 生成AccessTicket。
    示例代码请参见SDK示例
    返回结果示例如下:
    {
      "requestId" : "7D784AB0-5B77-077E-B628-E782B58D3898",
      "result" : "fd138bcb-****-4fde-b413-81bcee59bdb6",
      "success" : true
    }
    说明
    • result即为此次API调用生成的AccessTicket,AccessTicket为fd138bcb-****-4fde-b413-81bcee59bdb6
    • AccessTicket绑定的参数详情请参见嵌入分析

步骤3:拼接免登URL

拼接流程及示例见下表。
流程 仪表板示例 电子表格示例
1、获取Quick BI域名 bi.aliyun.com bi.aliyun.com
2、获取预览报表URL token3rd/dashboard/view/pc.htm token3rd/report/view.htm
3、获取报表ID dd0****83f 42****18ef6
4、获取AccessTicket fd138bcb-****-4fde-b413-81bcee59bdb6 fd138bcb-****-4fde-b413-81bcee59bdb6
拼接格式及报表URL如下。
  • 仪表板的拼接格式为https://<Quick BI域名>/<预览报表URL>?pageId=<报表ID>&accessTicket=<AccessTicket>,则生成的URL为:
    https://bi.aliyun.com/token3rd/dashboard/view/pc.htm?pageId=dd0****83f&accessTicket=fd138bcb-****-4fde-b413-81bcee59bdb6
  • 电子表格的拼接格式为https://<Quick BI域名>/<预览报表URL>?Id=<报表ID>&accessTicket=<AccessTicket>,则生成的URL为:
    https://bi.aliyun.com/token3rd/report/view.htm?id=<42****18ef6>&accessTicket=fd138bcb-****-4fde-b413-81bcee59bdb6
若您需要在报表中进行区块嵌入,需要在报表URL后拼接&cmptId=XXX。例如,您需要在电子表格中嵌入区块,则生成的URL为:
https://bi.aliyun.com/token3rd/report/view.htm?id=<42****18ef6>&accessTicket=fd138bcb-****-4fde-b413-81bcee59bdb6&cmptId=XXX
  1. 获取Quick BI域名。
    例如,Quick BI公共云域名为bi.aliyun.com,以具体环境域名为准。
  2. 获取预览报表URL。
    报表对应的预览页面URL如下,您可以根据需要选择。
    • 仪表板:token3rd/dashboard/view/pc.htm
    • 电子表格:token3rd/report/view.htm
  3. 在报表编辑页面,获取报表ID。
    • 仪表板ID,本例为dd0****83f
      在仪表板编辑页面,获取地址栏中仪表板pageId的值。仪表板ID
    • 电子表格ID,本例为42****18ef6
      在电子表格编辑页面,获取地址栏中电子表格Id的值。电子表格ID
  4. 将上述步骤获取的Quick BI域名、预览报表URL、报表ID和步骤2 获取AccessTicket参数拼接到如下请求地址中。
    • 仪表板的拼接格式https://<Quick BI域名>/<预览报表URL>?pageId=<报表ID>&accessTicket=<AccessTicket>
    • 电子表格的拼接格式https://<Quick BI域名>/<预览报表URL>?Id=<报表ID>&accessTicket=<AccessTicket>

附1:配置数据行级权限

UserIdaccountName不填时,嵌入报表的查看权限默认跟随报表Owner。您可以按照下图指引,配置数据行级权限,并设置UserIdAccountName参数,绑定目标用户的权限。配置行级权限_4.3详情操作请参见行列权限

附2:生成全局参数说明

在目标仪表板或电子表格中设置对应的全局参数,全局参数用于绑定报表并生成AccessTicket。

全局参数的参数名为GlobalParam,全局参数的参数值是一个JSON 数组
[
  {
    "paramKey": "price", // 全局参数 Key
    "joinType": "and",   // 连接方式,使用 and 即可
    "conditionList": [
      {
        "operate": "=", // 操作符,参考以下说明
        "value": "1"    // 操作值,在多个值的情况下使用数组 ["1", "2"]
      },
      {
        "operate": "=", // 操作符,参考以下说明
        "value": "2"    // 操作值,在多个值的情况下使用数组 ["1", "2"]
      }
    ]
  },
  {
    "paramKey": "area", // 全局参数 Key
    "joinType": "and",   // 连接方式,使用 and 即可
    "conditionList": [
      {
        "operate": "in",          // 操作符
        "value": ["华北","华南"]    // 操作值,在多个值的情况下使用数组
      }
    ]
  }
]
全局参数operate字段常用枚举说明如下:
操作符(operate) 说明 备注
= 等于 -
!= 不等于 -
> 大于 -
>= 大于等于 -
< 小于 -
<= 小于等于 -
in in 参数值必须是数组
not-in no in 参数值必须是数组
like like 关键字模糊匹配。

SQL会自动解析成like '%{参数值}%'

contain 字符串包含 SQL会自动解析成like '%{参数值}%'
start-with 字符串以什么起始 SQL会自动解析成like '{参数值}%'
end-with 字符串以什么结尾 SQL会自动解析成like '%{参数值}'