高级安装和配置
在单独的 Web 服务器上托管 Bloom Web 应用程序
您可能希望将 Bloom 客户端托管在单独的 Web 服务器上,而不是在 Neo4j 数据库服务器上。出于安全原因或出于负载平衡原因,这可能需要将定向到不同类型服务器的不同类型流量分开。在这种情况下,Bloom 客户端 UI(作为单独的软件包提供)由您自己的 Web 服务器托管,而 Bloom 服务器插件仍然安装在 Neo4j 数据库上(无论是单实例还是集群设置)。Bloom 客户端连接到 Neo4j 数据库,方法是通过提供包含 Neo4j 数据库发现 URL 的 json 文件,或者使用 connectURL 参数。这将在后面详细介绍。
对于希望将 Bloom 客户端托管在与 Neo4j 数据库服务器不同的 Web 服务器上的场景,Bloom 客户端 UI 可作为 Web 资产包获得。Bloom 插件仍然需要安装在 Neo4j 数据库服务器上,有关详细信息,请参见 安装服务器插件。按照以下步骤设置 Bloom 客户端
-
从 此处下载 Bloom 服务器包。
-
解压缩下载的 Bloom 服务器包。在
neo4j-bloom-<version>-assets.zip
形式中查找 Web 资产包。 -
解压缩并设置捆绑包中的文件,以便从您的 Web 服务器提供服务。
-
提供一个包含 Neo4j 数据库发现 URL 的 json 文件,Bloom 客户端使用它连接到目标 Neo4j 数据库服务器。发现 URL 应采用以下格式,并保存在 Web 服务器根文件夹中的
discovery.json
中。{ "bolt" : "bolt://<neo4j-database-server-address>:<bolt-port>" }
提供的资产包 **不** 包含
discovery.json
文件,但需要在需要时创建一个文件,以指定正确的 Neo4j 服务器和端口信息。 -
用户应该能够通过使用您配置的 Web 服务器路径在 Web 浏览器中加载提供的
index.html
来访问 Bloom。
另一种将 Bloom 连接到 Neo4j 服务器的方法是使用 connectURL 参数。服务器地址需要正确 URL 编码,并采用以下格式:https://[bloom-hosted-location]/index.html?connectURL=[database.server.address]
。
例如,对于在 Aura 中托管的实例,connectURL 可能如下所示
https://bloom.neo4j.io/index.html?connectURL=neo4j%2Bs%3A%2F%2Fcf0e20ef.databases.neo4j.io
Web 服务器配置
Neo4j 对用于托管 Bloom 资产的 Web 服务器没有特定建议。由于它只提供静态文件,因此它可以是任何可以配置为这样做的 Web 服务器(例如 Apache、nginx、IIS)。唯一的要求是它可以处理您拥有的用户数量,因此可以处理您拥有的请求数量。Bloom 将以每用户每会话 10 次请求的顺序进行请求。
如果您已将 Neo4j 实例配置为仅接受安全 Bolt 连接,则需要将 Web 服务器配置为通过 https 提供资产,并确保所需的 TLS 证书可用。否则,Bloom 可能无法连接到 Neo4j 在许多 Web 浏览器中,因为安全策略禁止混合安全和不安全连接。
这是 nginx Web 服务器的示例配置
user www www;
worker_processes 1; # If this nginx instance is the only thing running on this machine this can be set to number of cores
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name my-bloom-domain;
location / {
root /path/to/bloom/asset/files;
index index.html;
}
}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name my-bloom-domain;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root /path/to/bloom/asset/files;
# index index.html;
# }
#}
}
将 Bloom 与 LDAP 身份验证一起使用
为了将 Bloom 与使用 LDAP 身份验证的 Neo4j 安装一起使用,Neo4j 需要配置为同时使用本机和 LDAP 身份验证。这是因为 Bloom 的透视图共享功能需要能够列出所有配置的角色,而这在仅使用 LDAP 时是无法实现的。
请注意,Bloom 不支持 Neo4j 3.x 数据库。对所有使用 Neo4j 4.x 和 5 的安装使用以下配置
dbms.security.authentication_providers=native,ldap
dbms.security.authorization_providers=native,ldap
LDAP 示例场景
假设在 LDAP 中定义了以下用户
用户 | 属性 |
---|---|
cn=Homer |
memberOf: cn=bloom_group_1 memberOf: cn=bloom_reader |
cn=Marge |
memberOf: cn=bloom_group_2 memberOf: cn=bloom_reader |
cn=Lisa |
memberOf: cn=bloom_admin |
可以在 neo4j.conf
中配置组到角色的映射,如下所示
dbms.security.ldap.authorization.group_to_role_mapping= \
"cn=bloom_group_1,dc=example,dc=com" = role_1; \
"cn=bloom_group_2,dc=example,dc=com" = role_2; \
"cn=bloom_admin,dc=example,dc=com" = admin; \
"cn=bloom_reader,dc=example,dc=com" = reader
最后,需要在数据库中创建角色 role_1
和 role_2
(通过使用 dbms.security.createRole
过程)。
请记住,按照 安装服务器插件 部分中的说明,将所有需要 Bloom 访问权限的角色授权到 neo4j.bloom.authorization_role
(使用 Neo4j 4.x)/dbms.bloom.authorization_role
(使用 Neo4j 5)配置属性。
现在应该可以使用用户 Lisa 登录 Bloom,并创建两个透视图,例如 核废料 和 绘画。如果 Lisa 然后将 核废料 透视图分配给 role_1,将 绘画 透视图分配给 role_2,那么当用户 Homer 登录时,他将获得 核废料 透视图,而 Marge 将获得 绘画 透视图。有关 Neo4j 中 LDAP 支持的更多信息,请参见 操作手册 → LDAP 集成。
Bloom 单点登录 (SSO)
Neo4j Bloom 提供对单点登录 (SSO) 提供者的支持。这是一项企业功能,需要特定配置以及(自托管)Neo4j 服务器 v4.4 及更高版本。此外,您还需要已配置的兼容 SSO 提供者(本地或外部)。有关配置的更多信息,请参见 操作手册 → OIDC 配置设置。
目前支持的提供者包括 OpenID Connect (OIDC) OAuth 2.0 提供者
-
谷歌
-
Keycloak
-
微软 Azure AD
-
Okta
Bloom 支持带 PKCE 的授权码流。
有关 OpenID Connect 和 OAuth 的更多信息,请参见 https://openid.net/connect/。
安全信息应始终使用加密传输进行交换,因此应使用 HTTPS。单点登录不支持混合 HTTP/HTTPS 流。 |
配置好 SSO 提供商后,您需要配置 Neo4j 使用 OpenID Connect。这可以通过根据 neo4j.conf
文件中的说明更新该文件来完成,具体操作请参见 操作手册 → 配置 Neo4j 使用 OpenId Connect。
确保在 neo4j.conf
文件中避免重复条目。
Bloom 需要了解可用于身份验证的提供商。在 Neo4j v4.4+ 版本中,可以使用上述方法在 neo4j.conf
文件中指定。
深层链接也支持 SSO 身份验证(如果可用)。
在 Docker 容器中安装 Bloom
也可以使用标准的 Neo4j Enterprise Docker 镜像在 Docker 容器中安装 Bloom。您可以 在此 找到所有 Neo4j Docker 镜像。有关 Neo4j Docker 镜像的更多信息,请参见 操作手册 → 使用 Neo4j Docker 镜像。
在 Docker 容器中安装 Bloom 插件仅适用于 Neo4j Enterprise 4.2.3 或更高版本。 |
Neo4j Docker 镜像包含一个启动脚本,该脚本会在运行时自动下载并允许您配置 Bloom 插件,有关更多信息,请参见 操作手册 → 配置 Neo4j Labs 插件。
使用 Bloom 插件需要许可证,该许可证可以作为共享卷提供给您的 Docker 容器。
docker run -it --rm \
--publish=7474:7474 --publish=7687:7687 \
-v $HOME/bloom.license:/licenses/bloom.license \
--env NEO4J_AUTH=neo4j/test \
--env NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \
--env NEO4J_PLUGINS='["bloom"]' \ (1)
neo4j:enterprise
1 | 之前是 NEO4JLABS_PLUGINS ,在 Neo4j 5 中已弃用,将在未来版本中移除。 |
在数据库集群中安装 Bloom 服务器
在数据库集群中设置 Bloom 服务器时,需要将 Bloom 插件添加到托管数据库的所有服务器中,包括主服务器和辅助服务器(如果有)。
此外,如果集群还用于托管 Bloom 客户端,则选择集群中的任何一个服务器作为指定的 Bloom 服务实例。确保启用 HTTP 或 HTTPS,并让用户在 URL 中使用该特定实例的地址。例如:
http://<cluster-instance-address>:<http-port>/bloom/
https://<cluster-instance-address>:<https-port>/bloom/
如果您打算在数据库集群中与 Bloom 一起使用 Graph Data Science 库,则 Bloom 必须连接到集群中安装了 GDS 库插件的服务器。
可以通过连接到安装了 GDS 库插件的服务器上的 Bloom 插件来托管 Bloom,或者使用 connectURL
参数指定集群中的适当服务器来实现此目的。
安装了 GDS 的服务器很可能以辅助模式托管数据库,因此任何 |
有关 Neo4j 集群的更多信息,请参见 操作手册 → 集群。
产品分析设置
在设置抽屉中,您可以控制是否要与 Neo4j 共享来自 Bloom 的遥测数据。但是,如果您从 Neo4j Desktop 或 Aura 运行 Bloom,则这些选项将被禁用,因为同意设置将从这些系统继承。此外,在 Neo4j v4.4 及更高版本中,可以在 neo4j.conf
文件中指定同意设置。在 Neo4j 5 中,您将包含 client.allow_telemetry
如下所示:
client.allow_telemetry=true|false
在 Neo4j 4.4 中,请改用 clients.allow_telemetry
clients.allow_telemetry=true|false