访问控制
GDS 目录为管理员用户提供高级访问权限。任何被授予名为 admin
的角色的用户都被 GDS 视为管理员。
GDS 管理员可以访问任何其他用户投影的图。这包括列出、删除和在这些图上运行算法的能力。
示例
我们将使用一个小型示例来演示管理员功能。在本示例中,我们有三个用户,其中一个用户是管理员。我们使用以下 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
graphName |
---|
"graphA" |
"graphA" |
"graphB" |
请注意,由于 carol
被视为 GDS 管理员,因此所有用户的全部图都对他们可见。
使用其他用户的图运行算法
carol
可以直接使用 graphB
。
carol
可以在 bob
拥有的 graphB
图上运行 WCCCALL gds.wcc.stats('graphB')
YIELD componentCount
要使用 alice
拥有的 graphA
,carol
必须使用 username
覆盖。
carol
可以在 alice
拥有的 graphA
图上运行 WCCCALL gds.wcc.stats('graphA', { username: 'alice' })
YIELD componentCount
删除其他用户的图
与列表不同,当使用username
覆盖来消除歧义时,必须使用完整的过程签名。在下面的查询中,我们使用了删除过程的第二个和第三个参数的默认值。username
是第四个参数。有关更多详细信息,请参见删除图.
要删除
bob
拥有的graphA
,carol
可以运行以下命令CALL gds.graph.drop('graphA', true, '', 'bob')
YIELD graphName