跳转至

PERMISSION

AIR 支持通过 SQL 语句对数据资源进行权限管理,包括授权(GRANT)、回收权限(REVOKE)和查询权限(SHOW GRANTS)。

语法约定

符号 类型 说明
[ xxx ] 可选字段 表示该部分的语法是可选的。
(aaa | bbb | ccc) 可选字段 表示该部分的内容为N选1,选择的内容只能为aaa,bbbccc
< 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> 权限类型,支持:SELECTCREATEDROPDELETEALTERGRANTINSERT,多个权限用逗号分隔
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 账号类型:USERUSER_GROUP
name 账号名称
permissions 拥有的权限列表,如 ["SELECT", "CREATE"]

权限继承规则

AIR 权限体系支持层级继承:

  • TABLE 级别权限:合并自身 + 所属 SCHEMA + 所属 CATALOG 的权限
  • SCHEMA 级别权限:合并自身 + 所属 CATALOG 的权限
  • CATALOG 级别权限:仅自身权限

当上级与下级存在同账号的权限配置时,下级的权限配置覆盖上级(就近优先)。