权限
权限是执行某项操作的许可。用户必须具有特定权限,才能在 TiDB Cloud Lake 中执行特定操作。例如,查询表时,用户需要具有该表的 SELECT 权限。类似地,要读取 stage 中的数据集,用户必须具有 READ 权限。
在 TiDB Cloud Lake 中,权限授予给角色。用户通过分配给他们的角色获得权限。
管理权限
要管理角色的权限,请使用以下命令:
向角色授予权限
要授予权限,请先创建一个角色,将权限授予该角色,然后再将该角色授予需要该权限的用户。在以下示例中,首先创建了一个名为 'writer' 的新角色,并向其授予 'default' schema 中对象的所有权限。随后,创建新用户 'david',密码为 'abc123',并将 'writer' 角色授予 'david'。最后,显示 'writer' 已被授予的权限。
-- Create a new role named 'writer'
CREATE ROLE writer;
-- Grant all privileges on all objects in the 'default' schema to the role 'writer'
GRANT ALL ON default.* TO ROLE writer;
-- Create a new user named 'david' with the password 'abc123' and set the default role
CREATE USER david IDENTIFIED BY 'abc123' WITH DEFAULT_ROLE = 'writer';
-- Grant the role 'writer' to the user 'david'
GRANT ROLE writer TO david;
-- Show the granted privileges for the role 'writer'
SHOW GRANTS FOR ROLE writer;
┌───────────────────────────────────────────────────────┐
│ Grants │
├───────────────────────────────────────────────────────┤
│ GRANT ALL ON 'default'.'default'.* TO ROLE 'writer' │
└───────────────────────────────────────────────────────┘
从角色中回收权限
在访问控制的上下文中,权限是从角色中回收的。在以下示例中,我们从角色 'writer' 中回收其在 'default' schema 中所有对象上的全部权限,然后显示角色 'writer' 已被授予的权限:
-- Revoke all privileges on all objects in the 'default' schema from role 'writer'
REVOKE ALL ON default.* FROM ROLE writer;
-- Show the granted privileges for the role 'writer'
SHOW GRANTS FOR ROLE writer;
访问控制权限
TiDB Cloud Lake 提供了一系列权限,使你能够对数据库对象进行细粒度控制。TiDB Cloud Lake 权限可分为以下类型:
全局权限:这组权限适用于整个数据库管理系统,而不是系统中的特定对象。全局权限授予会影响数据库整体功能和管理的操作,例如创建或删除数据库、管理用户和角色,以及修改系统级设置。有关包含哪些权限,请参见全局权限。
对象特定权限:对象特定权限包含不同的权限集,每一种都适用于特定的数据库对象。其中包括:
所有权限
全局权限
表权限
视图权限
数据库权限
请注意,一旦你对数据库具有以下任一权限,或对该数据库中的某个表具有任意权限,就可以使用 USE DATABASE 命令来指定数据库。
Note:
- 如果某个角色拥有数据库,则该角色可以访问该数据库中的所有表。
会话策略权限
Stage 权限
Note:
- 不检查 external location auth。
UDF 权限
注意:
- 如果 udf 已经被 constant fold,则不检查其 auth。
- 如果 udf 是 insert 中的一个值,则不检查其 auth。
Catalog 权限
Share 权限
可以使用相同的 SQL 权限模型(GRANT/REVOKE)对 share 对象授予和(权限)回收 share 权限。
Connection 权限
Sequence 权限
Procedure 权限
Masking Policy 权限
除了全局 CREATE MASKING POLICY 和 APPLY MASKING POLICY 权限外,还可以为单个 masking policy 授予访问权限:
Row Access Policy 权限
Row access policy 采用相同的治理模型。除了全局 CREATE ROW ACCESS POLICY 和 APPLY ROW ACCESS POLICY 权限外,还可以在需要时按 policy 授予访问权限:
