QuickBI关于业务分析人员连接MaxCompute数据源权限控制问题解决方案及常见报错解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 企业上云,maxcompute数仓结合quickbi智能报表的组合较为常见,使用广泛。maxcompute权限管理较为精细化,部分权限缺失常常导致bi端相关数据应用报错,权限过高又会有潜在的风险暴露。本文针对上述问题提出相关的解决方案及常见的报错解析,当前方案已得到较多的应用。

一、高频问题及痛点

quickbi官网显示配置maxcompute数据源提示需要购买实例的账号ak

根据用户所在企业所承担的角色责任不同,问题分为 1.业务分析人员 和 2.数据管理或架构人员 两种情况:

  1. 管理员不提供主账号ak;多次索取主账号ak,易泄露,多个项目数据安全无法保证。(主账号拥有多个maxcompute项目、及项目下所有对象的所有权限,泄露风险较高)
  1. 有且仅有子账号ak,公司仅一个quickbi实例,多条业务线、总分公司分析人员通过工作空间区分
  2. 能否和rds-mysql一样通过子(其他)账号的ak配置数据源?
  3. 子账号ak可以通过联通性测试但数据表列表为空或不全,怎么配置权限?
  1. 管理员负责配置主账号ak的数据源,提供数据集供使用
  1. 分析师对业务分析宽表维度要求高,需求多变,如通过“数据集”模块控制权限,授予qbi分析师角色的人员需提工单到开发角色生成数据集后并授权,时效过长,灵活性差。
  2. 给予分析人员开发角色可以改善数据宽表灵活性的问题,但主账号配置的数据源权限过大,会看到数仓dws层以外的明细表并创建新的数据集,导致“数据集”模块行级权限失效;同时“数据准备”模块拥有所有表的写入权限,可能会存在操作不规范、意外清空库表的情况。

二、解决方案

  1. 数据源连接串配置使用maxcompute项目中的RAM子账号的ak进行连接串配置
  2. 在quickbi“用户管理”模块中用户类型设置为“开发者”,相应工作空间成员设置为“开发权限”
  3. 根据使用quickbi的不同功能在maxcompute项目中授权给子账号不同quickbi功能所需要的权限(权限及说明见下表)
  1. 项目级权限CreateInstance,List,CreateTable
  2. 表级权限仅授权dws层的指标汇总表、dwd层的事实及事件明细表、维度码表的Describe及Select权限(尽量授权个人ACL权限且不授权公共角色的Policy权限确保权限控制精准)
  1. 需要用到数据准备模块的业务线同事仅进行新建表的数据库写入

这样配置在可以同时兼顾主账号及库表安全性,分析所用数据集宽表的灵活性,下级分公司行级权限的约束性

权限级别

权限名

权限说明

qbi对应模块需要

项目级

CreateInstance

执行实例SQL作业

数据集及仪表板等报表模块

List

查看项目类型列表,show tables

数据源、数据集

CreateTable|Write

建表权限

数据准备

表级

Describe

元数据信息

数据源、数据集

Select

查询

数据集及仪表版等报表模块

ALL

全部权限,主要是写

数据准备

三、实现案例

1、账号及mc项目基础配置

  • maxcompute项目:quickbi_odps_test
  • 阿里云主账号:ALIYUN$liupai.lp
  • bi分析及报表专用-阿里云RAM子账号:RAM$liupai.lp:xiaos
  • 创建maxcompute分析及报表用专用角色“biuser”
  • 创建dataworks自定义角色“报表用户”并配置maxcompute项目中的角色“biuser”
  • 在quickbi组织成员中添加RAM用户xiaos,并授予“开发者”权限
  • 新建工作空间bi_works(若存在则跳过)
  • 在bi_works的工作空间内添加用户xiaos,并赋予开发权限
  • 使用RAM账号xiaos的accessid和accesskey配置odps数据源
  • 项目中存在 d_cust 客户表、d_sales_amt 销售表、table_main 主账号临时测试表均为高权限主账号创建
-- 客户表
CREATE TABLE IF NOT EXISTS d_cust(
    cust_id INT 
    ,cust_name STRING 
    ,level STRING 
    ,randn FLOAT 
) PARTITIONED BY (dt STRING );
-- 销售表
CREATE TABLE IF NOT EXISTS d_sales_amt(
    event_id INT 
    ,cust_id int
    ,pay_time DATETIME 
) PARTITIONED BY (dt STRING );
-- 主账号创建临时测试表
CREATE TABLE IF NOT EXISTS table_main (
    col1 String
    ,col2 STRING
    ,col3 INT
)partitioned by (dt STRING);


2、权限配置操作

a、数据源模块

  • 授予数据源模块可用数据表清单的相关权限
-- 授予project List
-- 授予table d_cust和d_sales_amt Describe 权限
GRANT List ON PROJECT quickbi_odps_test to USER RAM$liupai.lp:xiaos;
GRANT Describe ON table d_cust to USER RAM$liupai.lp:xiaos;
GRANT Describe ON table d_sales_amt to USER RAM$liupai.lp:xiaos;

-- 查看用户的权限
SHOW GRANTS for RAM$liupai.lp:xiaos;
  • 可以看到xiaos存在项目的List的查看项目类型列表权限以及[d_cust,d_sales_amt]的获取元数据权限

  • 在点击数据源同步按钮并同步完成后,可以看到该数据源根据用户的权限匹配出了[d_cust,d_sales_amt]两张表

b、数据集模块

  • 授予数据集模块预览数据的相关权限
-- 授予用户 创建实例 的权限
GRANT CreateInstance ON PROJECT quickbi_odps_test to USER RAM$liupai.lp:xiaos;
-- 授予用户 相关业务表 查询的权限
GRANT Select ON table d_cust to USER RAM$liupai.lp:xiaos;
-- 查看用户的权限
SHOW GRANTS for RAM$liupai.lp:xiaos;
  • 可以查看xiaos存在项目的CreateInstance的创建实例的权限及相关业务表的查询权限

  • 可以正常预览并创建数据集进行报表及图表的加工

c、数据准备模块

  • 授予该用户 CreateTable
-- 授予客户物理表创建的权限
GRANT CreateTable ON PROJECT quickbi_odps_test to USER RAM$liupai.lp:xiaos;
GRANT Write ON PROJECT quickbi_odps_test to USER RAM$liupai.lp:xiaos;
  • 利用数据准备模块,根据已有权限的表进行轻量级ETL的加工,手动或周期性写入数据库表中:写入表需宣导分析师用户使用自建表

  • 该RAM用户仅作为数据准备所创建的表[qbi_etl_test]的ObjectCreator,数仓中其余的明细表或维度表并无写入、删除等高危权限

四、常见报错解析

1、数据源模块

  • 重复提交同步元数据请求

maxcompute数据源受到源端限制,同步速度较慢,周期为1小时自动更新一次;手动点击同步按钮一段时候后刷新页面即可显示同步结果,同步时常与配置数据源中项目内物理表的数量有关。

2、数据集模块

  • 数据预览失败

数据集的预览相当于数据库客户端,需要RAM用户具备项目执行实例[CreateInstance]及相关表的查询[Select]权限才能查询数据结果并展示。

对于maxcompute数据源分区表在数据预览时被限制不允许全表扫描[specify partition predicates],可以通过如下三种方式:

  1. 直接从左侧数据表拖拽的数据源,可以通过配置过滤条件正常预览

  1. 直接从左侧数据表拖拽的数据源,直接点击保存,在数据集模块找到该数据集,将数据集属性中的“全表扫描”功能打开

  1. 可以通过配置自定义sql结合where条件的方式指定分区键的取值以跳过全表扫描的限制

由于quickbi侧数据预览模块limit关键词的限制,通过设置会话级参数set odps.sql.allow.fullscan=true;的方式不能达到全表扫描的效果

3、数据准备模块

  • ETL作业执行失败:the agent task execution failed

maxcompute数据源相关数据处理都要注意分区表fullscan的问题,上述etl任务执行失败需在源端数据配置模块按分区键进行设置,并确认“输入过滤”模块右下角的语法正确性检测为绿色对勾

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
5月前
|
分布式计算 大数据 数据库连接
maxcompute开发环境问题之参数解析失败如何解决
MaxCompute开发环境是指设置和配置用于开发MaxCompute项目的本地或云端环境;本合集将指导用户如何搭建和管理MaxCompute开发环境,包括工具安装、配置和调试技巧。
quickBI上传文件数据源中的替换文件后端逻辑是怎么实现的
quickBI上传后的所有文件 都会追加到物理表中,那么替换其中一个文件,怎么找到物理表里此原文件对应的数据呢,物理表里是需要建一个关联字段吗
|
4月前
|
存储 分布式计算 关系型数据库
实时数仓 Hologres产品使用合集之Hologres quickbi读holo是用的直读还是连接
实时数仓Hologres的基本概念和特点:1.一站式实时数仓引擎:Hologres集成了数据仓库、在线分析处理(OLAP)和在线服务(Serving)能力于一体,适合实时数据分析和决策支持场景。2.兼容PostgreSQL协议:Hologres支持标准SQL(兼容PostgreSQL协议和语法),使得迁移和集成变得简单。3.海量数据处理能力:能够处理PB级数据的多维分析和即席查询,支持高并发低延迟查询。4.实时性:支持数据的实时写入、实时更新和实时分析,满足对数据新鲜度要求高的业务场景。5.与大数据生态集成:与MaxCompute、Flink、DataWorks等阿里云产品深度融合,提供离在线
|
3月前
|
存储 分布式计算 DataWorks
MaxCompute产品使用合集之如何在代码中解析File类型的文件内容
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
70 11
|
3月前
|
JSON 分布式计算 大数据
MaxCompute产品使用合集之如何解析嵌套的JSON数据
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
130 0
|
4月前
|
分布式计算 DataWorks 大数据
MaxCompute操作报错合集之pyodps3的报错信息里,报了程序的解析错误,是什么导致的
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
5月前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在DataWorks中,使用JSON解析函数将MySQL表中的字段解析成多个字段将这些字段写入到ODPS(MaxCompute)中如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
179 3
|
5月前
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之在开发环境中配置MaxCompute参数进行调度,但参数解析不出来,如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
5月前
|
分布式计算 Java 大数据
MaxCompute产品使用合集之大数据计算MaxCompute外部表映射了oss中的csv文件,看到"\N"被解析为"N",是什么原因
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
SQL 存储 分布式计算
ODPS(MaxCompute)不支持解析和执行SQL语句中的Hint语句
ODPS(MaxCompute)不支持解析和执行SQL语句中的Hint语句
219 2

热门文章

最新文章

推荐镜像

更多