基于角色的访问控制(Perspectives 和 Scenes)

企业版

存储和共享 中所述,当使用 Bloom 服务器插件时,Perspectives 会存储在持久化的 Neo4j 数据库中。这意味着 Perspectives 和 Scenes 不仅可以在用户之间共享,而且管理员可以控制用户对它们的访问权限。要使用户能够创建和/或编辑 Perspective,他们需要对 `_Bloom_Perspective_` 标签和 `_Bloom_Scene_` 标签拥有 WRITE 访问权限,以便能够写入 Scene。请注意,`WRITE` 访问权限仅需要针对这两个标签,而不是整个数据库。

存储和共享 中所述,为用户创建自定义角色可以使管理员在访问控制方面更加明确。

请记住,所有具有 Bloom 访问权限的角色都需要在 `neo4j.conf` 文件中使用 `neo4j.bloom.authorization.role`(在 Neo4j 4.x 中)或 `dbms.bloom.authorization_role`(在 Neo4j 5 中)进行授权。有关更多信息,请参阅 安装服务器插件 中的步骤 5。

还可以进行更细粒度的访问控制,管理员可以控制用户对哪些属性可以访问/编辑。包括角色管理在内的访问控制在 操作手册 → RBAC 和细粒度权限 部分中进行了详细说明。

除了对 `_Bloom_Perspective_` 和 `_Bloom_Scene_` 标签的 `WRITE` 访问权限外,还可以使用 CREATESET PROPERTY 权限来进一步细化角色。通过明确授予这些权限,而不是更通用的 `WRITE` 权限,管理员可以将访问权限限制为仅创建新节点和/或更新 Perspective 或 Scene 中的属性。有关如何使用有限访问权限创建自定义角色的示例,请参阅后面的示例。

如果用户没有相应的访问权限,Bloom 中的相关功能将被隐藏。例如,如果用户没有被授予对 Perspective 的 `WRITE` 访问权限,他们将无法在 Perspective 库中看到创建选项,也无法编辑保存的 Cypher,并且他们无法对 Perspective 进行任何修改。相应地,如果用户没有被授予对 Scene 的 `WRITE` 访问权限,他们将无法在 Scene 抽屉中看到添加新 Scene 选项。

temporary scene

如果用户没有对 Scene 的 `WRITE` 访问权限,他们的访问权限将被限制为临时 Scene。这允许对 Scene 进行样式设置和编辑,但这些更改无法保存,并且 Scene 会在会话结束时丢失。

示例角色

下面是如何创建具有 `READ` 访问权限的角色 `custom` 的示例。具有此角色的用户可以完全使用 Scene,而无需具有 `WRITE` 访问权限。

CREATE ROLE custom AS COPY OF reader
GRANT CREATE ON GRAPH `neo4j` NODE _Bloom_Scene_ TO `custom`
GRANT CREATE ON GRAPH `neo4j` RELATIONSHIP _Bloom_HAS_SCENE_ TO `custom`
GRANT SET PROPERTY {*} ON GRAPH `neo4j` NODE _Bloom_Scene_ TO `custom`
GRANT DELETE ON GRAPH `neo4j` NODE _Bloom_Scene_ TO `custom`
GRANT DELETE ON GRAPH `neo4j` RELATIONSHIP _Bloom_HAS_SCENE_ TO `custom`

数据库权限下的 Perspective 操作

下表根据授予用户的数据库权限映射了用户可以执行的各种 Perspective 操作。请注意,此表仅适用于 Bloom 插件设置,当存储由插件提供且 Perspectives 可以在用户之间共享时适用。对于没有插件的设置,Perspectives 会存储在用户机器上的本地位置,因此用户可以执行所有相关操作。

表 1. 数据库权限(带插件)
操作 只读 写入 写入 + 列出角色 写入 + 列出和创建角色

打开库

从库中选择 Perspective

允许本地 Perspective 编辑

保存编辑到存储

删除 Perspective

创建新/生成 Perspective

共享标签

查看已映射的角色

是,可以查看自己的角色,但不能更改

查看角色列表

无权访问

映射到角色

是(仅限默认数据库角色)

删除角色映射

创建新角色

无权访问

无权访问

导出

导入

具有数据库写入权限的用户(即可以创建 Perspectives 的用户)也可以导出和导入 Perspectives。