PERMISSION
AIR 支持通过 SQL 语句对数据资源进行权限管理,包括授权(GRANT)、回收权限(REVOKE)和查询权限(SHOW GRANTS)。
语法约定
| 符号 |
类型 |
说明 |
[ xxx ] |
可选字段 |
表示该部分的语法是可选的。 |
(aaa | bbb | ccc) |
可选字段 |
表示该部分的内容为N选1,选择的内容只能为aaa,bbb或ccc。 |
< xxx > |
标识符 |
该部分的内容是用户指定的标识符名,如集群名、表名、连接名等。 |
' xxx ' |
字符串 |
该部分为字符串。 |
资源类型
权限管理支持以下资源类型:
| 资源类型 |
说明 |
路径格式 |
CATALOG |
数据目录级别 |
<catalog> |
SCHEMA |
Schema 级别 |
<catalog>.<schema> |
TABLE |
表级别(包含视图、数据空间、投影、物理表等数据对象) |
<catalog>.<schema>.<table> |
账号类型
| 账号类型 |
说明 |
USER |
单个用户 |
USER_GROUP |
用户组 |
权限列表
| 权限 |
说明 |
SELECT |
查询数据 |
CREATE |
创建资源 |
DROP |
删除资源 |
DELETE |
删除数据 |
ALTER |
修改资源结构 |
GRANT |
授权权限(允许被授权者将权限授予他人) |
INSERT |
插入数据 |
ALL PRIVILEGES |
所有权限的简写 |
GRANT(授权)
GRANT 语法用于将指定资源的权限授予用户或用户组。
语法
GRANT ( <privilege> [, ...] | ALL PRIVILEGES )
ON (CATALOG | SCHEMA | TABLE) <resource_path>
TO (USER | USER_GROUP) '<account_name>'
[ VALIDITY PERIOD '<start_time>' TO '<end_time>' ]
| 参数 |
说明 |
<privilege> |
权限类型,支持:SELECT、CREATE、DROP、DELETE、ALTER、GRANT、INSERT,多个权限用逗号分隔 |
ALL PRIVILEGES |
授予所有权限 |
<resource_path> |
资源路径,格式取决于资源类型:CATALOG 为 <catalog>,SCHEMA 为 <catalog>.<schema>,TABLE 为 <catalog>.<schema>.<table> |
<account_name> |
账号名称(用户或用户组的名称) |
VALIDITY PERIOD |
可选子句,指定权限有效期,<start_time> 和 <end_time> 格式为 'yyyy-MM-dd HH:mm:ss'。省略表示永久有效 |
示例
-- 授予用户单表查询和创建权限
GRANT SELECT, CREATE ON TABLE my_catalog.my_schema.my_table
TO USER 'zhangsan';
-- 授予用户组 Schema 级别所有权限
GRANT ALL PRIVILEGES ON SCHEMA my_catalog.my_schema
TO USER_GROUP 'data_team';
-- 授予用户带有有效期的权限
GRANT SELECT ON TABLE my_catalog.my_schema.my_table
TO USER 'zhangsan'
VALIDITY PERIOD '2024-05-01 00:00:00' TO '2024-12-31 23:59:59';
-- 授予用户 Catalog 级别的查询权限
GRANT SELECT ON CATALOG my_catalog
TO USER 'lisi';
REVOKE(回收权限)
REVOKE 语法用于从用户或用户组回收指定资源的权限。该操作为幂等操作,权限不存在也返回成功。
语法
REVOKE [ GRANT OPTION FOR ]
( <privilege> [, ...] | ALL PRIVILEGES )
ON (CATALOG | SCHEMA | TABLE) <resource_path>
FROM (USER | USER_GROUP) '<account_name>'
| 参数 |
说明 |
GRANT OPTION FOR |
可选子句,仅回收授权权限(GRANT 权限),不影响其他权限 |
<privilege> |
要回收的权限类型,多个权限用逗号分隔 |
ALL PRIVILEGES |
回收所有权限 |
<resource_path> |
资源路径,格式与 GRANT 一致 |
<account_name> |
账号名称 |
示例
-- 回收用户单表查询权限
REVOKE SELECT ON TABLE my_catalog.my_schema.my_table
FROM USER 'zhangsan';
-- 回收用户组 Schema 级别所有权限
REVOKE ALL PRIVILEGES ON SCHEMA my_catalog.my_schema
FROM USER_GROUP 'data_team';
-- 仅回收用户的授权权限
REVOKE GRANT OPTION FOR ALL PRIVILEGES ON TABLE my_catalog.my_schema.my_table
FROM USER 'zhangsan';
SHOW GRANTS(查询权限)
SHOW GRANTS 语法用于查询指定资源上已授予的权限列表。查询结果会按层级继承:TABLE 级别查询会合并返回自身、所属 SCHEMA 和所属 CATALOG 的权限。
语法
SHOW GRANTS
[ ON (CATALOG | SCHEMA | TABLE) <resource_path> ]
| 参数 |
说明 |
<resource_path> |
资源路径。省略 ON 子句时,查询当前用户在所有资源上的权限 |
示例
-- 查询表上所有授权信息(含继承自 SCHEMA 和 CATALOG 的权限)
SHOW GRANTS ON TABLE my_catalog.my_schema.my_table;
-- 查询 Schema 上所有授权信息(含继承自 CATALOG 的权限)
SHOW GRANTS ON SCHEMA my_catalog.my_schema;
-- 查询 Catalog 上所有授权信息
SHOW GRANTS ON CATALOG my_catalog;
-- 查询当前用户所有权限
SHOW GRANTS;
返回字段
| 字段 |
说明 |
type |
账号类型:USER 或 USER_GROUP |
name |
账号名称 |
permissions |
拥有的权限列表,如 ["SELECT", "CREATE"] |
权限继承规则
AIR 权限体系支持层级继承:
- TABLE 级别权限:合并自身 + 所属 SCHEMA + 所属 CATALOG 的权限
- SCHEMA 级别权限:合并自身 + 所属 CATALOG 的权限
- CATALOG 级别权限:仅自身权限
当上级与下级存在同账号的权限配置时,下级的权限配置覆盖上级(就近优先)。