Source: https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/manage-roles/ Documentation version: v5.3.2 # 管理角色和权限 角色用于向多个用户分配同一组权限。本页介绍如何查看授权、创建和分配角色,以及调整或撤销已有权限。首次开通访问权限时,先按[为用户配置访问权限](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/configure-user-access/)操作。 ## 前提条件 - 已连接目标服务组。更多信息,请参见[连接并完成首次查询](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/first-query/)。 - 要创建角色、将角色授予用户或从用户撤销角色,执行操作的用户必须具有`ADMIN`角色。 - 待授权用户已创建,并已通过`INVITE USER`加入当前服务组。 - 示例使用`/default_schema/movie`;先[加载 movie 示例数据](https://dev-docs.yueshu.com.cn/v5.3.2/get-started/first-query/#load),或将其替换为已有图路径。 ## 查看用户已有的角色和权限 查看用户拥有的角色: ```` SHOW ROLES FOR USER user1 ```` 查看已有角色中的权限。将`movie_reader`替换为实际角色名;尚未创建角色时,先完成下一节: ```` SHOW PRIVILEGES FOR ROLE movie_reader ```` 查看用户的直接授权和角色授权记录: ```` SHOW PRIVILEGES FOR USER user1 ```` `SHOW PRIVILEGES FOR USER`不会完整显示`ADMIN`、资源 Owner(所有者)或上级资源权限带来的实际权限。因此,调整权限后,还应使用目标用户执行实际操作,确认最终结果。 ## 创建并分配角色 如果多个用户需要相同权限,可以创建一个角色并将其分配给这些用户。 1. 创建角色。例如,创建只读角色`movie_reader`: ```` CREATE ROLE IF NOT EXISTS movie_reader COMMENT "Read movie graph" ```` 创建角色的用户将成为角色 Owner(所有者)。角色 Owner 或具有`ADMIN`角色的用户可以修改角色描述或删除该角色。只有具有`ADMIN`角色的用户可以将角色授予用户或从用户撤销角色。 2. 向角色授予权限: ```` ''' GRANT CONNECT TO ROLE movie_reader ''' ''' GRANT MATCH ON GRAPH /default_schema/movie TO ROLE movie_reader ''' ```` 资源位于非默认 Schema 时,还需授予该 Schema 的`USAGE`。完整示例见[使用角色配置访问权限](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/configure-user-access/#_4)。 执行授权的用户必须是目标资源的 Owner,或者具有`ADMIN`角色。有关支持的资源和操作,请参见[权限参考](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/privilege-reference/)。 3. 将角色授予用户: ```` GRANT ROLE movie_reader TO USER user1 ```` 一个用户最多可以拥有 16 个自定义角色。用户可以同时拥有多个角色,这些角色中的权限会合并生效。角色只能授予用户,不能授予其他角色。 ## 调整角色 向角色增加权限: ```` GRANT INSERT ON GRAPH /default_schema/movie TO ROLE movie_reader ```` 从角色中撤销权限: ```` REVOKE INSERT ON GRAPH /default_schema/movie FROM ROLE movie_reader ```` 修改角色描述: ```` ALTER ROLE movie_reader SET COMMENT = "Read movie data" ```` 修改角色会影响所有拥有该角色的用户。用`SHOW PRIVILEGES FOR ROLE movie_reader`核对授权记录,再以目标用户验证操作结果。 ## 撤销或删除角色 从用户撤销角色: ```` REVOKE ROLE movie_reader FROM USER user1 ```` 删除不再需要的角色: ```` DROP ROLE movie_reader ```` 如果用户仍通过其他角色、直接授权或 Owner 身份获得相同权限,撤销或删除一个角色后,用户可能仍能执行相应操作。 ## 管理直接授予用户的权限 对于单个用户临时或特殊的授权需求,可以直接授权: ```` GRANT MATCH ON GRAPH /default_schema/movie TO USER user1 ```` 不再需要时,撤销该权限: ```` REVOKE MATCH ON GRAPH /default_schema/movie FROM USER user1 ```` 直接授权适合少量特殊情况。多个用户需要相同权限时,建议使用角色,避免逐个调整用户权限。 ## 管理资源 Owner 即使没有显式授权,资源 Owner 也可以管理其拥有的资源。可以使用`ALTER OWNER`转移 Schema、图类型、图或 UDP 的 Owner: ```` ALTER OWNER GRAPH /default_schema/movie TO USER user1 ```` 转移 Owner 不会自动授予非默认 Schema 的`USAGE`。新 Owner 如果需要访问该资源,仍必须具有父级 Schema 的访问权限。Owner 可以执行的操作请参见[权限参考](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/privilege-reference/),命令语法请参见 [ALTER OWNER](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/alter-owner/)。 ## 命令参考 - 角色管理:[CREATE ROLE](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/create-role/)、[ALTER ROLE](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/alter-role/) 和 [DROP ROLE](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/drop-role/)。 - 为用户分配角色:[GRANT ROLE](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/grant-role/) 和 [REVOKE ROLE](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/revoke-role/)。 - 授予或撤销权限:[GRANT](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/grant-privilege/) 和 [REVOKE](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/revoke-privilege/)。 - 查看角色、权限和 Owner:[SHOW ALL ROLES](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-all-roles/)、[SHOW ROLES](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-roles/)、[SHOW PRIVILEGES](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-privileges/) 和 [SHOW OBJECTS](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-objects/)。