内置角色和权限AuraDB Business CriticalAuraDB Virtual Dedicated Cloud企业版
简介
Neo4j 提供了一组内置角色,可用于控制对数据库的访问。PUBLIC 角色是所有用户的默认角色。它不赋予关于数据的任何权利或能力,甚至连读取权限都没有。其余内置角色具有层级关系,其中 reader(读者)角色位于底部,而 admin(管理员)角色位于顶部,拥有所有权限。
用户可以拥有多个分配的角色,这些角色的并集决定了用户可以对数据执行哪些操作。例如,分配给 reader 角色的用户可以执行过程,因为所有用户也被分配到了 PUBLIC 角色,而该角色启用了此项能力。
内置角色具有以下默认权限
PUBLIC-
-
访问主数据库的权限。
-
以用户自身权限执行过程。
-
以用户自身权限执行用户自定义函数。
-
加载数据。
-
reader-
-
访问所有数据库的权限。
-
遍历和读取数据图(所有节点、关系、属性)。
-
查看索引、约束以及未来任何其他模式结构。
-
editor-
-
访问所有数据库的权限。
-
遍历、读取和写入数据图。
-
写入权限,仅限于创建和更改图中现有的属性键、节点标签和关系类型。换句话说,
editor角色无法向模式(schema)添加内容,只能对已经存在的对象进行更改。 -
查看索引、约束以及未来任何其他模式结构。
-
publisher-
-
访问所有数据库的权限。
-
遍历、读取和写入数据图。
-
查看索引、约束以及未来任何其他模式结构。
-
architect-
-
访问所有数据库的权限。
-
遍历、读取和写入数据图。
-
创建/删除/查看索引和约束,以及未来任何其他模式结构。
-
admin-
-
访问所有数据库的权限。
-
遍历、读取和写入数据图。
-
加载数据。
-
创建/删除/查看索引和约束,以及未来任何其他模式结构。
-
以提升的权限执行过程。
-
执行管理过程。
-
以提升的权限执行用户自定义函数。
-
查看/终止查询。
-
管理数据库、用户、角色和权限。
-
当管理员挂起或删除其他用户时,适用以下规则
-
管理员可以挂起或删除任何其他用户(包括其他管理员),但不能删除自己。
-
当用户被挂起时,除非由管理员重新激活,否则无法重新登录。
-
在删除用户之前,无需从用户身上移除已分配的角色。
|
删除用户不会自动终止相关的连接、会话、事务或查询。 |
Neo4j 提供以下具有默认权限和功能的内置角色。其中也包含了社区版(Community Edition)中可用的功能子集。所有命令都要求执行该命令的用户具备相应的权利。
| 操作 | reader |
editor |
publisher |
architect |
admin |
PUBLIC |
在社区版中可用 |
|---|---|---|---|---|---|---|---|
更改自身密码 |
|
|
|
|
|
|
|
查看自身详细信息 |
|
|
|
|
|
|
|
查看自身事务 |
|
|
|
|
|
|
|
终止自身事务 |
|
|
|
|
|
|
|
查看自身权限 |
|
|
|
|
|
|
|
查看所有数据库 |
|
|
|
|
|
|
|
访问主数据库 |
|
|
|
|
|
|
|
访问所有数据库 |
|
|
|
|
|
|
|
读取数据 |
|
|
|
|
|
|
|
查看索引/约束 |
|
|
|
|
|
|
|
写入/更新/删除现有数据 |
|
|
|
|
|
||
创建新类型的属性键 |
|
|
|
|
|||
创建新类型的节点标签 |
|
|
|
|
|||
创建新类型的关系类型 |
|
|
|
|
|||
创建/删除索引/约束 |
|
|
|
||||
创建/删除用户 |
|
|
|||||
更改其他用户的名称 |
|
|
|||||
更改其他用户的密码 |
|
|
|||||
更改其他用户的主数据库 |
|
||||||
挂起/激活用户 |
|
||||||
创建/删除角色 |
|
||||||
更改角色名称 |
|
||||||
向用户分配/移除角色 |
|
||||||
创建/删除/变更数据库 |
|
||||||
启动/停止数据库 |
|
||||||
管理数据库访问 |
|
||||||
授予/拒绝/撤销权限 |
|
||||||
查看所有用户 |
|
|
|||||
查看所有角色 |
|
||||||
查看用户的全部分配角色 |
|
||||||
查看角色的全部用户 |
|
||||||
查看其他用户的权限 |
|
||||||
查看所有事务 |
|
|
|||||
终止所有事务 |
|
|
|||||
加载数据 |
|
|
|
||||
执行过程 |
|
|
|
||||
执行函数 |
|
|
|
||||
执行管理过程 |
|
|
|||||
动态更改配置 [1] |
|
||||||
PUBLIC 角色
所有用户都被授予 PUBLIC 角色,该角色不能被撤销或删除。默认情况下,它提供对默认数据库的访问权限,并允许加载数据,执行所有过程和用户自定义函数。
|
|
列出 PUBLIC 角色权限
SHOW ROLE PUBLIC PRIVILEGES AS COMMANDS
| command(命令) |
|---|
|
|
|
|
行:4 |
重新创建 PUBLIC 角色
PUBLIC 角色无法删除,因此无需重新创建该角色本身。要将该角色恢复到其原始功能,需要执行两个步骤。
首先,应撤销该角色的所有 GRANT 或 DENY 权限(请参阅 SHOW ROLE PUBLIC PRIVILEGES AS REVOKE COMMANDS 的输出以了解如何撤销)。其次,运行这些查询
GRANT ACCESS ON HOME DATABASE TO PUBLIC
GRANT EXECUTE PROCEDURES * ON DBMS TO PUBLIC
GRANT EXECUTE USER DEFINED FUNCTIONS * ON DBMS TO PUBLIC
GRANT LOAD ON ALL DATA TO PUBLIC
生成的 PUBLIC 角色现在拥有与原始内置 PUBLIC 角色相同的权限。
reader 角色
reader 角色可以在除 system 数据库之外的所有图上执行只读查询。
列出 reader 角色权限
SHOW ROLE reader PRIVILEGES AS COMMANDS
| command(命令) |
|---|
|
|
|
|
|
行:5 |
editor 角色
editor 角色可以在除 system 数据库之外的所有图上执行读写操作,但它不能创建新的标签、属性键或关系类型。
列出 editor 角色权限
SHOW ROLE editor PRIVILEGES AS COMMANDS
| command(命令) |
|---|
|
|
|
|
|
|
行数: 6 |
重新创建 editor 角色
要将该角色恢复到其原始功能,需要执行两个步骤。首先,执行 DROP ROLE editor。其次,运行这些查询
CREATE ROLE editor
GRANT ACCESS ON DATABASE * TO editor
GRANT MATCH {*} ON GRAPH * TO editor
GRANT WRITE ON GRAPH * TO editor
GRANT SHOW CONSTRAINT ON DATABASE * TO editor
GRANT SHOW INDEX ON DATABASE * TO editor
生成的 editor 角色现在拥有与原始内置 editor 角色相同的权限。
publisher 角色
publisher 角色可以执行与 editor 相同的操作,此外还可以创建新的标签、属性键和关系类型。
列出 publisher 角色权限
SHOW ROLE publisher PRIVILEGES AS COMMANDS
| command(命令) |
|---|
|
|
|
|
|
|
|
行:7 |
重新创建 publisher 角色
要将该角色恢复到其原始功能,需要执行两个步骤。首先,执行 DROP ROLE publisher。其次,运行这些查询
CREATE ROLE publisher
GRANT ACCESS ON DATABASE * TO publisher
GRANT MATCH {*} ON GRAPH * TO publisher
GRANT WRITE ON GRAPH * TO publisher
GRANT NAME MANAGEMENT ON DATABASE * TO publisher
GRANT SHOW CONSTRAINT ON DATABASE * TO publisher
GRANT SHOW INDEX ON DATABASE * TO publisher
生成的 publisher 角色现在拥有与原始内置 publisher 角色相同的权限。
architect 角色
architect 角色可以执行与 publisher 相同的操作,此外还可以创建和管理索引和约束。
列出 architect 角色权限
SHOW ROLE architect PRIVILEGES AS COMMANDS
| command(命令) |
|---|
|
|
|
|
|
|
|
|
|
行:9 |
重新创建 architect 角色
要将该角色恢复到其原始功能,需要执行两个步骤。首先,执行 DROP ROLE architect。其次,运行这些查询
CREATE ROLE architect
GRANT ACCESS ON DATABASE * TO architect
GRANT MATCH {*} ON GRAPH * TO architect
GRANT WRITE ON GRAPH * TO architect
GRANT NAME MANAGEMENT ON DATABASE * TO architect
GRANT SHOW CONSTRAINT ON DATABASE * TO architect
GRANT CONSTRAINT MANAGEMENT ON DATABASE * TO architect
GRANT SHOW INDEX ON DATABASE * TO architect
GRANT INDEX MANAGEMENT ON DATABASE * TO architect
生成的 architect 角色现在拥有与原始内置 architect 角色相同的权限。
admin 角色
admin 角色可以执行与 architect 相同的操作,此外还可以管理数据库、别名、用户、角色和权限。
admin 角色可以执行管理任务。这些包括执行以下几类任务的权利:
这些权利通过可以使用 GRANT, DENY 和 REVOKE 命令管理的权限来赋予。
列出 admin 角色权限
SHOW ROLE admin PRIVILEGES AS COMMANDS
| command(命令) |
|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行数: 14 |
如果内置 admin 角色已被更改或删除,并且需要恢复到原始状态,请参阅 密码和用户恢复。
重新创建 admin 角色
要将该角色恢复到其原始功能,需要执行两个步骤。首先,执行 DROP ROLE admin。其次,运行这些查询
CREATE ROLE admin
GRANT ALL DBMS PRIVILEGES ON DBMS TO admin
GRANT TRANSACTION MANAGEMENT ON DATABASE * TO admin
GRANT START ON DATABASE * TO admin
GRANT STOP ON DATABASE * TO admin
GRANT MATCH {*} ON GRAPH * TO admin
GRANT WRITE ON GRAPH * TO admin
GRANT LOAD ON ALL DATA TO admin
GRANT ALL ON DATABASE * TO admin
生成的 admin 角色现在拥有与原始内置 admin 角色相同的有效权限。
有关恢复 admin 角色的更多信息,请参阅 恢复管理员角色。