ZooKeeper 访问控制

本节介绍将 ZooKeeper 访问控制列表 (ACL) 与 Solr 配合使用。

有关 ZooKeeper ACL 的信息,请参阅 ZooKeeper ACL 文档

关于 ZooKeeper ACL

SolrCloud 使用 ZooKeeper 进行共享信息和协调。

本节介绍如何配置 Solr 以向其创建的 ZooKeeper 内容添加更严格的 ACL,以及如何告知 Solr 有关访问 ZooKeeper 中内容所需凭据的信息。如果您希望在 ZooKeeper 节点中使用 ACL,则必须激活此功能;默认情况下,Solr 行为在任何地方都是开放不安全的 ACL,并且不使用任何凭据。

存储在 ZooKeeper 中的内容对于 SolrCloud 集群的操作至关重要。开放访问 ZooKeeper 上的 SolrCloud 内容可能会导致各种问题。例如

  • 更改配置可能会导致 Solr 出现故障或以意外的方式运行。

  • 将集群状态信息更改为错误或不一致的内容很可能会导致 SolrCloud 集群出现奇怪的行为。

  • 添加由 Overseer 执行的删除集合作业将导致从集群中删除数据。

如果你向不信任的实体授予对 ZooKeeper 集群的访问权限,或者你想降低由于以下原因导致的不良行为的风险,则可能需要使用 Solr 启用 ZooKeeper ACL,例如

  • 进入系统的恶意软件。

  • 使用相同 ZooKeeper 集群的其他系统(“坏事”可能是意外发生的)。

如果你认为 ZooKeeper 中有一些内容不是每个人都应该知道的,你甚至可能想要限制读取访问权限。或者,你可能只是在需要了解的基础上进行工作。

保护 ZooKeeper 本身可能意味着许多不同的内容。本节介绍如何保护 ZooKeeper 中的 Solr 内容。ZooKeeper 内容基本上持久存在于磁盘上和(部分)ZooKeeper 进程的内存中。本节不介绍如何在存储或 ZooKeeper 进程级别保护 ZooKeeper 数据 - 这是 ZooKeeper 要处理的问题。

但此内容还可以通过 ZooKeeper API 对“外部”可用。外部进程可以连接到 ZooKeeper 并创建/更新/删除/读取内容。例如,SolrCloud 集群中的 Solr 节点想要创建/更新/删除/读取,而 SolrJ 客户端想要从集群中读取。创建/更新内容的外部进程负责在内容上设置 ACL。ACL 描述了谁有权读取、更新、删除、创建等。ZooKeeper 中的每条信息(znode/内容)都有自己的一组 ACL,并且无法继承或共享。Solr 中的默认行为是在其创建的所有内容上添加一个 ACL - 一个 ACL 允许任何人执行任何操作(在 ZooKeeper 术语中,这称为“开放不安全 ACL”)。

Solr 到 Zookeeper ACL 工作流

  • Solr 对 Zookeeper 的凭据和 ACL 通过 3 个接口进行控制:ZkCredentialsInjectorZkCredentialsProviderZkACLProvider

  • 实现这 3 个接口的类通过使用 solr.xml 中定义的属性名称通过系统属性传递给 Solr(有关详细信息,请参阅 配置 solr.xml)。以下为默认属性名称:zkCredentialsInjectorzkACLProviderzkCredentialsProvider。有关详细信息,请参阅以下部分。

  • 数据流如下:凭据源 → ZkCredentialsInjectorZkCredentialsProvider/ZkACLProvider → Zookeeper。

ZkCredentialsInjector 从某个源获取凭据,然后将凭据注入到 ZkCredentialsProviderZkACLProvider 中。此处的“源”可以是系统属性、文件、秘密管理器或任何其他本地或远程源。

  • 支持两组角色

    • ALL 用户:允许执行所有操作的用户(对应于所有 CREATEREADWRITEDELETEADMIN)。

    • READ 用户:只读用户,仅允许执行读取操作。

  • 我们始终通过限制为两个用户(一个管理员用户和一个只读用户)来保护对内容的访问权限,并且我们始终使用对应于此管理员用户的凭据进行连接,这样我们基本上可以对我们自己创建的内容/znode 执行任何操作。

您可以将只读凭据授予 SolrCloud 集群的“客户端”,例如,供 SolrJ 客户端使用。他们将能够读取运行正常 SolrJ 客户端所需的任何内容,但他们将无法修改 ZooKeeper 中的任何内容。

如何启用 ACL

  • 我们希望能够

    1. 控制 Solr 用于其 ZooKeeper 连接的凭据。凭据用于获取在 ZooKeeper 中执行操作的权限。

    2. 控制 Solr 将添加到其在 ZooKeeper 中创建的 znode(ZooKeeper 文件/文件夹)中的 ACL。

    3. 从“外部”控制它,以便您不必修改和/或重新编译 Solr 代码以启用此功能。

Solr 节点、客户端和工具(例如 ZkCLI)始终使用名为 SolrZkClient 的 Java 类来处理其 ZooKeeper 相关内容。此处描述的解决方案的实现完全是关于更改 SolrZkClient。如果您在应用程序中使用 SolrZkClient,那么以下描述也适用于您的应用程序。

  • 控制凭据和 ACL 的操作分 3 步完成:设置一个 ZkCredentialsInjector,它从某个来源读取凭据,然后将其注入到 Solr 用于连接到 Zookeeper 的 ZkCredentialsProvider 中。ZkACLProvider 使用相同的凭据来设置 ACL。

在提供一些可直接使用的示例之前,我们将详细描述这 3 个步骤。

  1. 设置 ZkCredentialsInjector

  2. 设置 ZkCredentialsProvider

  3. 设置 ZkACLProvider

设置凭据注入器

  • 凭据注入器从外部来源获取凭据并将其注入到 Solr 中。

    • 您可以通过将 solr.xml<solrcloud> 部分的 zkCredentialsInjector 属性配置为实现 ZkCredentialsInjector 接口的类(位于类路径中)的名称来控制要注入哪些凭据。

      Solr 发行版中的 server/solr/solr.xml 文件定义了 `zkCredentialsInjector`,以便在定义了同名的 zkCredentialsInjector 系统属性时(例如,通过取消对 solr.in.sh/.cmd 中的 SOLR_ZK_CREDS_AND_ACLS 环境变量定义的注释 - 见下文),它将采用该属性的值,如果没有定义,则默认为 DefaultZkCredentialsInjector 实现。

开箱即用的凭据注入器实现

  • Solr 随附以下 ZkCredentialsInjectors

    • org.apache.solr.common.cloud.DefaultZkCredentialsInjector:其 getCredentials() 方法返回长度为零的列表,或“未使用凭据”。这是默认值。

    • org.apache.solr.common.cloud.VMParamsZkCredentialsInjector:用户名和密码由系统属性名称定义:zkDigestUsernamezkDigestPassword。如果同时提供了用户名和密码,则这组凭证将添加到 getCredentials() 返回的凭证列表中。

      • 如果上述一组凭证未添加到列表中,则此实现将回退到默认行为,并使用 DefaultZkCredentialsInjector 中的(空)凭证列表。

      • 或者,您可以设置 zkDigestCredentialsFile 系统属性,以从文件中加载 zkDigestUsernamezkDigestPassword,而不是将凭证公开为系统属性。所提供的文件必须是 Java 属性文件,并且包含 zkDigestUsernamezkDigestPassword 属性。

      • 用法(参见页面后半部分的完整示例)

-DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector
-DzkDigestUsername=admin-user -DzkDigestPassword=CHANGEME-ADMIN-PASSWORD
-DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD

# Or using a Java property file containing the credentials:
-DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector
-DzkDigestCredentialsFile=SOLR_HOME_DIR/server/etc/zookeepercredentials.properties
  • 您可以通过实现 ZkCredentialsInjector 并通过使用 zkCredentialsInjector 名称的系统属性传递它来创建自己的凭证注入器。

-DzkCredentialsInjector=fully.qualified.class.CustomInjectorClassName

注入凭证后,它们将在 ZkCredentialsProvider 中使用。

设置凭证提供程序

ZkCredentialsProviderZkCredentialsInjector 获取凭证,并使用它们连接到 Zookeeper。

  • 您可以通过将 solr.xml<solrcloud> 部分的 zkCredentialsProvider 属性配置为实现 ZkCredentialsProvider 接口的类(在类路径上)的名称来控制将使用哪些凭证。

    Solr 发行版中的 server/solr/solr.xml 文件定义了 zkCredentialsProvider,以便在定义该 zkCredentialsProvider 系统属性(例如,通过取消注释 solr.in.sh/.cmd 中的 SOLR_ZK_CREDS_AND_ACLS 环境变量定义 - 参见下文)时采用该值,或者如果没有定义,则默认为 DefaultZkCredentialsProvider 实现。

开箱即用的凭证实现

您始终可以进行自己的实现,但 Solr 随附两个实现

  • 无凭据

org.apache.solr.common.cloud.DefaultZkCredentialsProvider:其 getCredentials() 返回长度为零的列表,或“无凭据使用”。这是默认值。

  • 基于 digest 方案的 credentialsProvider

org.apache.solr.common.cloud.DigestZkCredentialsProvider:使用的方案为 digest,它从指定的 ZkCredentialsInjector 获取 ALL 用户凭据(perms=all)。

如果未定义具有 ALL 用户(同时提供用户名和密码)的 ZkCredentialsInjector,它将回退到默认行为并使用 DefaultZkCredentialsProvider 中的(空)凭据列表。

设置 ACL 提供程序

  • 通过将 <solrcloud> 部分中的 zkACLProvider 属性配置为实现 ZkACLProvider 接口的类(在类路径上)的名称,来控制将添加哪些 ACL solr.xml

    Solr 发行版中的 server/solr/solr.xml 文件定义了 zkACLProvider,以便在定义了 zkACLProvider 同名系统属性时采用其值(例如,通过取消注释 solr.in.sh/.cmd 中的 SOLR_ZK_CREDS_AND_ACLS 环境变量定义 - 见下文),或者如果没有定义,则默认为 DefaultZkACLProvider 实现。

开箱即用的 ACL 实现

您始终可以进行自己的实现,但 Solr 随附

  • org.apache.solr.common.cloud.DefaultZkACLProvider:它为所有 zNodePath 返回长度为 1 的列表。列表中的单个 ACL 条目为“open-unsafe”。这是默认值。

  • org.apache.solr.common.cloud.DigestZkACLProvider:这使您可以使用已定义的 ZkCredentialsInjector 定义 ACL。其 getACLsToAdd() 实现仅将管理员 ACL 应用于由 SecurityAwareZkACLProvider/security.json/security/*)定义的预定义敏感路径,并将管理员和用户 ACL 应用于其余内容。allread 用户通过本页前面描述的 ZkCredentialsInjector 注入。

  • org.apache.solr.common.cloud.SaslZkACLProvider:需要 SASL 身份验证。在使用 SASL 时,为系统属性 solr.authorization.superuser(默认值:solr)中指定的用户授予所有权限,并为其他人授予读取权限。专为已经设置且不会修改配置的设置而设计,或者通过 Solr API 控制配置更改。此提供程序将有助于在 kerberos 环境中进行管理。在这样的环境中,管理员希望 Solr 使用 SASL 向 ZooKeeper 进行身份验证,因为这是通过 Kerberos 向 ZooKeeper 进行身份验证的唯一方法。

  • 如果上述 ACL 均未添加到列表中,则默认情况下将使用 DefaultZkACLProvider 的(空)ACL 列表。

示例

以下示例适用于 digest 方案。

 <str name="zkCredentialsInjector">${zkCredentialsInjector:org.apache.solr.common.cloud.DefaultZkCredentialsInjector}</str>

通过系统属性

  • ZK 凭据通过系统属性通过 DzkDigestUsernameDzkDigestPasswordDzkDigestReadonlyUsernameDzkDigestReadonlyPassword 属性名称传递。

*nix

solr.in.sh
# Settings for ZK ACL
SOLR_ZK_CREDS_AND_ACLS="-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider \
  -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider \
  -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector \
  -DzkDigestUsername=admin-user -DzkDigestPassword=CHANGEME-ADMIN-PASSWORD \
  -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD"
SOLR_OPTS="$SOLR_OPTS $SOLR_ZK_CREDS_AND_ACLS"
zkcli.sh
# Settings for ZK ACL
SOLR_ZK_CREDS_AND_ACLS="-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider \
  -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider \
  -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector \
  -DzkDigestUsername=admin-user -DzkDigestPassword=CHANGEME-ADMIN-PASSWORD \
  -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD"

Windows

solr.in.cmd
REM Settings for ZK ACL
set SOLR_ZK_CREDS_AND_ACLS=-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider ^
 -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider ^
 -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector ^
 -DzkDigestUsername=admin-user -DzkDigestPassword=CHANGEME-ADMIN-PASSWORD ^
 -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD
set SOLR_OPTS=%SOLR_OPTS% %SOLR_ZK_CREDS_AND_ACLS%
zkcli.bat
REM Settings for ZK ACL
set SOLR_ZK_CREDS_AND_ACLS=-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider ^
 -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider ^
 -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector ^
 -DzkDigestUsername=admin-user -DzkDigestPassword=CHANGEME-ADMIN-PASSWORD ^
 -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD

通过文件

  • 创建 Java 属性文件,例如名为 zookeepercredentials.properties,其中包含以下格式的凭据

zkDigestUsername=admin-user
zkDigestPassword=CHANGEME-ADMIN-PASSWORD
zkDigestReadonlyUsername=readonly-user
zkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD
  • 通过系统属性传递文件路径

*nix

solr.in.sh
# Settings for ZK ACL
SOLR_ZK_CREDS_AND_ACLS="-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider \
  -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider \
  -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector \
  -DzkDigestCredentialsFile=SOLR_HOME_DIR/server/etc/zookeepercredentials.properties"
SOLR_OPTS="$SOLR_OPTS $SOLR_ZK_CREDS_AND_ACLS"
zkcli.sh
# Settings for ZK ACL
SOLR_ZK_CREDS_AND_ACLS="-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider \
  -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider \
  -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector \
  -DzkDigestCredentialsFile=SOLR_HOME_DIR/server/etc/zookeepercredentials.properties"

Windows

solr.in.cmd
REM Settings for ZK ACL
set SOLR_ZK_CREDS_AND_ACLS=-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider ^
 -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider ^
 -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector ^
 -DzkDigestCredentialsFile=SOLR_HOME_DIR/server/etc/zookeepercredentials.properties
set SOLR_OPTS=%SOLR_OPTS% %SOLR_ZK_CREDS_AND_ACLS%
zkcli.bat
REM Settings for ZK ACL
set SOLR_ZK_CREDS_AND_ACLS=-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider ^
 -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider ^
 -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector ^
 -DzkDigestCredentialsFile=SOLR_HOME_DIR/server/etc/zookeepercredentials.properties

通过自定义凭据注入器

  • 或者,您可以通过实现 ZkCredentialsInjector 来创建自己的凭据注入器,并通过系统属性使用 DzkCredentialsInjector 变量名传递它。

*nix

solr.in.sh
# Settings for ZK ACL
SOLR_ZK_CREDS_AND_ACLS="-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider \
  -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider \
  -DzkCredentialsInjector=fully.qualified.class.CustomInjectorClassName"
SOLR_OPTS="$SOLR_OPTS $SOLR_ZK_CREDS_AND_ACLS"
zkcli.sh
# Settings for ZK ACL
SOLR_ZK_CREDS_AND_ACLS="-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider \
  -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider \
  -DzkCredentialsInjector=fully.qualified.class.CustomInjectorClassName

Windows

solr.in.cmd
REM Settings for ZK ACL
set SOLR_ZK_CREDS_AND_ACLS=-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider ^
 -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider ^
 -DzkCredentialsInjector=fully.qualified.class.CustomInjectorClassName
set SOLR_OPTS=%SOLR_OPTS% %SOLR_ZK_CREDS_AND_ACLS%
zkcli.bat
REM Settings for ZK ACL
set SOLR_ZK_CREDS_AND_ACLS=-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider ^
 -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider ^
 -DzkCredentialsInjector=fully.qualified.class.CustomInjectorClassName

Solr 脚本中的 ZooKeeper ACL

有两个脚本会影响 ZooKeeper ACL

  • *nix 系统:bin/solrserver/scripts/cloud-scripts/zkcli.sh

  • Windows 系统:bin/solr.cmdserver/scripts/cloud-scripts/zkcli.bat

solr.in.* 和 zkcli.* 文件都需要使用相同的密码进行更新,才能正常工作。内容可能看起来是冗余的,但脚本在操作期间不会相互参考。

这些 Solr 脚本可以通过设置适当的系统属性来启用 ZooKeeper ACL 的使用。

  • 使用 VMParamsZkCredentialsInjector 的示例

取消以下内容的注释,并用您选择用于启用以下文件中的参数和 ACL 凭据提供程序的密码替换密码

*nix

solr.in.sh
# Settings for ZK ACL
#SOLR_ZK_CREDS_AND_ACLS="-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider \
#  -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider \
#  -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector \
#  -DzkDigestUsername=admin-user -DzkDigestPassword=CHANGEME-ADMIN-PASSWORD \
#  -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD"
#SOLR_OPTS="$SOLR_OPTS $SOLR_ZK_CREDS_AND_ACLS"
zkcli.sh
# Settings for ZK ACL
#SOLR_ZK_CREDS_AND_ACLS="-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider \
#  -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider \
#  -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector \
#  -DzkDigestUsername=admin-user -DzkDigestPassword=CHANGEME-ADMIN-PASSWORD \
#  -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD"

Windows

solr.in.cmd
REM Settings for ZK ACL
REM set SOLR_ZK_CREDS_AND_ACLS=-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider ^
REM  -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider ^
REM  -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector ^
REM  -DzkDigestUsername=admin-user -DzkDigestPassword=CHANGEME-ADMIN-PASSWORD ^
REM  -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD
REM set SOLR_OPTS=%SOLR_OPTS% %SOLR_ZK_CREDS_AND_ACLS%
zkcli.bat
REM Settings for ZK ACL
REM set SOLR_ZK_CREDS_AND_ACLS=-DzkACLProvider=org.apache.solr.common.cloud.DigestZkACLProvider ^
REM  -DzkCredentialsProvider=org.apache.solr.common.cloud.DigestZkCredentialsProvider ^
REM  -DzkCredentialsInjector=org.apache.solr.common.cloud.VMParamsZkCredentialsInjector ^
REM  -DzkDigestUsername=admin-user -DzkDigestPassword=CHANGEME-ADMIN-PASSWORD ^
REM  -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD

更改 ACL 方案

在 Solr 集群运行期间,您可能会决定从非安全的 ZooKeeper 迁移到安全实例。更改 solr.xml 中配置的 zkACLProvider 将确保新创建的节点是安全的,但不会保护已存在的数据。

要修改所有现有的 ACL,您可以使用 Solr 的 ZkCLI 中的 updateacls 命令。首先取消 server/scripts/cloud-scripts/zkcli.sh(或 Windows 上的 zkcli.bat)中 SOLR_ZK_CREDS_AND_ACLS 环境变量定义的注释,并按照上文 Solr 脚本中的 ZooKeeper ACL 中所述填写管理员用户和只读用户的密码。

然后针对您的操作系统运行以下适当的命令

*nix

$ ./server/scripts/cloud-scripts/zkcli.sh -cmd updateacls /zk-path

Windows

C:\\ server\scripts\cloud-scripts\zkcli.bat cmd updateacls /zk-path

仅在 SolrCloud 集群停止时才应更改 ZooKeeper 中的 ACL。在 Solr 运行时尝试这样做可能会导致状态不一致,并且某些节点变得不可访问。

zkcli.sh/.bat 中 SOLR_ZK_CREDS_AND_ACLS 环境变量中包含的 VM 属性 zkCredentialsInjectorzkACLProviderzkCredentialsProvider 控制转换

  • 凭据注入器读取凭据并将其传递给凭据提供程序。如果省略,该进程将不使用任何凭据(适用于非安全配置)。

  • 凭据提供程序使用在节点上具有管理员权限的用户的凭据。如果省略,该进程将不使用任何凭据(适用于非安全配置)。

  • ACL 提供程序将用于计算新的 ACL。如果省略,该进程将对所有用户设置所有权限,从而移除任何现有的安全性。

zkcli.sh/.bat 中取消注释的 SOLR_ZK_CREDS_AND_ACLS 环境变量将凭据和 ACL 提供程序设置为本页前面所述的 VMParamsZkCredentialsInjectorDigestZkCredentialsProviderDigestZkACLProvider 实现。