报表嵌入数据权限控制和传参的安全增强方案

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

说明

传参嵌入使用说明:

  1. 在嵌入式集成场景下,结合全局参数注参的方式可以实现同一张报表千人千面的看数效果。

  2. 传参嵌入仅面向专业版100个通用用户数及以上企业客户开放。

背景信息

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

注意事项

  • 使用Ticket报表嵌入方案,需要关注以下几点:

    • 目前仅支持将仪表板、电子表格、数据大屏、自助取数、即席分析和数据填报的报表嵌入到其他系统。

    • 若您需要试用全局参数能力,请联系Quick BI运营负责人。

  • Quick BI专业版支持增强方案,高级版仅支持基础方案。

    基础方案增强方案的能力项有所不同,具体请参见下表:

    能力项

    基础方案

    增强方案

    绑定用户

    报表owner,且不可修改

    支持自定义,千人千面

    访问次数

    每个Ticket最多10万次

    不限量,支持自定义设置

    水印

    不支持

    支持

    (大屏本身不支持水印除外)

    有效时长

    最大 240 分钟

    支持自定义

    全局参数

    不支持

    支持

    区块嵌入

    不支持

    支持

    跳转次数

    说明

    被跳转的报表也需要开通嵌入。

    仅可跳转一次

    例如:A报表跳转到B报表后,B报表无法再跳转到C报表。

    支持跳转任意次数

    例如:A报表跳转到B报表后,B报表还能跳转到C报表,C也能再继续往后跳转,以此类推。

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

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

  1. 您可以使用以下任意一种方式开通报表嵌入:

    • 方式一:从开放平台模块

      1. 在Quick BI产品首页,按照下图指引,进入嵌入报表页面。

        image

      2. 新增嵌入报表页面,选择目标工作空间和数据对象类型后,在列表中选中数据对象名称后,单击开通嵌入image.png

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

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

      支持嵌入报表为仪表板、电子表格、数据大屏、自助取数、即席分析和数据填报,下面以仪表板为例介绍。

      在仪表板编辑页面,按照下图指引,开通嵌入报表。image.png

  2. 报表嵌入配置对话框,进行以下配置。

    重要

    此处调试仅做功能体验使用,实际应用请完成步骤2:通过API接口生成AccessTicket票据步骤3:拼接免登URL

    参数名称

    描述

    嵌入对象

    选择嵌入的对象。

    • 选择页面整体,则嵌入的对象为当前仪表板。

    • 选择某个组件,则嵌入的对象为当前仪表板下的某个组件。

    展示型配置

    嵌入后,是否携带当前仪表板的标题。

    安全认证类型Ticket链接

    选择Ticket认证并生成Ticket链接。

    您可以手动输入Ticket链接或者单击快捷生成,生成Ticket。

    image

    在生成Ticket的界面,您可以设置绑定用户有效时长水印参数访问次数全局参数

    获取嵌入代码

    支持生成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(该值为页面调试的上限数值,可通过接口自定义,最大上限是integer字段类型的最大取值)

    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

bi.aliyun.com

bi.aliyun.com

bi.aliyun.com

bi.aliyun.com

2、获取预览报表URL

token3rd/dashboard/view/pc.htm

token3rd/report/view.htm

token3rd/offline/view/pc.htm

token3rd/screen/view/pc.htm

token3rd/analysis/view/pc.htm

token3rd/dataform/view.htm

3、获取报表ID

dd0****83f

42****18ef6

22****9pek0

27****an79d

7f****5dda

29****df453

4、获取AccessTicket

fd138bcb-****-4fde-b413-81bcee59bdb6

fd138bcb-****-4fde-b413-81bcee59bdb6

fd138bcb-****-4fde-b413-81bcee59bdb6

fd138bcb-****-4fde-b413-81bcee59bdb6

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
  • 自助取数的拼接格式为https://<Quick BI域名>/<预览报表URL>?pageId=<报表ID>&accessTicket=<AccessTicket>则以公共云为例,生成的URL为:

    https://bi.aliyun.com/token3rd/offline/view/pc.htm?pageId=<42****18ef6>&accessTicket=fd138bcb-****-4fde-b413-81bcee59bdb6
  • 数据大屏的拼接格式为https://<Quick BI域名>/<预览报表URL>?pageId=<报表ID>&accessTicket=<AccessTicket>则以公共云为例,生成的URL为:

    https://bi.aliyun.com/token3rd/screen/view/pc.htm?pageId=<42****18ef6>&accessTicket=fd138bcb-****-4fde-b413-81bcee59bdb6
  • 即席分析的拼接格式为https://<Quick BI域名>/<预览报表URL>?pageId=<报表ID>&accessTicket=<AccessTicket>则以公共云为例,生成的URL为:

    https://bi.aliyun.com/token3rd/analysis/view.htm?id=<xxx>&accessTicket=<xxx> 
  • 数据填报的拼接格式为https://<Quick BI域名>/<预览报表URL>?pageId=<报表ID>&accessTicket=<AccessTicket>则以公共云为例,生成的URL为:

    http://bi.aliyun.com/token3rd/dataform/view.htm?id=<xxx>&accessTicket=<xxx>

若您需要在报表中进行区块嵌入,需要在报表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

    • 数据大屏:token3rd/screen/view/pc.htm

    • 自助取数:token3rd/offline/view/pc.htm

    • 即席分析:token3rd/analysis/view/pc.htm

    • 数据填报:token3rd/dataform/view.htm

  3. 在报表编辑页面,获取报表ID。

    • 仪表板ID,本例为d01****c5f

      在仪表板编辑页面,获取地址栏中仪表板pageId的值。仪表板ID

    • 电子表格ID,本例为d0****3ba88

      在电子表格编辑页面,获取地址栏中电子表格Id的值。电子表格ID

    • 数据大屏ID,本例为3c****26b

      在数据大屏编辑页面,获取地址栏中数据大屏pageId的值。

      image.png

    • 自助取数ID,本例为b2****47

      在自助取数编辑页面,获取地址栏中自助取数pageId的值。

      image.png

    • 即席分析ID,本例为7f****da

      在即席分析编辑页面,获取地址栏中即席分析pageId的值。

      image

    • 数据填报ID,本例为29****53

      在数据填报编辑页面,获取地址栏中数据填报pageId的值。

      image

  4. 将上述步骤获取的Quick BI域名、预览报表URL、报表ID和步骤2 获取AccessTicket参数拼接到如下请求地址中。

    • 仪表板的拼接格式https://<Quick BI域名>/<预览报表URL>?pageId=<报表ID>&accessTicket=<AccessTicket>

    • 电子表格的拼接格式https://<Quick BI域名>/<预览报表URL>?id=<报表ID>&accessTicket=<AccessTicket>

    • 数据大屏的拼接格式https://<Quick BI域名>/<预览报表URL>?pageId=<报表ID>&accessTicket=<AccessTicket>

    • 自助取数的拼接格式https://<Quick BI域名>/<预览报表URL>?pageId=<报表ID>&accessTicket=<AccessTicket>

    • 即席分析的拼接格式https://<Quick BI域名>/<预览报表URL>?id=<报表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 '%{参数值}'

附3:可嵌入报表数量说明

  • 专业版默认嵌入报表数为用户数的两倍。

  • 专业版(新)默认嵌入报表数为通用账号数 * 2 + 访问者账号数 * 0.5,小数向上取整。例如购买了通用用户50+查看用户5,默认赠送103张报表。

说明

以上为专业版嵌入报表默认数,如需增购,请参见Quick BI计费方式