1. 前言
在《快速开始PieCloudDB》中,我们了解了如何在 PieCloudDB 创建账号,进行数据上传、查询和邀请用户。本文承接《快速开始PieCloudDB》,将对管控平台如权限管理、外部接入等进阶操作通过实例进行介绍和演示。
2. 账户实体
PieCloudDB 以账户实体的形式是账户在数仓实例中具象体现,每一个 PieCloudDB 账户都拥有四类账户实体,如下图所示。
其中:
- 用户实体代表该账户下所有附属用户。用户可以创建并成为数据库对象的所有人,并通过权限系统和角色将数据库对象权限下放给特定角色下的其他用户。
- 角色实体可以实现系统和数据库权限的分配,PieCloudDB 系统中共有四个预设角色,我们会在后续进行介绍。
- 虚拟数仓实体代表计算资源。有相关权限的用户,可在账户下创建提供计算支持的虚拟数仓。
- 功能模块实体为 PieCloudDB 数据功能的集合,包括数据洞察、数据集成等。这些功能通过虚拟数仓的支持,完成查询、ETL 等与数据相关的操作。
对 PieCloudDB 账户实体整体情况了一个大致的认识后,接下来我们深入细节,进一步了解 PieCloudDB 权限系统的核心:角色功能。
3. 角色
PieCloudDB 权限管理系统是以角色为管理单位的权限管理工具。
角色是用户权限概念的具象化,代表了权限的集合。权限以角色的方式下放给各个用户。一个角色可对应一个用户,也可对应一类用户。用户与角色并非一对一关系,一个用户可被授予多个角色,而一个角色可被授予给多个用户。每个用户都会被赋予至少一种角色,每一种角色都有其对应的权限。
PieCloudDB 角色权限分为数据库对象权限和系统权限两部分。数据库对象权限对应账户内各角色的数据权限,且只有数据库对象所有者可管理相应权限。而系统权限对应各角色管控平台的功能权限,其中包括计算资源的管理权限。
4. 赋予与继承
继承是权限以角色的形式传递给另一个角色的动作。继承的角色在层级上要高于被继承的角色,且继承角色的权限与被继承角色的权限保持一致,意味着即使收回继承角色所继承的权限,该权限状态会与被继承角色保持一致,并不会被收回。一个角色可以继承另一个角色的权限。继承的权限即使被改动,状态也会与被继承角色相对应的权限保持一致。继承关系使得各角色间呈现一个角色层次结构。
赋予是权限以角色的形式下放给用户的动作。拥有角色管理权的角色,可将角色及其权限赋予给用户。
5. 系统预设角色
PieCloudDB 中,每个账户都预设了四个角色:
- 普通使用者是 PieCloudDB 预设角色中最基础的角色。每一位新用户在创建后都会自动被授予普通使用者角色,拥有如访问数据库、进行数据洞察等一些基础功能的权限
- 用户管理员继承普通使用者权限,主要负责用户及角色的权限管理,可邀请、添加、审核新用户、删除已有用户,有权创建、删除角色,管理各角色对应的系统权限
- 数据管理员继承普通使用者,主要负责数据库对象权限、计算资源管理,有权使用数据集成功能。数据管理员可以创建、更改、删除和监控虚拟数仓,除账户管理员外,其他预设角色只有权查询、使用虚拟数仓
- 账户管理员是账户权限管理系统中等级最高的存在,继承数据库管理及用户管理员权限,也是账户的计费单位。账户管理员可以将权限以角色的方式下放给其他用户进行管理
预设角色系统权限详情及继承关系如下图所示:
这些预设角色不可被删除。在通常情况下,建议系统角色由不同用户承担,管理员类角色尽量使用 PieCloudDB 系统预设角色。
6. 赋权步骤
在这一部分,我们将从账户管理员起步,演示创立自定义角色的过程,具体步骤如下图所示。
假设账户管理员已将用户管理员及数据库管理员赋予了相应的用户,用户管理员可为新用户组建立自定义角色,并对该角色的系统权限进行设置。
在自定义角色设立后,数据库管理员创建该角色所对应的数据库对象,并将相应的数据库权限赋予该角色,通过数据库权限这种方式来约束相应数据的读写权。
系统权限和数据库权限设置完毕后,用户管理员再将该角色赋予用户组。角色权限管控下的用户组,可通过其对应的角色,在适当的权限条件下探索数据。
7. 权限分配实例
假设某公司需要对某几类线上产品的销售额进行存储和分析,销售额数据结构如图所示,这里的示例数据与《快速开始PieCloudDB》中示例的数据平行。
该公司的数据管理团队决定由 David 、 Betty 和 Charlie 三位负责管理这部分数据及其附属的权限,并支持业务部门的 Adam 进行销售数据分析工作。
首先, David 作为账户管理员,需要将用户管理员角色赋予 Betty 。被赋予用户管理员权限后, Betty 再将数据库管理员的角色赋予给 Charlie 。
各管理员角色就位后, Betty 为 Adam 创建其对应的角色。根据 Adam 的需求, Charlie 再为其角色创建对应的数据库对象,将这些数据库对象的权限分配给 Adam 的角色。角色权限设置完成后, Betty 最后将该角色赋予给 Adam 。
通过类似的步骤,我们可以根据每组用户如数据类型、功能需求等特性来创建对应的角色。
在本文的实例中,用户管理员 Betty 和数据库管理员 Charlie 可以通过同样的步骤为来自其他业务部门的 Ella 和Fiona 建立相应的角色,并按照她们的需求赋予系统、数据库对象权限。
Adam、Ella 和 Fiona 在「线上销售数据」数据库中的读取权限图示
在演示示例中,Adam、Ella 和 Fiona 都来自业务部门,所属团队的不同使得他们对数据权限及开发的需求各不相同。PieCloudDB 权限系统可以使得这些用户以角色的形式,在各管理员的监督下,根据各自角色的权限,安全读、写所需的数据,并进行对应的清理、分析与开发工作。
8. 管控平台实操 — 为 Adam 建立自定义角色
在这一部分,我们将以用户 Adam 为例,演示如何创建、授予角色,并将相应的数据库对象权限授予给特定角色。
在《快速开始PieCloudDB》中,除账户管理员 David 之外,我们还另外创建了三个用户: Charlie 、 Betty 和 Adam 。 David 登录管控平台后,点击菜单栏「用户」功能,可以看到该账户下目前共有4个用户。点击用户名称可查看各用户详细信息,包括授予给用户的角色。这里除 David 外,当前所有用户都是Public角色。
点击用户名称可查看各用户详细信息,包括授予给用户的角色。这里除 David 外,当前所有用户都是 Public 角色。
8.1 账户管理员指定用户管理员
第一步,账户管理员 David 需要将用户管理员角色授予 Betty 。点击菜单栏「角色」功能,PieCloudDB 会以关系图和列表两种形式显示账户下所有角色。拥有相关权限的用户可在该界面管理系统权限及角色继承关系。
「角色」菜单栏关系图模式:
「角色」菜单栏列表模式:
在 David 的账户中,目前只有四个系统预设的角色。点击「usermanager」用户管理员角色,David 可查询当前该角色的系统权限及数据库对象权限,也可点击「角色继承」在该界面查询角色的继承关系。点击「用户授予」,可以看到目前暂无被授予的用户。
点击上图中的蓝色按钮「授予给用户」,在「将被授予角色的用户」一栏选择用户 Betty,再点击「授予」,将用户管理员授予 Betty。
除此之外,在角色已创建的情况下,David 也可通过用户界面,将用户管理员快捷授予给 Betty。
最后点击「授予」,即可快捷授予角色。
8.2 用户管理员指定数据库管理员
在被授予用户管理员后,Betty 即可以该身份登录管控平台,管理用户、角色及对应系统权限。登录后我们可以看到,用户管理员左侧的功能菜单栏多以「用户」、「角色」功能为主。
下一步,Betty 需要将数据库管理员授予 Charlie ,并为 Adam 创建自定义角色「顾客数据分析」。用户管理员角色使得 Betty 有权创建、管理、删除角色。菜单栏点击「角色」,和 David 的步骤类似,Betty 点击「dbmanager」数据库管理员角色,将该角色授予 Charlie 。
8.3 用户管理员创建新角色
点击右上角添加角色,输入角色名称等信息,Betty 即可创建自定义角色。
注意,所有自定义角色在不指认任何继承关系的情况下,默认继承 public 角色。
由于 Adam 有更改、上传客户信息的需求,我们需要对应角色的系统权限中增加数据导入菜单的权限。点击新建角色「顾客数据分析」,再点击「系统权限」界面的「管理权限」,在「授予的权限」下拉菜单中选择「数据导入」等五项权限,为 Adam 对应的角色增加使用导入菜单所需的系统权限。
这其中,新添角色若想有权使用数据导入功能,则首先需要「数据导入菜单」的父级权限「数据集成菜单」,再将「数据导入菜单」权限赋予该角色。在角色拥有相关菜单权限的基础上,给予角色「数据导入」功能权限,这样新添角色才可以使用「数据导入」功能进行数据上传。
除此之外,「导入任务详情」和「导入历史数据」权限可以赋予该角色查看导入历史及导入历史详情的权限。在管控平台中添加步骤如下图所示。
添加权限完毕后,点击右下角的「更新权限」完成权限更新。
在系统权限设置完毕后,Betty 即可将该角色赋予 Adam。
8.4 数据库管理员为新角色创建、管理数据库对象权限
作为数据库管理员 Charlie 需要为 Adam 创建所需的数据库对象,并将这些数据库对象的权限下放给 Adam 。除此之外,Charlie 还需为 Adam 创建计算所需的虚拟数仓。
Charlie 登录管控平台后,先进入「虚拟数仓」菜单,为 Adam 创建虚拟数仓。具体步骤详见《快速开始PieCloudDB》。
成功创建虚拟数仓后来到数据洞察界面,创建所需的数据库对象,步骤与《快速开始PieCloudDB》 中一致。
刷新数据库部分,可以看到新创建的数据库对象已更新。创建结束后,再到「数据集成」的「导入数据」界面,上传数据文件至对应的表中,这里的步骤与《快速开始PieCloudDB》 中一致。
在上述过程中,数据库管理员 Charlie 为虚拟销售数据创建了多个数据库对象。Charlie 可以使用「数据库」功能查询这些数据库对象的元数据,管理相关权限。在 「数据库」界面点击需要查询的数据库、schema、表或者视图,即可显示数据库对象的字段信息以及权限列表。数据库对象的所有者可使用界面右上角的「授权」按钮,将数据库对象权限下放给其他角色。
注意,在 Charlie 不作任何授权动作的情况下,同一个账户下的其他用户都无法访问这些数据库对象。这里以 Adam 为例,当 Adam 登录并进入「数据洞察」界面,尝试查询顾客信息时,界面显示报错并提示 Adam 并无相关权限。
数据库管理员 Charlie 可以使用「数据库」的「授权功能」,将数据库对象权限授权给特定角色,该角色下的用户才有权读或写这些数据库对象。对于 Adam 而言,他所需的数据如下图所示。
PieCloudDB 一共有三个层级的权限:数据库层、模式(schema)层及数据库对象层。
在权限设计中,Adam 拥有销售数据的只读权及用户数据的读写权。为了让 Adam 获得相对应的读写权,Charlie需:
- 第一步将数据库的 Connect 权限授予「顾客数据分析」角色
- 再将三个模式(schema)对应的权限授予该角色。
- 最后,根据实际所需的数据库对象,将相应数据库对象权限授予该角色
这一部分的详细操作,请参考 PieCloudDB 权限系统视频。这里以「服装产品数据表」为例,授权步骤如下图所示:
8.5 赋权完成
完成授权步骤后,David 账户下的四个用户通过角色功能,调整了权限结构。对比来看,David 拥有账户下所有系统权限,Betty 主要拥有角色、用户及管理系统权限的权利,Charlie 在管控平台可使用的功能主要围绕数据库和虚拟数仓,Adam 在普通使用者的系统权限之上增加了使用「数据导入」功能的权限。
权限设置完毕后,Adam 登录即可发现,菜单栏新增了「数据集成」功能。如 Adam 获得了一份包含新用户数据的文件,Adam 可以使用该功能,自行将新用户导入用户数据表中。
权限设置完毕后,Charlie 和 Adam 都可通过各自的角色来与销售数据进行交互。这里以 Adam 为例, 按照相应权限,Adam 可对顾客数据进行读、写等操作。
如下图所示,Adam 可根据自己的需求从顾客数据中读取数据,也可使用 insert 语句将新数据加入该表。
这里我们用顾客 ID 验证一下新增的数据是否在顾客数据表中存在。
与此同时,并未被赋予数据库对象权限的 David 和 Betty 则无法获取这些数据。这里以 David 为例,可以看到 David 无权读取顾客数据。
以上为 PieCloudDB 权限系统介绍的所有内容,感谢您的阅读。欢迎大家登录 PieCloudDB「云上云」版,开启属于自己的的数据探索之旅。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
依赖注入实现了系统之间、模块之间和对象之间依赖关系的解耦,基本上是现代应用程序框架必不可少的一个组成部分。 ABP的依赖注入系统是基于Microsoft的依赖注入扩展库(Microsoft.Extensions.DependencyInjection),所以能…