部署

官方 Neo4j Kerberos 附加组件可用于通过 Kerberos 身份验证扩展 Neo4j。附加组件提供身份验证,应与 LDAP 等其他提供程序结合使用以进行授权。可在 Neo4j 下载网站 下载。

Neo4j Kerberos 附加组件 v4.0.0 与 Neo4j v4 和 Neo4j v5 的所有版本兼容。

在下一部分中,我们将逐步指导您进行 Kerberos 附加组件的部署。它包括几个步骤

  • 为 Kerberos 配置 Neo4j

  • 生成 Kerberos keytab 文件

  • 配置 Kerberos 附加组件

有关文件位置,请参阅 操作手册 → 文件位置。本文档中的所有相对路径都将相对于 neo4j-home 目录解析。

在示例中,我们使用的是 Windows 上的 Kerberos。我们假设使用 LDAP 进行授权,并且当前域(Windows 域)是 WINDOMAIN.LOCAL

为 Kerberos 配置 Neo4j

kerberos-add-on.jar 文件放置在 Neo4j 安装的 plugins/ 目录中。编辑 neo4j.conf 以将 Kerberos 附加组件启用为身份验证提供程序。

示例 1. 配置 neo4j.conf
#For authentication with kerberos-add-on
dbms.security.authentication_providers=plugin-Neo4j-Kerberos
dbms.security.authorization_providers=ldap

#For authorization with LDAP
dbms.security.ldap.host=ad.windomain.local
dbms.security.ldap.authorization.use_system_account=true
dbms.security.ldap.authorization.system_username=CN=neo4jservice,OU=IT-Services,DC=windomain,DC=local
dbms.security.ldap.authorization.system_password=PASSWORD
dbms.security.ldap.authorization.user_search_base=CN=Users,DC=windomain,DC=local
dbms.security.ldap.authorization.user_search_filter=(&(objectClass=*)(SamAccountName={0}))
dbms.security.ldap.authorization.group_membership_attributes=memberOf
dbms.security.ldap.authorization.group_to_role_mapping= \
  "CN=Neo4j Read Only,CN=Users,DC=windomain,DC=local"      = reader; \
  "CN=Neo4j Read-Write,CN=Users,DC=windomain,DC=local"     = publisher; \
  "CN=Neo4j Schema Manager,CN=Users,DC=windomain,DC=local" = architect; \
  "CN=Neo4j Administrator,CN=Users,DC=windomain,DC=local"  = admin; \
  "CN=Neo4j Procedures,CN=Users,DC=windomain,DC=local"     = allowed_role

生成 Kerberos keytab 文件

在 KDC 中为 Neo4j 服务器创建一个服务用户。确保为 Neo4j 服务用户生成 keytab,并将其放置在 conf 目录中。在本示例中,我们将其命名为 neo4j.ktabkeytab 将由 Neo4j 使用。

配置 Kerberos 附加组件

如果您之前已通过 Heimdal 或 MIT 工具 kinit 使用 Kerberos,那么您将拥有一个 krb5.conf 文件,其中包含有关如何访问 KDC 的信息。如果您没有此类文件,或者不想使用它,请在 conf 目录中创建一个新的 krb5.conf 文件。

示例 2. 配置 krb5.conf

在本示例中,我们使用的是 WINDOMAIN.LOCAL 域,并且 KDC 和管理服务器的 IP 地址为 192.168.38.2

请将这些值替换为您实际的域以及您的 KDC 和管理服务器的实际 IP 或域名。

[libdefaults]
	default_realm = WINDOMAIN.LOCAL

	default_tgs_enctypes = rc4-hmac rc4-hmac-exp aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96 des3-hmac-sha1
	default_tkt_enctypes = rc4-hmac rc4-hmac-exp aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96 des3-hmac-sha1
	permitted_enctypes = rc4-hmac rc4-hmac-exp aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96 des3-hmac-sha1

[realms]
	WINDOMAIN.LOCAL = {
		kdc = 192.168.38.2
		admin_server = 192.168.38.2
	}

[domain_realm]
	.windomain.local = WINDOMAIN.LOCAL
	windomain.local = WINDOMAIN.LOCAL

某些加密算法不受 Java 原生支持。在使用更高级的加密算法(例如 ASE-256)时,请确保运行 Neo4j 的 Java 已启用 Java Cryptography Extension 扩展。

现在,在 conf 目录中创建一个名为 kerberos.conf 的第二个文件。keytab 设置引用上面创建的 keytab 文件。service.principal 设置是该 keytab 中的主体,krb5.conf 设置引用 krb5.conf 文件(已存在于现有的 Kerberos 安装中,或在上面的步骤中创建)。

同样,请根据您的设置将值替换为正确的值。

示例 3. 配置 kerberos.conf
realm=WINDOMAIN.LOCAL
keytab=conf/neo4j.ktab
service.principal=neo4j/neo4j.windomain.local@WINDOMAIN.LOCAL
krb5.conf=conf/krb5.conf