跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

GRANT

GRANT向当前服务组中的用户或角色授予权限。

前提条件

先连接 Graph 服务,在 GQL 客户端中执行命令。

  • 要授予权限,您必须是该权限涉及的资源对象的所有者或具有该服务组的ADMIN角色的用户。
  • 向角色授权时,该角色需已创建。更多信息,请参见 CREATE ROLE。
  • 向用户授权时,该用户需已创建并加入当前服务组。更多信息,请参见创建用户和 INVITE USER。

限制条件

  • 待授予权限的角色不能是角色ADMIN。
  • 待授予权限的资源对象不能是临时图。
  • 不能授予/default_schema的USAGE。所有用户都已隐式拥有该 Schema 的访问权。

直接权限和角色权限会合并生效。为便于统一管理多个用户,建议优先向角色授权。完整示例请参见为用户配置访问权限。

具有ADMIN角色的用户已经拥有当前服务组中的全部权限。向该用户直接授予普通权限不会扩大其实际访问能力。

语法

grant_privileges_command
GRANT action , ON resource_object_type resource_object_reference , TO USER user_name ROLE role_name

grant_privileges_command ::=
    'GRANT' action (',' action )* ('ON' resource_object_type resource_object_reference (',' resource_object_reference)* )? 'TO'  ( ('USER' user_name) | ( 'ROLE' role_name) )

参数

action

需要授予或撤销的操作。各类资源支持的操作见可以授予的权限。

如果是针对服务组或 Catalog 的操作,可以授予用户或角色,且命令中不需要指定resource_object_type或resource_object_reference。

resource_object_type

目标资源类型,可选值为SCHEMA、GRAPH TYPE、GRAPH、NODE TYPE、EDGE TYPE、NODE PROPERTY、EDGE PROPERTY和PROCEDURE。每种操作适用的资源对象类型请参见权限参考。

更多信息,请参见资源对象。

resource_object_reference

用于定位目标资源的引用。可使用当前 Schema 中的名称,或带 Schema 路径的引用:

资源类型 当前 Schema 中的写法 包含 Schema 路径的写法
SCHEMA schema_reference schema_reference
GRAPH TYPE和GRAPH graph_type_name
graph_name
schema_reference/graph_type_name
schema_reference/graph_name
PROCEDURE procedure_name(parameter_type, ...) `schema_reference/procedure_name`(parameter_type, ...)
NODE TYPE和EDGE TYPE graph_name.node_type_name
graph_name.edge_type_name
schema_reference/graph_name.node_type_name
schema_reference/graph_name.edge_type_name
NODE PROPERTY和EDGE PROPERTY graph_name.node_type_name.node_property_name
graph_name.edge_type_name.edge_property_name
schema_reference/graph_name.node_type_name.node_property_name
schema_reference/graph_name.edge_type_name.edge_property_name

如果同名 UDP 存在多个签名,必须指定参数类型。例如:

GRANT EXECUTE ON PROCEDURE `/default_schema/ufoo`(INT) TO ROLE role1
  • SCHEMA对象始终使用schema_reference指定。
  • 其他对象位于当前 Schema 时可省略 Schema 路径;位于其他 Schema 时,需包含schema_reference。设置和查看当前 Schema 见 SESSION SET SCHEMA 和 SHOW CURRENT_SCHEMA。
  • schema_reference可以是对应 Schema 所在绝对路径或相对路径。更多信息,请参见 CREATE SCHEMA。

user_name

接收权限的用户名。

role_name

接收权限的角色名。

示例

  • role1需已创建,user1需已加入服务组。角色创建方法见 CREATE ROLE。
  • 当前 Schema 示例使用示例数据集中的movie图;先选择加载该数据集的 Schema。
  • 使用/my_schema路径的示例前,请在该 Schema 中准备对应对象,或替换为已有对象路径。

授予 Schema 访问权

将USAGE直接授予用户:

GRANT USAGE ON SCHEMA /my_schema TO USER user1

也可以将USAGE授予角色:

GRANT USAGE ON SCHEMA /my_schema TO ROLE role1

USAGE不会授予 Schema 中对象的权限。例如,要允许user1查询/my_schema中的图,需要同时授予以下权限:

'''
GRANT USAGE ON SCHEMA /my_schema TO USER user1
'''

'''
GRANT MATCH ON GRAPH /my_schema/movie TO USER user1
'''

更多信息,请参见 Schema 访问控制。

授予当前图的查询权限

GRANT MATCH ON GRAPH movie TO ROLE role1

授予指定图的查询权限

GRANT MATCH ON GRAPH /my_schema/movie TO ROLE role1

访问该图时,角色还需要拥有/my_schema的USAGE。

授予点类型的写入和查询权限

GRANT INSERT, MATCH ON NODE TYPE movie.Actor TO ROLE role1

授予点属性的查询权限

GRANT MATCH ON NODE PROPERTY movie.Actor.name TO ROLE role1