加载权限

本节介绍如何使用 Cypher 管理加载权限。所有加载权限均适用于整个系统。与 DBMS 权限一样,它们不属于某个特定的数据库或图。有关图、数据库和 DBMS 之间区别的更多详细信息,请参阅 Cypher 手册 → Cypher 和 Neo4j

加载权限适用于 Cypher LOAD CSV 子句,决定了是否可以从给定的源加载数据。

加载权限语法

加载权限通过 Cypher 管理命令进行分配。与其他权限一样,它们可以被授予(GRANT)、拒绝(DENY)和撤销(REVOKE)。有关更多详细信息,请参阅 RBAC 和细粒度权限

表 1. 加载权限命令语法
命令 描述
GRANT [IMMUTABLE] LOAD
  ON ALL DATA
  TO role[, ...]

使指定的角色能够在查询中加载外部数据。

GRANT [IMMUTABLE] LOAD
  ON CIDR cidr
  TO role[, ...]

使指定的角色能够在查询中从给定的 CIDR 范围加载外部数据。

有关语法描述的更多详细信息,请参阅 管理命令的 Cypher 语法

与其他权限不同,LOAD 权限不是在 DBMSDATABASEGRAPH 上授予、拒绝或撤销的,而是在要从中加载的数据源上进行设置。添加 ON ALL DATA 意味着角色拥有从所有源加载数据的权限。若要仅允许从特定 CIDR 范围给定的源加载数据,请使用 ON CIDR cidr

强烈建议仅通过 HTTPS 等安全协议进行资源加载,而不是使用 HTTP 等不安全协议。这可以通过将可访问范围限制为仅使用安全协议的受信任源来实现。如果绝对无法避免使用不安全协议,Neo4j 会在内部采取措施,在限制范围内增强这些请求的安全性。但是,这意味着虚拟主机上的不安全 URL 将无法工作,除非您将 JVM 参数 -Dsun.net.http.allowRestrictedHeaders=true 添加到配置设置 server.jvm.additional 中。

ALL DATA 权限

ALL DATA 上的加载权限用于启用或禁用加载数据。如果已授予,用户可以从任何源加载数据。如果缺少或被拒绝,则完全无法加载任何数据。

示例 1. 授予拥有 roleLoadAllData 角色的用户使用 LOAD CSV 加载数据的能力
GRANT LOAD ON ALL DATA TO roleLoadAllData
示例 2. 以命令形式列出 roleLoadAllData 角色的所有权限
SHOW ROLE roleLoadAllData PRIVILEGES AS COMMANDS
表 2. 结果
command(命令)

"GRANT LOAD ON ALL DATA TO `roleLoadAllData`"

行:1

LOAD ON ALL DATA 权限默认授予给 PUBLIC 角色。

CIDR 权限

CIDR cidr 上的加载权限用于启用或禁用从给定的 IPv4 或 IPv6 CIDR 范围加载数据。如果已授予,用户可以从给定 CIDR 范围内的源加载数据。如果缺少或被拒绝,则无法从给定 CIDR 范围内的源加载任何数据。

示例 3. 拒绝拥有 roleLoadCidr 角色的用户使用 LOAD CSV127.0.0.1/32 加载数据的能力
DENY LOAD ON CIDR "127.0.0.1/32" TO roleLoadCidr
示例 4. 以命令形式列出 roleLoadCidr 角色的所有权限
SHOW ROLE roleLoadCidr PRIVILEGES AS COMMANDS
表 3. 结果
command(命令)

"DENY LOAD ON CIDR "127.0.0.1/32" TO `roleLoadCidr`"

行:1