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