视角与场景的基于角色的访问控制
企业版
如 存储与共享 中所述,当使用 Bloom 服务器插件时,Perspectives(透视图)存储在持久化的 Neo4j 数据库中。这意味着不仅可以在用户之间共享 Perspectives 和 Scenes(场景),管理员还可以通过在存储 Perspective 的数据库上配置 RBAC(基于角色的访问控制)来控制用户对它们的访问权限。
要了解访问控制及角色管理,请参阅 操作手册 → RBAC 和细粒度权限。
用户若要创建和/或编辑 Perspective,需要对 _Bloom_Perspective_ 标签拥有 写入 (write) 权限。若要创建和/或编辑 Scene,则需要对 _Bloom_Scene_ 标签拥有写入权限。请注意,由于仅需针对这两个特定标签授予权限,而非整个数据库,因此可以相应地指定写入权限。有关所需的写入权限的更多信息,请参阅下文示例。
请记住,所有具有 Bloom 访问权限的角色都需要在 neo4j.conf 文件中进行授权,使用 neo4j.bloom.authorization.role(对于 Neo4j 4.x)或 dbms.bloom.authorization_role(对于 Neo4j 5)。更多信息请参阅 安装服务器插件 中的第 5 步。
您可以授予角色对整个图的 WRITE(写入)访问权限,也可以创建一个具有更有限访问权限的自定义角色。如果您想将角色的访问权限仅限于 Perspectives 和/或 Scenes,则需要结合使用对 _Bloom_Perspective_ 和 _Bloom_Scene_ 标签的 CREATE(创建)和 SET PROPERTY(设置属性)权限。通过显式授予这些权限,而不是通用的 WRITE 权限,管理员可以将访问权限限制为仅创建新节点和/或更新 Perspective 或 Scene 中的属性。有关如何创建具有有限访问权限的自定义角色的示例,请参见后续内容。
如果用户缺乏相应的访问权限,Bloom 中相应的的功能将被隐藏。例如,如果用户未被授予对某个 Perspective 的写入权限,他们将无法在 Perspective 图库中看到“创建”选项,无法编辑“已保存的 Cypher”,并且无法对 Perspective 进行任何修改。同样,如果用户未被授予对某个 Scene 的写入权限,他们将无法在 Scene 抽屉中看到“添加新场景”选项。
如果用户缺乏对 Scenes 的写入权限,他们的访问权限将被限制在“临时场景 (Temporary Scene)”中。这允许对 Scene 进行样式设置和编辑,但更改无法保存,且在会话结束时 Scene 将丢失。
以下是如何创建具有 Scene 写入权限的 custom 角色的示例。custom 角色是作为内置 reader 角色的副本创建的,并添加了额外的权限。有关内置角色的更多信息,请参阅 操作手册 → 内置角色。拥有此角色的用户可以完全使用 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`;
|
您必须授予您的角色 |
如果您想将访问权限限制为只读而不允许进行任何更改,您可以仅授予 reader 角色而无需任何额外权限。请注意,这也将阻止用户通过 Bloom 对数据库执行任何更新,例如添加节点和关系,或编辑属性。
按数据库权限划分的 Perspective 操作
下表列出了用户根据其被授予的数据库权限可执行的各种 Perspective 操作。请注意,此表仅适用于 Bloom 插件设置,即存储由插件提供且 Perspectives 可在用户间共享的情况。对于没有该插件的设置,Perspectives 存储在用户本地计算机上,因此用户可以执行所有相关操作。
| 操作 | 只读 | 写入 (Write) | 写入 + 列出角色 | 写入 + 列出并创建角色 |
|---|---|---|---|---|
打开图库 |
是 |
是 |
是 |
是 |
从图库选择 Perspective |
是 |
是 |
是 |
是 |
允许本地 Perspective 编辑 |
否 |
是 |
是 |
是 |
将编辑保存到存储 |
否 |
是 |
是 |
是 |
删除 Perspective |
否 |
是 |
是 |
是 |
创建新/生成 Perspective |
否 |
是 |
是 |
是 |
共享选项卡 |
是 |
是 |
是 |
是 |
查看已映射的角色 |
是,可以查看自己的角色但不能更改 |
是 |
是 |
是 |
查看角色列表 |
否 |
无访问权限 |
是 |
是 |
映射到角色 |
否 |
是(仅默认数据库角色) |
是 |
是 |
删除角色映射 |
否 |
是 |
是 |
是 |
创建新角色 |
无访问权限 |
无访问权限 |
否 |
是 |
导出 |
是 |
是 |
是 |
是 |
导入 |
否 |
是 |
是 |
是 |
拥有数据库写入权限的用户(即可以创建 Perspectives 的用户)也具备导出和导入 Perspectives 的能力。