Source: https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/revoke-privilege/ Documentation version: v5.3.2 # REVOKE `REVOKE`撤销当前服务组中用户或角色的权限。 ## 前提条件 先[连接 Graph 服务](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/first-query/#connect),在 GQL 客户端中执行命令。 要撤销权限,您必须是该权限所涉及的资源对象的所有者或具有该服务组的`ADMIN`角色的用户。 ## 限制条件 - 待撤销权限的角色不能是角色`ADMIN`。 - 待撤销权限的资源对象不能是临时图。 - 不能撤销`/default_schema`的`USAGE`。 - Schema Owner 不能撤销自己对该 Schema 的隐式`USAGE`。 `REVOKE`只撤销命令中指定的授权来源。如果相同权限仍来自其他角色、直接授权、Owner 身份或上级资源权限,用户仍可执行相应操作。 具有`ADMIN`角色的用户始终拥有当前服务组中的全部权限。撤销直接授予该用户的普通权限不会缩小其实际访问能力。 ## 语法 语法图BNF revoke_privileges_command ```` revoke_privileges_command ::= 'REVOKE' action (',' action )* ('ON' resource_object_type resource_object_reference (',' resource_object_reference)* )? 'FROM' ( ('USER' user_name) | ( 'ROLE' role_name) ) ```` ## 参数 ### `action` 需要授予或撤销的操作。各类资源支持的操作见[可以授予的权限](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/privilege-reference/#_3)。 如果是针对服务组或 Catalog 的操作,无需指定`resource_object_type`或`resource_object_reference`。 ### `resource_object_type` 目标资源类型,可选值为`SCHEMA`、`GRAPH TYPE`、`GRAPH`、`NODE TYPE`、`EDGE TYPE`、`NODE PROPERTY`、`EDGE PROPERTY`和`PROCEDURE`。每种操作适用的资源对象类型请参见[权限参考](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/privilege-reference/)。 更多信息,请参见[资源对象](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/privilege-reference/#_2)。 ### `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 存在多个签名,必须指定参数类型。例如: ```` REVOKE EXECUTE ON PROCEDURE `/default_schema/ufoo`(INT) FROM ROLE role1 ```` - `SCHEMA`对象始终使用`schema_reference`指定。 - 其他对象位于当前 Schema 时可省略 Schema 路径;位于其他 Schema 时,需包含`schema_reference`。设置和查看当前 Schema 见 [SESSION SET SCHEMA](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/sessions/set/) 和 [SHOW CURRENT_SCHEMA](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-current-schema/)。 - `schema_reference`可以是对应 Schema 所在绝对路径或相对路径。更多信息,请参见 [CREATE SCHEMA](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/schema/create/#schema_reference)。 ### `user_name` 被撤销权限的用户名。 ### `role_name` 被撤销权限的角色名。 ## 示例 - `role1`需已创建,`user1`需已加入服务组。角色创建方法见 [CREATE ROLE](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/create-role/)。 - 当前 Schema 示例使用[示例数据集](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/example-dataset/)中的`movie`图;先选择加载该数据集的 Schema。 - 使用`/my_schema`路径的示例前,请在该 Schema 中准备对应对象,或替换为已有对象路径。 ### 撤销 Schema 访问权 撤销用户的`USAGE`: ```` REVOKE USAGE ON SCHEMA /my_schema FROM USER user1 ```` 也可以撤销角色的`USAGE`: ```` REVOKE USAGE ON SCHEMA /my_schema FROM ROLE role1 ```` 撤销`USAGE`后,受影响的用户无法访问该 Schema,但 Schema 中对象的权限和 Owner 信息不会被删除。重新授予`USAGE`后,未发生变化的对象权限可继续使用。更多信息,请参见 [Schema 访问控制](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/schema-access-control/)。 ### 撤销当前图的查询权限 ```` REVOKE MATCH ON GRAPH movie FROM ROLE role1 ```` ### 撤销指定图的查询权限 ```` REVOKE MATCH ON GRAPH /my_schema/movie FROM ROLE role1 ```` ### 撤销点类型的查询和写入权限 ```` REVOKE MATCH, INSERT ON NODE TYPE movie.Actor FROM ROLE role1 ```` ### 撤销点属性的查询权限 ```` REVOKE MATCH ON NODE PROPERTY movie.Actor.name FROM ROLE role1 ````