访问控制

GDS 目录为管理员用户提供更高的访问权限。任何被授予名为 `admin` 角色的用户都被 GDS 视为管理员。

GDS 管理员可以访问任何其他用户投影的图。这包括列出、删除和对这些图运行算法的能力。

区分同名图

有时,多个用户(包括管理员用户本身)可能拥有同名的图。为了区分这些图,可以使用 `username` 配置参数。

示例

我们将通过一个小例子来说明管理员功能。在此示例中,我们有三个用户,其中一个是管理员。我们使用以下 Cypher 命令创建用户并设置角色

CREATE USER alice SET PASSWORD $alice_pw CHANGE NOT REQUIRED;
CREATE USER bob SET PASSWORD $bob_pw CHANGE NOT REQUIRED;
CREATE USER carol SET PASSWORD $carol_pw CHANGE NOT REQUIRED;

GRANT ROLE reader TO alice;
GRANT ROLE reader TO bob;
GRANT ROLE admin TO carol;

如我们所见,`alice` 和 `bob` 是对数据库具有读取权限的标准用户。`carol` 通过被授予 `admin` 角色而成为管理员(有关此角色的更多信息,请参阅操作手册)。

现在 `alice` 和 `bob` 各自投影了一些图。他们都投影了一个名为 `graphA` 的图,`bob` 还投影了一个名为 `graphB` 的图。

列表显示

要列出所有用户的图,`carol` 只需使用图列表程序。

以管理员用户身份列出所有图
CALL gds.graph.list()
YIELD graphName
表 1. 结果
图名称

"graphA"

"graphA"

"graphB"

请注意,由于 `carol` 被视为 GDS 管理员,所有用户的图对 `carol` 都是可见的。

对其他用户的图运行算法

carol 可以通过直接命名来使用 graphB

carol 可以在 bob 拥有的 graphB 图上运行 WCC
CALL gds.wcc.stats('graphB')
YIELD componentCount

要使用 alice 拥有的 graphAcarol 必须使用 username 覆盖。

carol 可以在 alice 拥有的 graphA 上运行 WCC
CALL gds.wcc.stats('graphA', { username: 'alice' })
YIELD componentCount

删除其他用户的图

与列出不同,当使用 `username` 覆盖来消除歧义时,必须使用完整的存储过程签名。在下面的查询中,我们为删除过程的第二个和第三个参数使用了默认值。`username` 是第四个参数。更多详情请参阅删除图

要删除 bob 拥有的 graphAcarol 可以运行以下命令
CALL gds.graph.drop('graphA', true, '', 'bob')
YIELD graphName
© . All rights reserved.