高级安装与配置
在独立的 Web 服务器上托管 Bloom Web 应用
您可以选择将 Bloom 客户端托管在独立的 Web 服务器上,而不是 Neo4j 数据库服务器上。出于安全考虑,或者为了负载均衡(将发送到不同类型服务器的流量进行分离),这样做是有必要的。在这种情况下,Bloom 客户端 UI(以单独的包形式提供)由您自己的 Web 服务器托管,而 Bloom 服务器插件则仍然安装在 Neo4j 数据库(无论是单实例还是集群设置)上。Bloom 客户端通过提供包含 Neo4j 数据库发现 URL 的 json 文件,或使用 connectURL 参数来连接到 Neo4j 数据库。详情见下文。
对于希望将 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 每个用户在每次会话中大约会产生数十次请求。
如果您已将 Neo4j 实例配置为仅接受安全 Bolt 连接,则需要配置 Web 服务器通过 HTTPS 提供资源,并确保已安装所需的 TLS 证书。否则,由于安全策略禁止混合使用安全和不安全的连接,Bloom 可能无法在许多 Web 浏览器中连接到 Neo4j。
这是 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 身份验证
为了在采用 LDAP 身份验证的 Neo4j 安装中使用 Bloom,需要将 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 并创建两个透视图,例如 Nuclear waste 和 Painting。如果 Lisa 将 Nuclear waste 透视图分配给 role_1,将 Painting 分配给 role_2,那么当用户 Homer 登录时将获得 Nuclear waste 透视图,而 Marge 将获得 Painting 透视图。请参阅 操作手册 → LDAP 集成 以了解更多关于 Neo4j 中 LDAP 支持的信息。
Bloom 单点登录 (SSO)
Neo4j Bloom 支持单点登录 (SSO) 提供商。这是一项企业级功能,需要特定的配置以及 (自托管的) Neo4j Server v4.4 及更高版本。此外,您需要预先配置好兼容的 SSO 提供商(本地或外部)。有关配置的更多信息,请参阅 操作手册 → OIDC 配置设置。
目前支持的提供商包括 OpenID Connect (OIDC) OAuth 2.0 提供商:
-
Google
-
Keycloak
-
Microsoft Azure AD
-
Okta
Bloom 支持带有 PKCE 的授权码流 (authorization code flow)。
关于 OpenID Connect 和 OAuth 的更多信息,请访问 https://openid.net/connect/。
|
安全信息应始终通过加密传输进行交换,因此应使用 HTTPS。不支持单点登录的 HTTP/HTTPS 混合流。 |
配置好 SSO 提供商后,您需要将 Neo4j 配置为使用 OpenID Connect。请根据 操作手册 → 将 Neo4j 配置为使用 OpenId Connect 中的说明更新 neo4j.conf 文件。
请确保 neo4j.conf 文件中没有重复项。
Bloom 需要知晓可用的身份提供商。在 Neo4j v4.4+ 中使用时,如上所述,这需要在 neo4j.conf 文件中进行指定。
深层链接 (Deep links) 在支持的情况下也适用于 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 使用图数据科学 (GDS) 库,则 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