内置角色和权限
简介
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
角色的更多信息,请参阅 恢复管理员角色。