内置角色和权限
简介
Neo4j 提供了一组内置角色,可用于控制对数据库的访问。PUBLIC 角色是所有用户的默认角色。它不赋予任何关于数据的权利或能力,甚至不包括读取权限。其余内置角色是分层的,reader 角色位于底部,admin 角色位于顶部,拥有所有权限。
一个用户可以拥有多个分配的角色,这些角色的并集决定了用户可以对数据执行哪些操作。例如,被分配 reader 角色的用户可以执行存储过程,因为所有用户也被分配了 PUBLIC 角色,该角色启用了此功能。
内置角色具有以下默认权限
PUBLIC-
-
访问主数据库。
-
使用用户自己的权限执行存储过程。
-
使用用户自己的权限执行用户定义函数。
-
加载数据。
-
reader-
-
访问所有数据库。
-
遍历和读取数据图(所有节点、关系、属性)。
-
显示索引和约束以及任何其他未来的模式结构。
-
editor-
-
访问所有数据库。
-
遍历、读取和写入数据图。
-
写入访问权限,仅限于创建和更改图中现有的属性键、节点标签和关系类型。换句话说,
editor角色不能向模式添加内容,只能更改已存在的对象。 -
显示索引和约束以及任何其他未来的模式结构。
-
publisher-
-
访问所有数据库。
-
遍历、读取和写入数据图。
-
显示索引和约束以及任何其他未来的模式结构。
-
architect-
-
访问所有数据库。
-
遍历、读取和写入数据图。
-
创建/删除/显示索引和约束以及任何其他未来的模式结构。
-
admin-
-
访问所有数据库。
-
遍历、读取和写入数据图。
-
加载数据。
-
创建/删除/显示索引和约束以及任何其他未来的模式结构。
-
使用提升的权限执行存储过程。
-
执行管理存储过程。
-
使用提升的权限执行用户定义函数。
-
查看/终止查询。
-
管理数据库、用户、角色和权限。
-
当管理员暂停或删除另一个用户时,适用以下规则
-
管理员可以暂停或删除任何其他用户(包括其他管理员),但不能暂停或删除自己。
-
暂停后,用户将无法再次登录,直到管理员重新激活。
-
在删除用户之前,无需从用户中删除已分配的角色。
|
删除用户不会自动终止相关的连接、会话、事务或查询。 |
Neo4j 提供以下具有默认权限和功能的内置角色。其中还包括社区版可用的功能子集。所有命令都要求执行命令的用户拥有相应的权限。
| 操作 | |
|
|
|
|
|
社区版可用 |
|---|---|---|---|---|---|---|---|
更改自己的密码 |
|
|
|
|
|
|
|
查看自己的详细信息 |
|
|
|
|
|
|
|
查看自己的事务 |
|
|
|
|
|
|
|
终止自己的事务 |
|
|
|
|
|
|
|
查看自己的权限 |
|
|
|
|
|
|
|
查看所有数据库 |
|
|
|
|
|
|
|
访问主数据库 |
|
|
|
|
|
|
|
访问所有数据库 |
|
|
|
|
|
|
|
读取数据 |
|
|
|
|
|
|
|
查看索引/约束 |
|
|
|
|
|
|
|
写入/更新/删除现有数据 |
|
|
|
|
|
||
创建新类型的属性键 |
|
|
|
|
|||
创建新类型的节点标签 |
|
|
|
|
|||
创建新类型的关系类型 |
|
|
|
|
|||
创建/删除索引/约束 |
|
|
|
||||
创建/删除用户 |
|
|
|||||
更改其他用户的名称 |
|
|
|||||
更改其他用户的密码 |
|
|
|||||
更改其他用户的主数据库 |
|
||||||
暂停/激活用户 |
|
||||||
创建/删除角色 |
|
||||||
更改角色名称 |
|
||||||
分配/移除用户角色 |
|
||||||
创建/删除/修改数据库 |
|
||||||
启动/停止数据库 |
|
||||||
管理数据库访问 |
|
||||||
授予/拒绝/撤销权限 |
|
||||||
查看所有用户 |
|
|
|||||
查看所有角色 |
|
||||||
查看用户的所有角色 |
|
||||||
查看角色的所有用户 |
|
||||||
查看其他用户的权限 |
|
||||||
查看所有事务 |
|
|
|||||
终止所有事务 |
|
|
|||||
加载数据 |
|
|
|
||||
执行存储过程 |
|
|
|
||||
执行函数 |
|
|
|
||||
执行管理存储过程 |
|
|
|||||
动态更改配置 [1] |
|
||||||
PUBLIC 角色
所有用户都被授予 PUBLIC 角色,该角色不能被撤销或删除。默认情况下,它授予对默认数据库的访问权限,并允许加载数据、执行所有存储过程和用户定义函数。
|
|
列出 PUBLIC 角色权限
SHOW ROLE PUBLIC PRIVILEGES AS COMMANDS
| 命令 |
|---|
|
|
|
|
行数: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
| 命令 |
|---|
|
|
|
|
|
行数:5 |
editor 角色
editor 角色可以对除 system 数据库之外的所有图执行读写操作,但不能创建新的标签、属性键或关系类型。
列出 editor 角色权限
SHOW ROLE editor PRIVILEGES AS COMMANDS
| 命令 |
|---|
|
|
|
|
|
|
行数: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
| 命令 |
|---|
|
|
|
|
|
|
|
行数: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
| 命令 |
|---|
|
|
|
|
|
|
|
|
|
行数: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
| 命令 |
|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行数: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 角色的更多信息,请参阅 恢复管理员角色。