管理员角色权限

您可以使用内置的 admin 角色管理 DBMS 权限,也可以通过创建具有所需特定权限的自定义角色来进行管理。

使用内置的 admin 角色管理 DBMS 权限

admin 角色是一个内置的超级用户角色,拥有 DBMS 上的所有权限,并可执行所有管理任务。

这包括以下任务及其相关权限:

为了使某用户能够执行这些任务,您可以为其授予 admin 角色,但也可以创建一个仅包含这些权限子集的自定义角色。所有权限均可通过 Cypher 命令进行分配。

使用自定义角色管理 DBMS 权限

您可以通过向角色授予所需权限来创建自定义角色以管理 DBMS 权限。或者,您可以复制 admin 角色并撤销或拒绝不需要的权限。以下示例展示了如何通过这两种方法创建一个仅包含 admin 角色权限子集的自定义角色。

从零开始创建自定义管理员角色

通过创建一个新角色并授予 USER MANAGEMENT(用户管理)和 ROLE MANAGEMENT(角色管理)权限,创建一个仅能管理用户和角色的管理员角色。

  1. 创建新角色

    CREATE ROLE userAndRoleAdministrator;
  2. 授予管理用户的权限

    GRANT USER MANAGEMENT ON DBMS TO userAndRoleAdministrator;
  3. 授予管理角色的权限

    GRANT ROLE MANAGEMENT ON DBMS TO userAndRoleAdministrator;

    结果,userAndRoleAdministrator 角色仅拥有允许管理用户和角色的权限。

  4. 若要以命令形式列出 userAndRoleAdministrator 角色的所有权限,请使用以下查询:

    SHOW ROLE userAndRoleAdministrator PRIVILEGES AS COMMANDS;
    表 1. 结果
    command(命令)

    "GRANT ROLE MANAGEMENT ON DBMS TO `userAndRoleAdministrator`"

    "GRANT USER MANAGEMENT ON DBMS TO `userAndRoleAdministrator`"

    行:2

此角色不允许执行所有 DBMS 功能。例如,该角色缺少管理、创建和删除数据库的权限,以及执行 admin 存储过程的权限。要创建一个权限更强大的管理员,您可以授予一组不同的权限。

从零开始创建功能更强大的自定义管理员角色

您还可以创建具有受限功能的自定义管理员角色。这可以通过创建一个新角色并授予所有 DBMS 权限,然后拒绝您不希望该角色拥有的权限,最后再授予想要包含的其他权限来实现。例如,您可以创建一个自定义管理员角色 customAdministrator,该角色拥有除创建、删除和修改数据库之外的所有 DBMS 权限,同时还拥有管理事务的权限。

  1. 创建一个新角色

    CREATE ROLE customAdministrator;
  2. 授予所有 DBMS 功能权限

    GRANT ALL DBMS PRIVILEGES ON DBMS TO customAdministrator;
  3. 显式拒绝管理数据库的权限

    DENY DATABASE MANAGEMENT ON DBMS TO customAdministrator;
  4. 授予事务管理权限

    GRANT TRANSACTION MANAGEMENT (*) ON DATABASE * TO customAdministrator;

    结果,customAdministrator 角色拥有的权限包括事务管理权限以及除创建、删除和修改数据库之外的所有 DBMS 权限。

  5. 若要以命令形式列出 customAdministrator 角色的所有权限,请使用以下查询:

    SHOW ROLE customAdministrator PRIVILEGES AS COMMANDS;
    表 2. 结果
    command(命令)

    "DENY DATABASE MANAGEMENT ON DBMS TO `customAdministrator`"

    "GRANT ALL DBMS PRIVILEGES ON DBMS TO `customAdministrator`"

    "GRANT TRANSACTION MANAGEMENT (*) ON DATABASE * TO `customAdministrator`"

    行:3

通过复制 admin 角色创建自定义管理员角色

您还可以通过复制 admin 角色,然后撤销或拒绝您不需要的权限来创建自定义管理员角色。例如,您可以创建一个名为 newAdministrator 的新角色,该角色拥有 admin 角色的所有权限,然后撤销其读取/写入/加载数据、管理约束、索引、名称的能力,并移除访问所有数据库(system 数据库除外)的能力。

  1. 通过复制 admin 角色创建新角色

    CREATE ROLE newAdministrator AS COPY OF admin;
  2. 撤销读取/写入/加载数据的能力

    REVOKE GRANT MATCH {*} ON GRAPH * NODE * FROM newAdministrator;
    REVOKE GRANT MATCH {*} ON GRAPH * RELATIONSHIP * FROM newAdministrator;
    REVOKE GRANT WRITE ON GRAPH * FROM newAdministrator;
    REVOKE GRANT LOAD ON ALL DATA FROM newAdministrator;
  3. 撤销管理索引/约束/名称的能力

    REVOKE GRANT CONSTRAINT MANAGEMENT ON DATABASE * FROM newAdministrator;
    REVOKE GRANT INDEX MANAGEMENT ON DATABASE * FROM newAdministrator;
    REVOKE GRANT NAME MANAGEMENT ON DATABASE * FROM newAdministrator;
    REVOKE GRANT SHOW CONSTRAINT ON DATABASE * FROM newAdministrator;
    REVOKE GRANT SHOW INDEX ON DATABASE * FROM newAdministrator;
  4. 撤销访问所有数据库的能力

    REVOKE GRANT ACCESS ON DATABASE * FROM newAdministrator;
  5. 授予访问 system 数据库的能力

    GRANT ACCESS ON DATABASE system TO newAdministrator;
  6. 若要以命令形式列出 newAdministrator 角色的所有权限,请使用以下查询:

    SHOW ROLE newAdministrator PRIVILEGES AS COMMANDS;
    表 3. 结果
    command(命令)

    "GRANT ACCESS ON DATABASE system TO `newAdministrator`"

    "GRANT ALL DBMS PRIVILEGES ON DBMS TO `newAdministrator`"

    "GRANT START ON DATABASE * TO `newAdministrator`"

    "GRANT STOP ON DATABASE * TO `newAdministrator`"

    "GRANT TRANSACTION MANAGEMENT (*) ON DATABASE * TO `newAdministrator`"

    行:5