元数据对象及权限(Privileges)

权限定义

访问控制权限的授予决定了用户可以对特定对象执行指定操作。对于云器Lakehouse中的每个元数据对象对象,都有一组可以授予的权限。云器Lakehouse中的所有元数据对象及其拥有的权限点,详见 权限点 文档。

元数据对象有三种表达方式:

1)以对象类型加对象名称,表达已被创建的对象。例如:table mytable(名称为mytable的表) 或 vcluster myvcluster(名称为myvcluster的计算集群);

2)以关键字ALL 加对象类别,表达现有和未来所有该类型的对象。例如:ALL tables in schema my_schema (名称为my_schema的schema下的所有table类型对象);

3)以关键字ALL 加关键在 OBJECTS表达现有和未来的所有类型的所有对象,例如:ALL OBJECTS in workspace my_workspace(名称为my_workspace的工作空间下所有的对象)。

权限点有两种表达方式:

1)以具体权限点表达,例如:select,read metadata,update 等;

2)以关键字ALL加关键字PRIVILEGES,表达所有权限点,例如:ALL PREVILEGES on table mytable(mytable表的所有权限点)。

在使用SQL语句进行权限管理时,使用 GRANT <权限点> 和 REVOKE <权限点> 命令。在GRANT <权限点>语句末尾加上with grant option,表示在授予该权限点的同时,将允许被授予者将该权限点再授予其他角色或用户。

元数据对象

Lakehouse中的元数据对象及其父级对象如下表所示:

元数据对象父级对象
workspaceinstance
shareinstance
network policyinstance
schemaworkspace
virtual clusterworkspace
connectionworkspace
tableschema
viewschema
materialized viewschema
dynamic tableschema
table streamschema
volumeschema
indexschema
functionschema
jobschema

元数据对象均可以通过SQL进行授权。工作空间内的对象可在Web端,在“管理”-“安全”-“权限”中操作授权。

ALL 对象

ALL 对象是一种特殊的元数据对象,表达一类对象下当前未来的所有个体。例如:all tables表达当前和未来的所有table;all vclusters表达当前和未来的所有计算集群。

ALL 对象在使用时,需要和关键字“in”一起使用,以明确ALL 对象描述的范围,关键字“in”之后跟随的是ALL 对象的父级对象。例如:all tables in schema my_schema; all vclusters in workspace my_workspace。

ALL 对象的一种特殊用法是用于指代某父级对象下的所有自级对象,例如:all objects in schema my_schema,表达my_schema下的所有类型对象,包括table、view、functions等。

注意:尽管ALL对象可以提升授权操作的效率,但请谨慎使用all objects的方式授权。仅在确认all objects指代的范围符合授权预期时,再使用all objects进行指代,避免授权范围超出预期。

业务对象

除元数据对象外,在数据开发、数据治理过程中,产生了业务对象,如下表所示:

业务对象业务类别
脚本(Script)数据开发 (development)
任务和实例(task)监控规则(monitor rules)
通知策略(announce policy)
数据质量(data quality)质量规则(dqc rule)

业务对象不可通过SQL进行授权。用户通过被授予包含业务对象权限的预置角色来获取相关权限。暂不支持对业务对象的细粒度授权。

权限点

服务实例(Instance) 权限点

权限点用途说明
create workspace创建工作空间默认授予实例管理员(instance_admin角色),不支持授予其他角色或用户。
create network policy创建网络策略默认授予实例管理员(instance_admin角色),不支持授予其他角色或用户。
drop workspace删除工作空间默认授予实例管理员(instance_admin角色),不支持授予其他角色或用户。

工作空间(workspace)权限点

限点用途说明
alter workspace修改工作空间默认授予该空间的空间管理员(workspace_admin)角色,不支持授予其他角色或用户。
create connection创建connection对象
create vcluster创建计算集群(virtual cluster)对象
create schema创建schema对象
create user将实例用户加入工作空间默认授予该工作空间的空间管理员(workspace_admin)角色,不支持授予其他角色或用户。
create role创建空间级别角色默认授予该工作空间的空间管理员(workspace_admin)角色,不支持授予其他角色或用户。

授权示例:

grant alter workspace on workspace meter_n_bill to user demo_user1;
grant create vcluster on workspace meter_n_bill to user demo_user1;
grant create schema on workspace meter_n_bill to user demo_user1;
grant create connection on workspace meter_n_bill to user demo_user1;

Schema 权限点

限点用途说明
alter schema修改schema
drop schema删除schema
read metadata查询schema的元数据,用于desc shcmea 和show schemas命令
create table创建table
create view创建view
create materialized view创建materialized view
create dynamic table创建dynamic table
create index创建index
create function创建function
create table steam创建table stream
all privileges包含schema对象的所有权限

授权示例:

grant alter schema on schema public to user demo_user1;
grant drop schema on schema public to user demo_user1;
grant read metadata on schema public to user demo_user1;

计算集群(virtual cluster)权限点

权限点用途说明
alter vcluster修改计算集群属性或开关机状态
drop vcluster删除计算集群
read metadata查询计算集群的元数据,用于show vclusters或desc vcluster命令
use vcluster使用计算集群
all privileges包含vcluster对象的所有权限

授权示例:

grant alter vcluster on vcluster default to user demo_user1;
grant drop vcluster on vcluster default to user demo_user1;
grant read metadata on vcluster default to user demo_user1;
grant use vcluster on vcluster default to user demo_user1;

Connection 权限点

权限点用途说明
read metadata用于查询connection的元数据
alter connection用于修改connection属性
drop connection用于删除指定connection
all privileges包含connection对象的所有权限

Table 权限点

权限点用途说明
read metadata查询table的元数据。用于执行show tables或desc table语句
select用于查询table中的数据
alter table用于修改table的属性或定义
drop table用于删除指定table对象
insert table用于向table中写入数据
delete table用于删除table中的数据
restore table用于恢复table中的数据到指定版本
truncate table用于清空table
update table更新table中的数据
all privileges包含table对象的所有权限

说明:

1)merge into table操作:需要同时具备table的insert、update和delete权限;

2)insert overwrite操作:需要同时具备table的insert 和delete权限;

3)copy into table操作:需要具备table的insert权限。

View 权限点

权限点用途说明
read metadata查询table的元数据。用于执行show views或desc veiw语句
select用于查询view中的数据
alter view用于修改view对象的属性或定义
drop view用于删除指定view对象
all privileges包含view对象的所有权限

Dynamic Table 权限点

权限点用途说明
read metadata查询dynamic table的元数据。用于执行show dynamic tables或desc dynamic table语句
select用于查询dynamic table中的数据
alter dynamic table用于修改dynamic table的属性或定义
drop dynamic table用于删除指定的dynamic table
restore dynamic table用于恢复dynamic table到指定版本
all privileges包含dynamic table对象的所有权限

Materialized view 权限点

权限点用途说明
read metadata查询materialized view的元数据。用于执行show materialized views或desc materialized view语句
select用于查询materialized view中的数据
alter materialized view用于修改materialized view的属性和定义
delete materialized view用于删除materialized view中的数据
drop materialized view用于删除指定materialized view
update materialized view用于刷新(refresh)materialized view对象
truncate materialized view用于清空指定materialized view中的数据
all privileges包含materialized view中的所有权限

Function 权限点

权限点用途说明
read metadata查询function的元数据。用于执行show functions或desc function语句
alter function用于修改指定function
use function可使用指定function
drop function用于删除指定function
all privileges包含function对象的所有权限

Volume 权限点

权限点用途说明
read metadata查看Volume对象元信息权限。
read volume读取Volume对象下文件及目录的权限。当需要查看Volume下文件列表、SQL读取Volume文件以及通过GET命令下载文件时需要。
write volume写入数据到Volume的权限。当需要通过PUT命令上传文件,通过REMOVE命令删除文件时需要。
alter volumeALTER VOLUME命令需要的权限。如:ALTER VOLUME REFRESH 刷新Volume下的文件元数据信息。
all privileges包含volume对象的所有权限

Table Stream 权限点

权限点用途说明
read metadata查看table stream对象的元数据
alter table stream修改table stream对象的属性或定义
select查询table stream中的数据
drop table stream删除指定table stream对象
all privileges包含table stream对象的所有权限

Index 权限点

权限点用途说明
read metadata查看index对象的元数据
drop index用于删除指定index
all privileges包含index对象的所有权限

Job 权限点

权限点用途说明
read metadata查看job对象的元数据不可用于授权。空间管理员角色(workspace_admin)以及job执行者默认拥有此权限。
terminate job用于结束指定job不可用于授权。job执行者默认拥有此权限。
all privileges包含job对象的所有权限不可用于授权。job执行者默认拥有此权限。

ALL 权限点

ALL 权限点是各类元数据对象上均存在的一个权限点,表达该对象的所有权限点。ALL权限点是一个独立的权限点,与其他权限点并非指代关系。因此授予ALL权限点不会覆盖授予其他权限点,解除ALL权限点也不会解除其他权限点。

例如:对user my_user 先后授予了example_table的select和ALL权限点。则此时my_user用户由于被授予了ALL权限点,可以对example_table执行所有操作;在查询my_user用户对example_table的权限时,显示同时拥有的select和all权限点的授权。当对my_user用户解除ALL权限点的授权时,my_user用户仍具备对example_table进行select操作的权限。

使用ALL权限点可以快速完成对一个对象所有权限的授予,例如:

Grant all privileges on table example_table to user my_user;

联系我们
预约咨询
微信咨询
电话咨询