Elasticsearch 中的安全设置

编辑

您可以配置 xpack.security 设置以 启用匿名访问 并执行消息身份验证,设置文档和字段级安全配置领域使用 SSL 加密通信,以及 审计安全事件

所有这些设置都可以添加到 elasticsearch.yml 配置文件中,除了安全设置,您需要将其添加到 Elasticsearch 密钥库中。有关创建和更新 Elasticsearch 密钥库的更多信息,请参见 安全设置

常规安全设置

编辑
xpack.security.enabled

(静态) 默认为 true,这将在节点上启用 Elasticsearch 安全功能。必须启用此设置才能使用 Elasticsearch 的身份验证、授权和审计功能。

如果设置为 false,则安全功能将被禁用,这**不建议**。它还会影响连接到此 Elasticsearch 实例的所有 Kibana 实例;您无需在这些 kibana.yml 文件中禁用安全功能。有关在特定 Kibana 实例中禁用安全功能的更多信息,请参见 Kibana 安全设置

xpack.security.autoconfiguration.enabled

(静态) 默认为 true,这将启用 安全自动配置

如果设置为 false,则安全自动配置将被禁用,这**不建议**。禁用后,首次启动 Elasticsearch 时不会自动配置安全功能,这意味着您必须 手动配置安全

xpack.security.enrollment.enabled

(静态) 默认为 false。控制节点和 Kibana 的注册(到已 自动配置安全 的本地节点)。设置为 true 时,本地节点可以生成新的注册令牌。如果现有令牌仍然有效,则可以使用它们进行注册。

安全自动配置过程会将此设置为 true,除非管理员在启动 Elasticsearch 之前将其设置为 false

xpack.security.hide_settings
(静态) 一个逗号分隔的设置列表,这些设置将从 集群节点信息 API 的结果中省略。您可以使用通配符将多个设置包含在列表中。例如,以下值隐藏了 ad1 active_directory 领域的全部设置:xpack.security.authc.realms.active_directory.ad1.*。由于信息的敏感性,API 已经省略了所有 ssl 设置、bind_dnbind_password
xpack.security.fips_mode.enabled
(静态) 启用 FIPS 操作模式。如果您在启用 FIPS 140-2 的 JVM 中运行此 Elasticsearch 实例,请将其设置为 true。有关更多信息,请参见 FIPS 140-2。默认为 false
xpack.security.fips_mode.required_providers
(静态) 可选地强制执行特定的 Java JCE/JSSE 安全提供程序。例如,将其设置为 ["BCFIPS", "BCJSSE"](不区分大小写)以要求 Bouncy Castle FIPS JCE 和 JSSE 安全提供程序。仅当 xpack.security.fips_mode.enabled 设置为 true 时适用。

密码哈希设置

编辑
xpack.security.authc.password_hashing.algorithm
(静态) 指定用于安全用户凭据存储的哈希算法。请参见 表 2,“密码哈希算法”。如果 xpack.security.fips_mode.enabled 为 true(请参见 FIPS 140-2),则默认为 pbkdf2_stretch。在所有其他情况下,默认为 bcrypt

匿名访问设置

编辑

您可以在 elasticsearch.yml 中配置以下匿名访问设置。有关更多信息,请参见 启用匿名访问

xpack.security.authc.anonymous.username
(静态) 匿名用户的用户名(主体)。默认为 _es_anonymous_user
xpack.security.authc.anonymous.roles
(静态) 与匿名用户关联的角色。必需。
xpack.security.authc.anonymous.authz_exception
(静态) 当 true 时,如果匿名用户没有请求操作的相应权限,则返回 HTTP 403 响应。不会提示用户提供凭据以访问请求的资源。当设置为 false 时,将返回 HTTP 401 响应,并且用户可以使用具有相应权限的凭据来获取访问权限。默认为 true

自动机设置

编辑

在安全功能接受通配符模式的地方(例如,角色中的索引模式、角色映射 API 中的组匹配),每个模式都会编译成一个自动机。以下设置可用于控制此行为。

xpack.security.automata.max_determinized_states
(静态) 单个模式可以创建的自动机状态的上限。这可以防止过于复杂的(例如指数级困难的)模式。默认为 100,000
xpack.security.automata.cache.enabled
(静态) 是否缓存已编译的自动机。编译自动机可能需要大量的 CPU 资源,并可能减慢某些操作的速度。缓存减少了需要编译自动机的频率。默认为 true
xpack.security.automata.cache.size
(静态) 在自动机缓存中保留的最大项目数。默认为 10,000
xpack.security.automata.cache.ttl
(静态) 在自动机缓存中保留项目的持续时间(基于最近的使用情况)。默认为 48h(48 小时)。

文档和字段级安全设置

编辑

您可以在 elasticsearch.yml 中设置以下文档和字段级安全设置。有关更多信息,请参见 设置字段和文档级安全

xpack.security.dls_fls.enabled
(静态) 设置为 false 以防止配置文档和字段级安全。默认为 true
xpack.security.dls.bitset.cache.ttl
(静态) 缓存的 BitSet 条目(用于文档级安全)的生存时间。文档级安全查询可能依赖于 Lucene BitSet 对象,并且这些对象会自动缓存以提高性能。默认为使未使用 2h(2 小时)的条目过期。
xpack.security.dls.bitset.cache.size
(静态) 缓存的 BitSet 条目(用于文档级安全)的最大内存使用量。文档级安全查询可能依赖于 Lucene BitSet 对象,并且这些对象会自动缓存以提高性能。可以配置为原始字节数(例如 200mb1g)或节点 JVM 堆内存的百分比(例如 5%)。超过默认值时,将逐出最近最少使用的条目。默认为节点分配的堆的 10%

令牌服务设置

编辑

您可以在 elasticsearch.yml 中设置以下令牌服务设置。

xpack.security.authc.token.enabled
(静态) 设置为 false 以禁用内置令牌服务。默认为 true,除非 xpack.security.http.ssl.enabledfalse。这可以防止通过普通 http 连接嗅探令牌。
xpack.security.authc.token.timeout
(静态) 令牌的有效时间长度。默认情况下,此值为 20m 或 20 分钟。最大值为 1 小时。

API 密钥服务设置

编辑

您可以在 elasticsearch.yml 中设置以下 API 密钥服务设置。

xpack.security.authc.api_key.enabled
(静态) 设置为 false 以禁用内置 API 密钥服务。默认为 true
xpack.security.authc.api_key.cache.ttl
(静态) 缓存的 API 密钥条目的生存时间。API 密钥 ID 及其 API 密钥的哈希值将在此期间缓存。使用标准 Elasticsearch 时间单位 指定时间段。默认为 1d
xpack.security.authc.api_key.cache.max_keys
(静态) 在任何给定时间可以存在于缓存中的 API 密钥条目的最大数量。默认为 10,000。
xpack.security.authc.api_key.cache.hash_algo
(静态,专家) 用于内存中缓存的 API 密钥凭据的哈希算法。有关可能的值,请参见 表 1,“缓存哈希算法”。默认为 ssha256
xpack.security.authc.api_key.delete.retention_period
(动态) 比保留期旧的已失效或过期的 API 密钥有资格被删除。默认为 7d

集群节点之间较大的实时时钟不一致会导致评估 API 密钥保留期限的问题。也就是说,如果使 API 密钥失效的节点上的时钟与执行删除操作的节点上的时钟存在显著差异,则密钥的保留时间可能会长于或短于配置的保留期限。

xpack.security.authc.api_key.delete.interval

动态,专家)集群节点会安排自动删除比保留期限更旧的已失效或已过期的 API 密钥。此设置控制两次此类删除作业之间的最小时间间隔。默认为 24h

这是一个低级设置,目前控制的是每个节点触发的删除作业之间的间隔,而不是整个集群。

xpack.security.authc.api_key.delete.timeout
静态,专家)设置内部搜索和删除调用的超时时间。
xpack.security.authc.api_key.hashing.algorithm
静态)指定用于保护 API 密钥凭据的哈希算法。请参阅 表 2,“密码哈希算法”。默认为 pbkdf2

安全域设置

编辑

您可以在 elasticsearch.yml 中的 xpack.security.authc.domains 命名空间中配置安全域设置。

例如

xpack:
  security:
    authc:
      domains:
        my_domain: 
          realms: [ 'default_native', 'saml1' ] 

指定安全域的名称

指定属于该域的 Realm

Realm 设置

编辑

您可以在 elasticsearch.yml 中的 xpack.security.authc.realms 命名空间中配置 Realm 设置。

例如

xpack.security.authc.realms:

    native.realm1: 
        order: 0 
        ...

    ldap.realm2:
        order: 1
        ...

    active_directory.realm3:
        order: 2
        ...
    ...

指定 Realm 的类型(例如,nativeldapactive_directorypkifilekerberossaml)和 Realm 名称。此信息是必需的。

指定 Realm 在 Realm 链中的优先级。此信息是必需的。

有效设置因 Realm 类型而异。有关更多信息,请参阅 用户身份验证

对所有 Realm 有效的设置
编辑
order
静态)Realm 在 Realm 链中的优先级。顺序较低的 Realm 会首先被查询。该值对于每个 Realm 必须唯一。此设置是必需的。
enabled
静态)指示 Realm 是否已启用。您可以使用此设置禁用 Realm,而无需删除其配置信息。默认为 true
原生 Realm 设置
编辑

除了 对所有 Realm 有效的设置之外,您还可以指定以下可选设置

cache.ttl
静态)缓存的用户条目生存时间。用户及其凭据的哈希值将在此时间段内被缓存。使用标准 Elasticsearch 时间单位指定时间段。默认为 20m
cache.max_users
静态)在任何给定时间,缓存中可以容纳的最大用户条目数。默认为 100,000。
cache.hash_algo
静态,专家)用于内存中缓存的用户凭据的哈希算法。有关可能的值,请参阅 表 1,“缓存哈希算法”。默认为 ssha256
authentication.enabled
静态)如果设置为 false,则禁用此 Realm 中的身份验证支持,以便它仅支持用户查找。(请参阅 以其他用户身份提交请求授权 Realm功能)。默认为 true
文件 Realm 设置
编辑

除了 对所有 Realm 有效的设置之外,您还可以指定以下设置

cache.ttl
静态)缓存的用户条目生存时间。用户及其凭据的哈希值将在配置的此时间段内被缓存。默认为 20m。使用标准 Elasticsearch 时间单位指定值。默认为 20m
cache.max_users
静态)在给定时间,缓存中可以容纳的最大用户条目数。默认为 100,000。
cache.hash_algo
静态,专家)用于内存中缓存的用户凭据的哈希算法。请参阅 表 1,“缓存哈希算法”。默认为 ssha256
authentication.enabled
静态)如果设置为 false,则禁用此 Realm 中的身份验证支持,以便它仅支持用户查找。(请参阅 以其他用户身份提交请求授权 Realm功能)。默认为 true
LDAP Realm 设置
编辑

除了 对所有 Realm 有效的设置之外,您还可以指定以下设置

url

静态)一个或多个采用 ldap[s]://<server>:<port> 格式的 LDAP URL。必需。

要提供多个 URL,请使用 YAML 数组 (["ldap://server1:636", "ldap://server2:636"]) 或逗号分隔的字符串 ("ldap://server1:636, ldap://server2:636")。

虽然两者都受支持,但您不能混合使用 ldapldaps 协议。

load_balance.type
静态)定义多个 LDAP URL 时要使用的行为。有关支持的值,请参阅 负载平衡和故障转移类型。默认为 failover
load_balance.cache_ttl
静态)当使用 dns_failoverdns_round_robin 作为负载平衡类型时,此设置控制缓存 DNS 查找的时间量。默认为 1h
bind_dn
静态)用于绑定到 LDAP 并执行搜索的用户 DN。仅适用于用户搜索模式。如果未指定,则尝试匿名绑定。默认为空。由于其潜在的安全影响,bind_dn 不会通过 节点信息 API公开。
bind_password
静态 [6.3] 在 6.3 中弃用。 使用 secure_bind_password 代替。用于绑定到 LDAP 目录的用户密码。默认为空。由于其潜在的安全影响,bind_password 不会通过 节点信息 API公开。
secure_bind_password
安全可重新加载)用于绑定到 LDAP 目录的用户密码。默认为空。
user_dn_templates
静态)DN 模板,它将用户名替换为字符串 {0}。此设置是多值设置;您可以指定多个用户上下文。在用户模板模式下运行时需要此设置。如果指定了 user_search.base_dn,则此设置无效。有关不同模式的更多信息,请参阅 LDAP 用户身份验证
authorization_realms

静态)应为委托授权查询的 Realm 的名称。如果使用此设置,则 LDAP Realm 不会执行角色映射,而是从列出的 Realm 加载用户。引用的 Realm 将按照在此列表中定义的顺序进行查询。请参阅 委托授权到另一个 Realm

如果指定了任何以 user_search 开头的设置,则会忽略 user_dn_templates 设置。

user_group_attribute
静态)指定要检查用户的哪个属性以获取其组成员身份。如果指定了任何 group_search 设置,则会忽略此设置。默认为 memberOf
user_full_name_attribute
静态)指定要检查用户的哪个属性以获取用户的全名。默认为 cn
user_email_attribute
静态)指定要检查用户的哪个属性以获取用户的电子邮件地址。默认为 mail
user_search.base_dn
静态)指定一个容器 DN 以搜索用户。在用户搜索模式下运行时需要此设置。如果指定了 user_dn_templates,则此设置无效。有关不同模式的更多信息,请参阅 LDAP 用户身份验证
user_search.scope
静态)用户搜索的范围。有效值为 sub_treeone_levelbaseone_level 仅搜索 base_dn 中直接包含的对象。sub_tree 搜索 base_dn 下包含的所有对象。base 指定 base_dn 是用户对象,并且它是唯一考虑的用户。默认为 sub_tree
user_search.filter
静态)指定用于搜索目录的过滤器,以尝试将条目与用户提供的用户名匹配。默认为 (uid={0}){0} 将替换为搜索时提供的用户名。
user_search.attribute
静态 [5.6] 在 5.6 中弃用。 使用 user_search.filter 代替。要与请求发送的用户名匹配的属性。默认为 uid
user_search.pool.enabled
静态)启用或禁用用户搜索的连接池。如果设置为 false,则每次搜索都会创建一个新的连接。当设置了 bind_dn 时,默认为 true
user_search.pool.size
静态)允许连接池中与 LDAP 服务器建立的最大连接数。默认为 20
user_search.pool.initial_size
静态)启动时要创建的与 LDAP 服务器建立的初始连接数。默认为 0。如果 LDAP 服务器已关闭,则大于 0 的值可能会导致启动失败。
user_search.pool.health_check.enabled
静态)启用或禁用连接池中 LDAP 连接的运行状况检查。在后台以指定的时间间隔检查连接。默认为 true
user_search.pool.health_check.dn

(静态) 在健康检查期间检索到的可分辨名称。如果存在,则默认为 bind_dn 的值;如果不存在,则回退到 user_search.base_dn
user_search.pool.health_check.interval
(静态) 执行池中连接的后台检查的间隔。默认为 60s
group_search.base_dn
(静态) 搜索用户所属组的容器 DN。当此元素不存在时,Elasticsearch 会搜索用户设置的 user_group_attribute 属性以确定组成员资格。
group_search.scope
(静态) 指定组搜索应该是 sub_treeone_level 还是 baseone_level 仅搜索直接包含在 base_dn 中的对象。sub_tree 搜索 base_dn 下包含的所有对象。base 指定 base_dn 是一个组对象,并且它是唯一考虑的组。默认为 sub_tree
group_search.filter
(静态) 指定用于查找组的过滤器。当未设置时,领域会搜索具有属性 membermemberOfmemberUidgroupgroupOfNamesgroupOfUniqueNamesposixGroup。过滤器中任何 {0} 的实例都将替换为在 group_search.user_attribute 中定义的用户属性。
group_search.user_attribute
(静态) 指定要获取并作为参数提供给过滤器的用户属性。如果未设置,则用户 DN 将传递到过滤器。默认为空。
unmapped_groups_as_roles
(静态) 如果设置为 true,则任何未映射的 LDAP 组的名称都将用作角色名称并分配给用户。如果某个组未在 角色映射文件 中引用,则认为该组是未映射的。不会考虑基于 API 的角色映射。默认为 false
files.role_mapping
(静态) 位置 用于 YAML 角色映射配置文件。默认为 ES_PATH_CONF/role_mapping.yml
follow_referrals
(静态) 指定 Elasticsearch 是否应遵循 LDAP 服务器返回的引用。引用是由服务器返回的 URL,用于继续 LDAP 操作(例如,搜索)。默认为 true
metadata
(静态) 应从 LDAP 服务器加载并存储在已认证用户的元数据字段中的其他 LDAP 属性列表。
timeout.tcp_connect
(静态) 建立 LDAP 连接的 TCP 连接超时时间。末尾的 s 表示秒,ms 表示毫秒。默认为 5s(5 秒)。
timeout.tcp_read
(静态) [7.7] 已在 7.7 中弃用。 建立 LDAP 连接后的 TCP 读取超时时间。这等效于 timeout.response,并且已弃用,不能同时使用。末尾的 s 表示秒,ms 表示毫秒。
timeout.response
(静态) 等待 LDAP 服务器响应的时间间隔。末尾的 s 表示秒,ms 表示毫秒。默认为 timeout.ldap_search 的值。
timeout.ldap_search
(静态) LDAP 搜索的超时时间。该值在请求中指定,并由接收 LDAP 服务器执行。末尾的 s 表示秒,ms 表示毫秒。默认为 5s(5 秒)。
ssl.key

(静态) 包含私钥的 PEM 编码文件的路径。

如果需要 HTTP 客户端身份验证,则使用此文件。您不能同时使用此设置和 ssl.keystore.path

如果 LDAP 服务器需要客户端身份验证,则使用此文件。您不能同时使用此设置和 ssl.keystore.path

ssl.key_passphrase

(静态) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.secure_key_passphrase

您不能同时使用此设置和 ssl.secure_key_passphrase

ssl.secure_key_passphrase
(安全) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。
ssl.certificate

(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。

仅当设置了 ssl.key 时才能使用此设置。

当客户端连接时,此证书将显示给客户端。

ssl.certificate_authorities

(静态) 应信任的 PEM 编码证书文件的路径列表。

此设置和 ssl.truststore.path 不能同时使用。

您不能同时使用此设置和 ssl.truststore.path

ssl.keystore.path

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

您不能同时使用此设置和 ssl.key

ssl.keystore.type
(静态) 密钥库文件的格式。它必须是 jksPKCS12。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为 PKCS12。否则,默认为 jks
ssl.keystore.password
(静态) 密钥库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_password
ssl.keystore.secure_password
(安全) 密钥库的密码。
ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_key_password

您不能同时使用此设置和 ssl.keystore.secure_password

ssl.keystore.secure_key_password
(静态) 密钥库中密钥的密码。默认为密钥库密码。
ssl.truststore.path

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

您不能同时使用此设置和 ssl.certificate_authorities

ssl.truststore.password

(静态) 信任库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.truststore.secure_password

您不能同时使用此设置和 ssl.truststore.secure_password

ssl.truststore.secure_password
(安全) 信任库的密码。
ssl.truststore.type
(静态) 信任库文件的格式。它必须是 jksPKCS12。如果文件名以“.p12”、“.pfx”或“pkcs12”结尾,则默认为 PKCS12。否则,默认为 jks
ssl.verification_mode

(静态) 使用 ldaps 防止中间人攻击和证书伪造时指示验证类型。

有效值
full
验证提供的证书:其发行日期在 not_beforenot_after 日期范围内;链接到受信任的证书颁发机构 (CA);其 hostname 或 IP 地址与证书中的名称匹配。
certificate
验证提供的证书并验证它是否由受信任的颁发机构 (CA) 签名,但不检查证书 hostname
none

不执行证书验证。

将证书验证设置为 none 会禁用 SSL/TLS 的许多安全优势,这非常危险。仅当 Elastic 支持人员指示您将其作为临时诊断机制用于解决 TLS 错误时,才设置此值。

默认为 full

ssl.supported_protocols

(静态) 支持的协议及其版本。有效协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。如果 JVM 的 SSL 提供程序支持 TLSv1.3,则默认为 TLSv1.3,TLSv1.2,TLSv1.1。否则,默认为 TLSv1.2,TLSv1.1

Elasticsearch 依赖于您的 JDK 的 SSL 和 TLS 实现。查看 JDK 版本支持的 SSL/TLS 版本 以获取更多信息。

如果 xpack.security.fips_mode.enabledtrue,则无法使用 SSLv2HelloSSLv3。请参阅 FIPS 140-2

ssl.cipher_suites

静态)指定与 LDAP 服务器通信时应支持的密码套件。支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为 TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256TLS_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA

有关更多信息,请参阅 Oracle 的 Java 密码体系结构文档

cache.ttl
静态)指定缓存的用户条目生存时间。用户及其凭据的哈希值将在此时间段内缓存。使用标准 Elasticsearch 时间单位。默认为 20m
cache.max_users
静态)指定缓存可以包含的最大用户条目数。默认为 100000
cache.hash_algo
静态,专家)指定用于内存中缓存的用户凭据的哈希算法。请参阅 表 1,“缓存哈希算法”。默认为 ssha256
authentication.enabled
静态)如果设置为 false,则禁用此 Realm 中的身份验证支持,以便它仅支持用户查找。(请参阅 以其他用户身份提交请求授权 Realm功能)。默认为 true
Active Directory 领域设置
编辑

除了 对所有 Realm 有效的设置之外,您还可以指定以下设置

url

静态)一个或多个 ldap[s]://<server>:<port> 格式的 LDAP URL。默认为 ldap://<domain_name>:389。使用 SSL/TLS 连接或使用自定义端口时,此设置是必需的。

要提供多个 URL,请使用 YAML 数组 (["ldap://server1:636", "ldap://server2:636"]) 或逗号分隔的字符串 ("ldap://server1:636, ldap://server2:636")。

虽然两者都受支持,但您不能混合使用 ldapldaps 协议。

如果未提供 URL,Elasticsearch 将使用 ldap://<domain_name>:389 的默认值。此默认值使用 domain_name 设置值,并假定与端口 389 的未加密连接。

load_balance.type
静态)定义多个 LDAP URL 时要使用的行为。有关支持的值,请参阅 负载平衡和故障转移类型。默认为 failover
load_balance.cache_ttl
静态)当使用 dns_failoverdns_round_robin 作为负载平衡类型时,此设置控制缓存 DNS 查找的时间量。默认为 1h
domain_name
静态)Active Directory 的域名。如果未指定 urluser_search.base_dn 设置,则集群可以从此设置派生这些值。必需。
bind_dn
静态)用于绑定到 Active Directory 并执行搜索的用户 DN。默认为空。由于其潜在的安全影响,bind_dn 不会通过 节点信息 API 公开。
bind_password
静态 [6.3] 已在 6.3 中弃用。 使用 secure_bind_password 代替。用于绑定到 Active Directory 的用户的密码。默认为空。由于其潜在的安全影响,bind_password 不会通过 节点信息 API 公开。
secure_bind_password
安全可重新加载)用于绑定到 Active Directory 的用户的密码。默认为空。
unmapped_groups_as_roles
静态)如果设置为 true,则任何未映射的 Active Directory 组的名称将用作角色名称并分配给用户。当组在任何角色映射文件中均未引用时,则认为该组为未映射。不会考虑基于 API 的角色映射。默认为 false
files.role_mapping
静态)YAML 角色映射配置文件的位置。默认为 ES_PATH_CONF/role_mapping.yml
user_search.base_dn
静态)搜索用户的上下文。默认为 Active Directory 域的根目录。
user_search.scope
静态)指定用户搜索应为 sub_treeone_level 还是 baseone_level 仅搜索 base_dn 中直接包含的用户。 sub_tree 搜索 base_dn 下包含的所有对象。 base 指定 base_dn 是一个用户对象,并且它是唯一考虑的用户。默认为 sub_tree
user_search.filter
静态)指定一个过滤器,用于根据用户名查找用户。默认过滤器查找具有 sAMAccountNameuserPrincipalNameuser 对象。如果指定,则必须是有效的 LDAP 用户搜索过滤器。例如 (&(objectClass=user)(sAMAccountName={0}))。有关更多信息,请参阅 搜索过滤器语法
user_search.upn_filter
静态)指定一个过滤器,用于根据用户主体名称查找用户。默认过滤器查找具有匹配 userPrincipalNameuser 对象。如果指定,则必须是有效的 LDAP 用户搜索过滤器。例如,(&(objectClass=user)(userPrincipalName={1})){1} 是用户提供的完整用户主体名称。有关更多信息,请参阅 搜索过滤器语法
user_search.down_level_filter
静态)指定一个过滤器,用于根据低级别登录名 (DOMAIN\user) 查找用户。默认过滤器在提供的域中查找具有匹配 sAMAccountNameuser 对象。如果指定,则必须是有效的 LDAP 用户搜索过滤器。例如,(&(objectClass=user)(sAMAccountName={0}))。有关更多信息,请参阅 搜索过滤器语法
user_search.pool.enabled
静态)启用或禁用用户搜索的连接池。禁用后,将为每次搜索创建一个新的连接。当提供 bind_dn 时,默认为 true
user_search.pool.size
静态)连接池中允许连接到 Active Directory 服务器的最大连接数。默认为 20
user_search.pool.initial_size
静态)启动时创建的连接到 Active Directory 服务器的初始连接数。默认为 0。如果 LDAP 服务器已关闭,则大于 0 的值可能会导致启动失败。
user_search.pool.health_check.enabled
静态)启用或禁用对连接池中 Active Directory 连接的运行状况检查。连接将在后台以指定的间隔进行检查。默认为 true
user_search.pool.health_check.dn

静态)作为运行状况检查一部分要检索的区分名称。如果存在该设置,则默认为 bind_dn 的值。否则,默认为 user_search.base_dn 设置的值。
user_search.pool.health_check.interval
(静态) 执行池中连接的后台检查的间隔。默认为 60s
group_search.base_dn
静态)搜索用户所属组的上下文。默认为 Active Directory 域的根目录。
group_search.scope
静态)指定组搜索应为 sub_treeone_level 还是 baseone_level 搜索 base_dn 中直接包含的组。 sub_tree 搜索 base_dn 下包含的所有对象。 base 指定 base_dn 是一个组对象,并且它是唯一考虑的组。默认为 sub_tree
metadata
(静态) 应从 LDAP 服务器加载并存储在已认证用户的元数据字段中的其他 LDAP 属性列表。
timeout.tcp_connect
(静态) 建立 LDAP 连接的 TCP 连接超时时间。末尾的 s 表示秒,ms 表示毫秒。默认为 5s(5 秒)。
timeout.tcp_read
静态 [7.7] 已在 7.7 中弃用。 建立 LDAP 连接后的 TCP 读取超时时间段。这等效于并已弃用,取而代之的是 timeout.response,并且它们不能同时使用。末尾的 s 表示秒,或 ms 表示毫秒。默认为 timeout.ldap_search 的值。
timeout.response
静态)等待来自 AD 服务器的响应的时间间隔。末尾的 s 表示秒,或 ms 表示毫秒。默认为 timeout.ldap_search 的值。
timeout.ldap_search
(静态) LDAP 搜索的超时时间。该值在请求中指定,并由接收 LDAP 服务器执行。末尾的 s 表示秒,ms 表示毫秒。默认为 5s(5 秒)。
ssl.certificate

(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。

仅当设置了 ssl.key 时才能使用此设置。

当客户端连接时,此证书将显示给客户端。

ssl.certificate_authorities

(静态) 应信任的 PEM 编码证书文件的路径列表。

此设置和 ssl.truststore.path 不能同时使用。

您不能同时使用此设置和 ssl.truststore.path

ssl.key

(静态) 包含私钥的 PEM 编码文件的路径。

如果需要 HTTP 客户端身份验证,则使用此文件。您不能同时使用此设置和 ssl.keystore.path

如果 Active Directory 服务器需要客户端身份验证,则使用此文件。您不能同时使用此设置和 ssl.keystore.path

ssl.key_passphrase

(静态) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.secure_key_passphrase

您不能同时使用此设置和 ssl.secure_key_passphrase

ssl.secure_key_passphrase
(安全) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。
ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_key_password

您不能同时使用此设置和 ssl.keystore.secure_password

ssl.keystore.secure_key_password
安全)密钥库中密钥的密码。默认为密钥库密码。
ssl.keystore.password
(静态) 密钥库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_password
ssl.secure_keystore.password
(安全) 密钥库的密码。
ssl.keystore.path

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

您不能同时使用此设置和 ssl.key

ssl.keystore.type
(静态) 密钥库文件的格式。它必须是 jksPKCS12。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为 PKCS12。否则,默认为 jks
ssl.truststore.password

(静态) 信任库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.truststore.secure_password

您不能同时使用此设置和 ssl.truststore.secure_password

ssl.truststore.secure_password
(安全) 信任库的密码。
ssl.truststore.path

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

您不能同时使用此设置和 ssl.certificate_authorities

ssl.truststore.type
(静态) 信任库文件的格式。它必须是 jksPKCS12。如果文件名以“.p12”、“.pfx”或“pkcs12”结尾,则默认为 PKCS12。否则,默认为 jks
ssl.verification_mode

(静态) 使用 ldaps 防止中间人攻击和证书伪造时指示验证类型。

有效值
full
验证提供的证书:其发行日期在 not_beforenot_after 日期范围内;链接到受信任的证书颁发机构 (CA);其 hostname 或 IP 地址与证书中的名称匹配。
certificate
验证提供的证书并验证它是否由受信任的颁发机构 (CA) 签名,但不检查证书 hostname
none

不执行证书验证。

将证书验证设置为 none 会禁用 SSL/TLS 的许多安全优势,这非常危险。仅当 Elastic 支持人员指示您将其作为临时诊断机制用于解决 TLS 错误时,才设置此值。

默认为 full

ssl.supported_protocols

(静态) 支持的协议及其版本。有效协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。如果 JVM 的 SSL 提供程序支持 TLSv1.3,则默认为 TLSv1.3,TLSv1.2,TLSv1.1。否则,默认为 TLSv1.2,TLSv1.1

Elasticsearch 依赖于您的 JDK 的 SSL 和 TLS 实现。查看 JDK 版本支持的 SSL/TLS 版本 以获取更多信息。

如果 xpack.security.fips_mode.enabledtrue,则无法使用 SSLv2HelloSSLv3。请参阅 FIPS 140-2

ssl.cipher_suites

静态)指定与 Active Directory 服务器通信时应支持的密码套件。支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为 TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256TLS_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA

有关更多信息,请参阅 Oracle 的 Java 密码体系结构文档

cache.ttl
(静态) 指定缓存的用户条目生存时间。用户及其凭据的哈希值将缓存在此配置的时间段内。使用标准的 Elasticsearch 时间单位)。默认为 20m
cache.max_users
静态)指定缓存可以包含的最大用户条目数。默认为 100000
cache.hash_algo
静态,专家)指定用于内存中缓存的用户凭据的哈希算法。请参阅 表 1,“缓存哈希算法”。默认为 ssha256
authentication.enabled
静态)如果设置为 false,则禁用此 Realm 中的身份验证支持,以便它仅支持用户查找。(请参阅 以其他用户身份提交请求授权 Realm功能)。默认为 true
follow_referrals
(静态) 如果设置为 true,Elasticsearch 将遵循 LDAP 服务器返回的引用。引用是服务器返回的 URL,用于继续 LDAP 操作(例如 search)。默认为 true
PKI 领域设置
编辑

除了 对所有 Realm 有效的设置之外,您还可以指定以下设置

username_pattern
(静态) 用于从证书 DN 中提取用户名正则表达式模式。用户名用于审计和日志记录。用户名还可以与 角色映射 API授权委托 一起使用。第一个匹配组用作用户名。默认为 CN=(.*?)(?:,|$)
certificate_authorities
(静态) 要用于将用户的证书认证为受信任的 PEM 证书文件的路径列表。默认为为 SSL 配置的受信任证书。此设置不能与 truststore.path 一起使用。
truststore.algorithm
(静态) 密钥库的算法。默认为 SunX509
truststore.password

(静态) 信任库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.truststore.secure_password

您不能同时使用此设置和 ssl.truststore.secure_password

如果设置了 truststore.path,则需要此设置。

truststore.secure_password
(安全) 信任库的密码。
truststore.path
(静态) 要使用的密钥库的路径。默认为为 SSL 配置的受信任证书。此设置不能与 certificate_authorities 一起使用。
files.role_mapping
(静态) 指定 位置YAML 角色映射配置文件。默认为 ES_PATH_CONF/role_mapping.yml
authorization_realms
(静态) 应查询以进行委托授权的领域的名称。如果使用此设置,则 PKI 领域不执行角色映射,而是从列出的领域加载用户。请参阅 将授权委托给另一个领域
cache.ttl
(静态) 指定缓存的用户条目生存时间。用户及其凭据的哈希值将缓存在此时间段内。使用标准的 Elasticsearch 时间单位)。默认为 20m
cache.max_users
静态)指定缓存可以包含的最大用户条目数。默认为 100000
delegation.enabled
(静态) 通常,为了让客户端通过 PKI 领域进行身份验证,它们必须直接连接到 Elasticsearch。也就是说,它们不得通过终止 TLS 连接的代理。为了允许一个 受信任的智能的 代理(如 Kibana)位于 Elasticsearch 之前并终止 TLS 连接,但仍然允许客户端通过此领域在 Elasticsearch 上进行身份验证,您需要将其切换为 true。默认为 false。如果启用了委托,则必须定义 truststore.pathcertificate_authorities 设置。有关更多详细信息,请参阅 为 PKI 领域配置授权委托
SAML 领域设置
编辑

除了 对所有领域有效的设置 之外,您还可以指定以下设置。

idp.entity_id logo cloud
(静态) SAML 身份提供者的实体 ID。实体 ID 是一个 URI,最大长度为 1024 个字符。它可以是 URL (https://idp.example.com/) 或 URN (urn:example.com:idp),并且可以在身份提供者的配置或 SAML 元数据中找到。
idp.metadata.path logo cloud

(静态) 描述身份提供者功能和配置的 SAML 2.0 元数据文件的路径(推荐)或 URL。如果提供了路径,则相对于 Elasticsearch 配置目录解析该路径。如果提供了 URL,则它必须是 file URL 或 https URL。

Elasticsearch 会自动轮询此元数据资源,并在检测到更改时重新加载 IdP 配置。基于文件的资源的轮询频率由全局 Elasticsearch resource.reload.interval.high 设置确定,默认为 5 秒。HTTPS 资源的轮询频率由领域的 idp.metadata.http.refreshidp.metadata.http.minimum_refresh 设置确定。

如果从文件加载元数据资源,则该文件必须在节点启动时存在,如果不存在,则节点将无法启动。如果通过 HTTPS 加载资源,则(默认情况下)节点将容忍加载资源失败 - 节点将启动并将继续轮询 URL 以获取更新。受影响的 SAML 领域将无法对用户进行身份验证,直到问题得到解决。要强制节点在元数据不可用时失败,请将 idp.metadata.http.fail_on_error 设置为 true

idp.metadata.http.fail_on_error
(静态) 如果设置为 true,如果领域尝试通过 HTTPS 加载元数据并且该元数据不可用,则领域将在启动时失败(并阻止节点启动)。如果设置为 false(默认值),则节点将启动,但受影响的 SAML 领域将不支持用户身份验证,直到元数据能够成功加载。如果从文件加载元数据,则忽略此设置。
idp.metadata.http.refresh logo cloud

(静态) 控制检查 https 元数据是否有更改的频率。默认为 1h(1 小时)。

在某些情况下,Elasticsearch 可能会确定需要更频繁地检查元数据。如果先前尝试加载元数据遇到错误,或者元数据指示它将在配置的刷新间隔内过期,则可能会发生这种情况。在这些情况下,Elasticsearch 将更频繁地轮询,但绝不会超过 idp.metadata.http.minimum_refresh。如果尝试对尚未成功加载元数据的领域进行身份验证,则该领域可能会尝试在配置的轮询频率之外加载元数据。

idp.metadata.http.minimum_refresh
(静态) 控制检查 https 元数据是否有更改的最小频率。在正常操作中,Elasticsearch 将使用 idp.metadata.http.refresh 的值作为轮询间隔。但是,在某些情况下,Elasticsearch 可能会确定需要更频繁地轮询。在这些情况下,minimum_refresh 将设置检查元数据的最低频率。默认为 5m(5 分钟),并且不得设置为大于 idp.metadata.http.refresh 的值。
idp.use_single_logout logo cloud
(静态) 指示是否利用身份提供者的单点注销服务(如果 IdP 元数据文件中存在该服务)。默认为 true
sp.entity_id logo cloud
(静态) 要为此 SAML 服务提供商使用的实体 ID。应将其输入为 URI。我们建议您使用 Kibana 实例的基本 URL。例如,https://kibana.example.com/
sp.acs logo cloud
(静态) Kibana 中断言使用者服务的 URL。通常,这是 Kibana 服务器的“api/security/saml/callback”端点。例如,https://kibana.example.com/api/security/saml/callback
sp.logout logo cloud
(静态) Kibana 中单点注销服务的 URL。通常,这是 Kibana 服务器的“logout”端点。例如,https://kibana.example.com/logout
attributes.principal logo cloud
(静态) 包含用户主体(用户名)的 SAML 属性的名称。
attributes.groups logo cloud
(静态) 包含用户组的 SAML 属性的名称。
attributes.name logo cloud
(静态) 包含用户全名的 SAML 属性的名称。
attributes.mail logo cloud
(静态) 包含用户电子邮件地址的 SAML 属性的名称。
attributes.dn logo cloud
(静态) 包含用户 X.509 区别名称 的 SAML 属性的名称。
attribute_patterns.principal logo cloud
(静态) 与由 attributes.principal 指定的 SAML 属性匹配的 Java 正则表达式,在将其应用于用户的 principal 属性之前。属性值必须与模式匹配,并且第一个捕获组的值用作 principal。例如,^([^@]+)@example\\.com$ 匹配来自“example.com”域的电子邮件地址,并使用本地部分作为 principal。
attribute_patterns.groups logo cloud
(静态) 与 attribute_patterns.principal 相同,但用于 group 属性。
attribute_patterns.name logo cloud
(静态) 与 attribute_patterns.principal 相同,但用于 name 属性。
attribute_patterns.mail logo cloud
(静态) 与 attribute_patterns.principal 相同,但用于 mail 属性。
attribute_patterns.dn logo cloud
(静态) 与 attribute_patterns.principal 相同,但用于 dn 属性。
attribute_delimiters.groups logo cloud
(静态) 用作分隔符的普通字符串,用于在将由 attributes.groups 指定的单值 SAML 属性应用于用户的 groups 属性之前对其进行拆分。例如,在分隔符值为 , 的情况下拆分 SAML 属性值 engineering,elasticsearch-admins,employees 将导致 engineeringelasticsearch-adminsemployees 作为用户的组列表。无论输入字符串中是否存在转义,都将始终在此处进行拆分。此设置不支持多值 SAML 属性。它不能与 attribute_patterns 设置一起使用。您只能为此设置配置 groups 属性。
nameid_format logo cloud
(静态) 请求 IdP 认证当前用户时应请求的 NameID 格式。默认情况下不包含 nameid_format 属性。
nameid.allow_create logo cloud
(静态) 身份验证请求中 NameIdPolicy 元素的 AllowCreate 属性的值。默认值为 false。
nameid.sp_qualifier logo cloud
(静态) 身份验证请求中 NameIdPolicy 元素的 SPNameQualifier 属性的值。默认情况下不包含 SPNameQualifier 属性。
force_authn logo cloud
(静态) 指定在请求 IdP 认证当前用户时是否设置 ForceAuthn 属性。如果设置为 true,则 IdP 必须验证用户的身份,而不管他们可能具有的任何现有会话。默认为 false
populate_user_metadata logo cloud
(静态) 指定是否使用 SAML 属性提供的值填充 Elasticsearch 用户的元数据。默认为 true
authorization_realms
(静态) 应查询以进行委托授权的领域的名称。如果使用此设置,则 SAML 领域不执行角色映射,而是从列出的领域加载用户。请参阅 将授权委托给另一个领域
allowed_clock_skew logo cloud
(静态) IdP 的时钟和 Elasticsearch 节点的时钟之间可以容忍的最大偏差量。默认为 3m(3 分钟)。
req_authn_context_class_ref logo cloud

(静态) 请求 IdP 认证当前用户时,要在请求的身份验证上下文中包含的身份验证上下文类引用值的逗号分隔列表。相应身份验证响应的身份验证上下文应包含至少一个请求值。

有关更多信息,请参阅 请求特定身份验证方法

SAML 领域签名设置
编辑

如果配置了签名密钥(即,设置了 signing.keysigning.keystore.path),则 Elasticsearch 将对传出的 SAML 消息进行签名。可以使用以下设置配置签名

signing.saml_messages logo cloud
(静态) 应签名的 SAML 消息类型的列表或 * 以签名所有消息。列表中的每个元素都应是 SAML XML 元素的本地名称。支持的元素类型为 AuthnRequestLogoutRequestLogoutResponse。仅当还指定了 signing.keysigning.keystore.path 时才有效。默认为 *
signing.key logo cloud
(静态) 指定用于 SAML 消息签名的 PEM 编码私钥的路径。signing.keysigning.keystore.path 不能同时使用。
signing.secure_key_passphrase logo cloud
(安全) 指定用于解密 PEM 编码私钥(signing.key)的密码(如果已加密)。
signing.certificate logo cloud
(静态) 指定与 signing.key 对应的 PEM 编码证书(或证书链)的路径。此证书还必须包含在服务提供商元数据中或在 IdP 中手动配置,以允许进行签名验证。仅当设置了 signing.key 时才能使用此设置。
signing.keystore.path logo cloud
(静态) 包含私钥和证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 signing.key

signing.keystore.type logo cloud
(静态) signing.keystore.path 中密钥库的类型。必须为 jksPKCS12。如果密钥库路径以“.p12”、“.pfx”或“pkcs12”结尾,则此设置默认为 PKCS12。否则,默认为 jks
signing.keystore.alias logo cloud
(静态) 指定密钥库中用于 SAML 消息签名的密钥的别名。如果密钥库包含多个私钥,则必须指定此设置。
signing.keystore.secure_password logo cloud
(安全) signing.keystore.path 中密钥库的密码。
signing.keystore.secure_key_password logo cloud
(安全) 密钥库 (signing.keystore.path) 中密钥的密码。默认为密钥库密码。
SAML 领域加密设置
编辑

如果配置了加密密钥(即,设置了 encryption.keyencryption.keystore.path),则 Elasticsearch 在生成元数据时会发布加密证书,并尝试解密传入的 SAML 内容。可以使用以下设置配置加密

encryption.key logo cloud
(静态) 指定用于 SAML 消息解密的 PEM 编码私钥的路径。encryption.keyencryption.keystore.path 不能同时使用。
encryption.secure_key_passphrase
(安全) 指定用于解密 PEM 编码私钥 (encryption.key) 的密码短语(如果已加密)。
encryption.certificate logo cloud
(静态) 指定与 encryption.key 关联的 PEM 编码证书(或证书链)的路径。此证书还必须包含在服务提供商元数据中,或在 IdP 中手动配置以启用消息加密。仅当设置了 encryption.key 时才能使用此设置。
encryption.keystore.path logo cloud
(静态) 包含私钥和证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 encryption.key
encryption.keystore.type logo cloud
(静态) 密钥库 (encryption.keystore.path) 的类型。必须为 jksPKCS12。如果密钥库路径以“.p12”、“.pfx”或“pkcs12”结尾,则此设置默认为 PKCS12。否则,默认为 jks
encryption.keystore.alias logo cloud
(静态) 指定密钥库 (encryption.keystore.path) 中用于 SAML 消息解密的密钥的别名。如果未指定,则密钥库中的所有兼容密钥对都将被视为解密候选密钥。
encryption.keystore.secure_password
(安全) 密钥库 (encryption.keystore.path) 的密码。
encryption.keystore.secure_key_password
(安全) 密钥库 (encryption.keystore.path) 中密钥的密码。仅支持单个密码。如果您使用多个解密密钥,则它们不能具有单独的密码。
SAML 领域 SSL 设置
编辑

如果您通过 SSL/TLS 加载 IdP 元数据(即,idp.metadata.path 是使用 https 协议的 URL),则可以使用以下设置配置 SSL。

这些设置仅用于通过 https 加载元数据,不应用于其他任何目的。

ssl.key logo cloud

(静态) 包含私钥的 PEM 编码文件的路径。

如果需要 HTTP 客户端身份验证,则使用此文件。您不能同时使用此设置和 ssl.keystore.path

ssl.key_passphrase logo cloud

(静态) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.secure_key_passphrase

您不能同时使用此设置和 ssl.secure_key_passphrase

ssl.secure_key_passphrase

(安全) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。

您不能同时使用此设置和 ssl.key_passphrase

ssl.certificate logo cloud

(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。

仅当设置了 ssl.key 时才能使用此设置。

ssl.certificate_authorities logo cloud

(静态) 应信任的 PEM 编码证书文件的路径列表。

此设置和 ssl.truststore.path 不能同时使用。

ssl.keystore.path logo cloud

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

ssl.keystore.type logo cloud
(静态) 密钥库文件的格式。它必须是 jksPKCS12。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为 PKCS12。否则,默认为 jks
ssl.keystore.password logo cloud
(静态) 密钥库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_password
ssl.keystore.secure_password

(安全) 密钥库的密码。

您不能同时使用此设置和 ssl.keystore.password

ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_key_password

您不能同时使用此设置和 ssl.keystore.secure_password

您不能同时使用此设置和 ssl.keystore.secure_key_password

ssl.keystore.secure_key_password
安全)密钥库中密钥的密码。默认为密钥库密码。

您不能同时使用此设置和 ssl.keystore.key_password

ssl.truststore.path logo cloud

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

ssl.truststore.type logo cloud
(静态) 信任库文件的格式。它必须是 jksPKCS12。如果文件名以“.p12”、“.pfx”或“pkcs12”结尾,则默认为 PKCS12。否则,默认为 jks
ssl.truststore.password logo cloud

(静态) 信任库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.truststore.secure_password

您不能同时使用此设置和 ssl.truststore.secure_password

ssl.truststore.secure_password

(安全) 信任库的密码。

此设置不能与 ssl.truststore.password 一起使用。

ssl.verification_mode logo cloud

(静态) 控制证书的验证。

有效值
full
验证提供的证书:其发行日期在 not_beforenot_after 日期范围内;链接到受信任的证书颁发机构 (CA);其 hostname 或 IP 地址与证书中的名称匹配。
certificate
验证提供的证书并验证它是否由受信任的颁发机构 (CA) 签名,但不检查证书 hostname
none

不执行证书验证。

将证书验证设置为 none 会禁用 SSL/TLS 的许多安全优势,这非常危险。仅当 Elastic 支持人员指示您将其作为临时诊断机制用于解决 TLS 错误时,才设置此值。

默认为 full

ssl.supported_protocols logo cloud

(静态) 支持的协议及其版本。有效协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。如果 JVM 的 SSL 提供程序支持 TLSv1.3,则默认为 TLSv1.3,TLSv1.2,TLSv1.1。否则,默认为 TLSv1.2,TLSv1.1

Elasticsearch 依赖于您的 JDK 的 SSL 和 TLS 实现。查看 JDK 版本支持的 SSL/TLS 版本 以获取更多信息。

如果 xpack.security.fips_mode.enabledtrue,则无法使用 SSLv2HelloSSLv3。请参阅 FIPS 140-2

ssl.cipher_suites logo cloud

(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为 TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256TLS_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA

有关更多信息,请参阅 Oracle 的 Java 密码体系结构文档

Kerberos 领域设置
编辑

除了 对所有 Realm 有效的设置之外,您还可以指定以下设置

keytab.path logo cloud
(静态) 指定包含此 Elasticsearch 节点使用的服务主体 的 Kerberos 密钥表文件的路径。这必须是 Elasticsearch 配置目录中的某个位置,并且该文件必须具有读取权限。必需。
remove_realm_name logo cloud
(静态) 设置为 true 以删除主体名称的领域部分。Kerberos 中的主体名称采用 user/instance@REALM 的形式。如果此选项为 true,则用户名中将不包含领域部分 (@REALM)。默认为 false
krb.debug
(静态) 设置为 true 以启用为提供 Kerberos 身份验证支持的 Java 登录模块启用调试日志。默认为 false
cache.ttl logo cloud
(静态) 缓存的用户条目生存时间。用户在此期间内被缓存。使用标准 Elasticsearch 时间单位 指定时间段。默认为 20m
cache.max_users logo cloud
静态)在任何给定时间,缓存中可以容纳的最大用户条目数。默认为 100,000。
authorization_realms logo cloud
(静态) 应查询以进行委托授权的领域的名称。如果使用此设置,则 Kerberos 领域不执行角色映射,而是从列出的领域加载用户。请参阅 将授权委托给另一个领域
OpenID Connect 领域设置
编辑

除了 对所有领域有效的设置 之外,您还可以指定以下设置。

op.issuer logo cloud
(静态) 可验证的 OpenID Connect 提供程序标识符。颁发者标识符通常是一个区分大小写的 URL,使用 https 方案,其中包含方案、主机,以及可选的端口号和路径组件,但不包含查询或片段组件。此设置的值应由您的 OpenID Connect 提供程序提供。
op.authorization_endpoint logo cloud
(静态) OpenID Connect 提供程序中授权端点的 URL。此设置的值应由您的 OpenID Connect 提供程序提供。
op.token_endpoint logo cloud
(静态) OpenID Connect 提供程序中令牌端点的 URL。此设置的值应由您的 OpenID Connect 提供程序提供。
op.userinfo_endpoint logo cloud
(静态) OpenID Connect 提供程序中用户信息端点的 URL。此设置的值应由您的 OpenID Connect 提供程序提供。
op.endsession_endpoint logo cloud
(静态) OpenID Connect 提供程序中结束会话端点的 URL。此设置的值应由您的 OpenID Connect 提供程序提供。
op.jwkset_path logo cloud
(静态)

包含用于验证由 OpenID Connect 提供程序签名的令牌和声明响应的公钥材料的 JSON Web 密钥集 (JWKS) 的文件名或 URL。如果值不以 httpshttp 开头,则被视为文件名。文件名相对于 Elasticsearch 配置目录解析。对文件的更改会根据全局 Elasticsearch resource.reload.interval.high 设置确定的频率轮询,默认为 5 秒。

+ 如果提供了 URL,则它必须以 https://http:// 开头。Elasticsearch 会自动缓存检索到的 JWK,并在签名验证失败时尝试刷新 JWK,因为这可能表示 OpenID Connect 提供程序已轮换签名密钥。

authorization_realms
(静态) 应查询以进行委托授权的领域的名称。如果使用此设置,则 OpenID Connect 领域不执行角色映射,而是从列出的领域加载用户。请参阅 将授权委托给另一个领域
rp.client_id logo cloud
(静态) 在 OpenID Connect 提供程序注册期间分配给 Elasticsearch 的 OAuth 2.0 客户端标识符。
rp.client_secret
(安全) 在 OpenID Connect 提供程序注册期间分配给 Elasticsearch 的 OAuth 2.0 客户端密钥。
rp.client_auth_method logo cloud
(静态) Elasticsearch 用于向 OpenID Connect 提供程序进行身份验证的客户端身份验证方法。可以是 client_secret_basicclient_secret_postclient_secret_jwt。默认为 client_secret_basic
rp.client_auth_jwt_signature_algorithm logo cloud
(静态) Elasticsearch 用于签署 JWT 的签名算法,当为 rp.client_auth_method 选择 client_secret_jwt 时,它将作为客户端向 OpenID Connect 提供程序进行身份验证。可以是 HS256HS384HS512。默认为 HS384
rp.redirect_uri logo cloud
(静态) Kibana 中的重定向 URI。如果要使用授权代码流,则为 Kibana 服务器的 api/security/oidc/callback 端点。如果要使用隐式流,则为 api/security/oidc/implicit 端点。例如,https://kibana.example.com/api/security/oidc/callback
rp.response_type logo cloud
(静态) OAuth 2.0 响应类型值,用于确定要使用的授权处理流程。可以是 code 用于授权代码授予流,或 id_tokenid_token token 用于隐式流。
rp.signature_algorithm logo cloud
(静态) Elasticsearch 将用于验证从 OpenID Connect 提供程序接收到的 id 令牌签名的签名算法。允许的值为 HS256HS384HS512ES256ES384ES512RS256RS384RS512PS256PS384PS512。默认为 RS256
rp.requested_scopes logo cloud
(静态) 将由 OpenID Connect 提供程序作为身份验证请求的一部分请求的范围值。可选,默认为 openid
rp.post_logout_redirect_uri logo cloud
(静态) 成功单点注销后,OpenID Connect 提供程序应将浏览器重定向到的重定向 URI(通常在 Kibana 中)。
claims.principal
(静态) 包含用户主体(用户名)的 OpenID Connect 声明的名称。
claims.groups logo cloud
(静态) 包含用户组的 OpenID Connect 声明的名称。
claims.name logo cloud
(静态) 包含用户全名的 OpenID Connect 声明的名称。
claims.mail logo cloud
(静态) 包含用户电子邮件地址的 OpenID Connect 声明的名称。
claims.dn logo cloud
(静态) 包含用户 X.509 区分名称 的 OpenID Connect 声明的名称。
claim_patterns.principal logo cloud
(静态) 与由 claims.principal 指定的 OpenID Connect 声明匹配的 Java 正则表达式,在将其应用于用户的 principal 属性之前。属性值必须与模式匹配,并且第一个 捕获组 的值用作主体。例如,^([^@]+)@example\\.com$ 与来自“example.com”域的电子邮件地址匹配,并使用本地部分作为主体。
claim_patterns.groups logo cloud
(静态) 与 claim_patterns.principal 相同,但适用于 group 属性。
claim_patterns.name logo cloud
(静态) 与 claim_patterns.principal 相同,但用于 name 属性。
claim_patterns.mail logo cloud
(静态) 与 claim_patterns.principal 相同,但用于 mail 属性。
claim_patterns.dn logo cloud
(静态) 与 claim_patterns.principal 相同,但用于 dn 属性。
allowed_clock_skew logo cloud
(静态) 验证 id 令牌时,在考虑其创建时间和过期时间时,允许的最大时钟偏差。默认为 60s
populate_user_metadata logo cloud
(静态) 指定是否使用 OpenID Connect 声明提供的值填充 Elasticsearch 用户的元数据。默认为 true
http.proxy.host
(静态) 指定内部 http 客户端将用于所有与 OpenID Connect 提供程序端点进行后端通信的代理服务器的地址。这包括对令牌端点、用户信息端点的请求,以及如果 op.jwkset_path 设置为 URL,则请求从 OP 获取 JSON Web 密钥集。
http.proxy.scheme
(静态) 指定用于连接到 http 客户端将用于所有与 OpenID Connect 提供程序端点进行后端通信的代理服务器的协议。默认为 http。允许的值为 httphttps
http.proxy.port
(静态) 指定 http 客户端将用于所有与 OpenID Connect 提供程序端点进行后端通信的代理服务器的端口。默认为 80
http.connect_timeout logo cloud
(静态) 控制用于与 OpenID Connect 提供程序端点进行后端通信的 http 客户端的行为。指定建立连接之前的超时时间。值为零表示不使用超时。默认为 5s
http.connection_read_timeout logo cloud
(静态) 控制用于与 OpenID Connect 提供程序端点进行后端通信的 http 客户端的行为。指定从连接管理器请求连接时使用的超时时间。默认为 5s
http.socket_timeout logo cloud
(静态) 控制用于与 OpenID Connect 提供程序端点进行后端通信的 http 客户端的行为。指定套接字超时时间 (SO_TIMEOUT)(以毫秒为单位),即等待数据或换句话说,两个连续数据包之间最大空闲时间。默认为 5s
http.max_connections logo cloud
(静态) 控制用于与 OpenID Connect 提供程序端点进行后端通信的 http 客户端的行为。指定所有端点允许的最大连接数。默认为 200
http.max_endpoint_connections logo cloud
(静态) 控制用于与 OpenID Connect 提供程序端点进行后端通信的 http 客户端的行为。指定每个端点允许的最大连接数。默认为 200
http.tcp.keep_alive logo cloud
(静态) 是否在用于与 OpenID Connect 提供程序端点进行后端通信的 HTTP 连接上启用 TCP 保活。默认为 true
http.connection_pool_ttl logo cloud
(静态) 控制用于与 OpenID Connect 提供程序端点进行后端通信的 http 客户端的行为。指定连接池中连接的生存时间(默认为 3 分钟)。如果连接空闲时间超过指定超时时间,则将其关闭。

服务器还可以设置 Keep-Alive HTTP 响应标头。有效的生存时间值是此设置和 Keep-Alive 响应标头中的较小值。将此设置配置为 -1 以让服务器决定该值。如果服务器未设置标头且设置值为 -1,则生存时间为无限长,连接永远不会过期。

OpenID Connect 领域 SSL 设置
编辑

以下设置可用于配置对 OpenID Connect 提供程序端点的所有传出 http 连接的 SSL。

这些设置 *仅* 用于 Elasticsearch 和 OpenID Connect 提供程序之间的后端通信

ssl.key logo cloud

(静态) 包含私钥的 PEM 编码文件的路径。

如果需要 HTTP 客户端身份验证,则使用此文件。您不能同时使用此设置和 ssl.keystore.path

ssl.key_passphrase logo cloud

(静态) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.secure_key_passphrase

您不能同时使用此设置和 ssl.secure_key_passphrase

ssl.secure_key_passphrase

(安全) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。

您不能同时使用此设置和 ssl.key_passphrase

ssl.certificate logo cloud

(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。

仅当设置了 ssl.key 时才能使用此设置。

ssl.certificate_authorities logo cloud

(静态) 应信任的 PEM 编码证书文件的路径列表。

此设置和 ssl.truststore.path 不能同时使用。

ssl.keystore.path logo cloud

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

ssl.keystore.type logo cloud
(静态) 密钥库文件的格式。它必须是 jksPKCS12。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为 PKCS12。否则,默认为 jks
ssl.keystore.password logo cloud
(静态) 密钥库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_password
ssl.keystore.secure_password

(安全) 密钥库的密码。

您不能同时使用此设置和 ssl.keystore.password

ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_key_password

您不能同时使用此设置和 ssl.keystore.secure_password

您不能同时使用此设置和 ssl.keystore.secure_key_password

ssl.keystore.secure_key_password

安全)密钥库中密钥的密码。默认为密钥库密码。

您不能同时使用此设置和 ssl.keystore.key_password

ssl.truststore.path logo cloud

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

ssl.truststore.type logo cloud
(静态) 信任库文件的格式。它必须是 jksPKCS12。如果文件名以“.p12”、“.pfx”或“pkcs12”结尾,则默认为 PKCS12。否则,默认为 jks
ssl.truststore.password logo cloud

(静态) 信任库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.truststore.secure_password

您不能同时使用此设置和 ssl.truststore.secure_password

ssl.truststore.secure_password

(安全) 信任库的密码。

您不能同时使用此设置和 ssl.truststore.password

ssl.verification_mode logo cloud

(静态) 控制证书的验证。

有效值
full
验证提供的证书:其发行日期在 not_beforenot_after 日期范围内;链接到受信任的证书颁发机构 (CA);其 hostname 或 IP 地址与证书中的名称匹配。
certificate
验证提供的证书并验证它是否由受信任的颁发机构 (CA) 签名,但不检查证书 hostname
none

不执行证书验证。

将证书验证设置为 none 会禁用 SSL/TLS 的许多安全优势,这非常危险。仅当 Elastic 支持人员指示您将其作为临时诊断机制用于解决 TLS 错误时,才设置此值。

默认为 full

ssl.supported_protocols logo cloud

(静态) 支持的协议及其版本。有效协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。如果 JVM 的 SSL 提供程序支持 TLSv1.3,则默认为 TLSv1.3,TLSv1.2,TLSv1.1。否则,默认为 TLSv1.2,TLSv1.1

Elasticsearch 依赖于您的 JDK 的 SSL 和 TLS 实现。查看 JDK 版本支持的 SSL/TLS 版本 以获取更多信息。

如果 xpack.security.fips_mode.enabledtrue,则无法使用 SSLv2HelloSSLv3。请参阅 FIPS 140-2

ssl.cipher_suites logo cloud

(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为 TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256TLS_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA

有关更多信息,请参阅 Oracle 的 Java 密码体系结构文档

JWT 领域设置
编辑

除了 对所有领域有效的设置 之外,您还可以指定以下设置。

token_type logo cloud
(静态) JWT 领域用于验证传入 JWT 的令牌类型,id_tokenaccess_token。默认为 id_token
allowed_audiences logo cloud
(静态) Elasticsearch 应验证的允许的 JWT 受众列表。Elasticsearch 将仅使用针对这些受众中的任何一个(如 JWT 中的 aud 声明所示)的 JWT。受众与精确字符串匹配进行比较,不支持通配符或正则表达式。 aud 声明的示例为 https://example.com/client1other_service,elasticsearch。当 token_typeaccess_token 时,如果不存在 aud,则 JWT 中的另一个声明可以选择性地表示受众。另请参见 fallback_claims.aud
allowed_clock_skew logo cloud
(静态) 验证 JWT 时,在考虑其创建、不可早于和过期时间时,允许的最大时钟偏差。
allowed_issuer logo cloud
(静态) JWT 发行者的可验证标识符。发行者标识符通常是使用 https 方案区分大小写的 URL,其中包含方案、主机以及可选的端口号和路径组件,不包含查询或片段组件。但是,它可以是任何字符串。此设置的值应由 JWT 发行者提供。发行者与精确字符串匹配进行比较,不支持通配符或正则表达式。 iss 声明的示例为 https://example.com:8443/jwtissuer123
allowed_subjects logo cloud
(静态) Elasticsearch 应验证的允许的 JWT 主题列表。Elasticsearch 将仅使用为这些主题中的任何一个(如 JWT 中的 sub 声明所示)发行的 JWT。主题与精确字符串匹配进行比较,不支持通配符或正则表达式。 sub 声明的示例为 https://example.com/user1user_1,user2。当 token_typeaccess_token 时,此设置是必需的,如果不存在 sub,则 JWT 中的另一个声明可以选择性地表示主题。另请参见 fallback_claims.sub
fallback_claims.sub logo cloud
(静态) 如果不存在 sub 声明,则查找主题信息的备用声明。仅当 token_typeaccess_token 时,才能对其进行配置。回退应用于使用 sub 声明的所有位置。
fallback_claims.aud logo cloud
(静态) 如果 aud 声明不存在,则查找用户身份信息备用声明。仅当 token_typeaccess_token 时可配置。回退应用于所有使用 aud 声明的地方。
required_claims logo cloud
(静态) Elasticsearch 应验证的其他声明及其关联值。这是一个采用键值对的组设置,其中键为字符串,值必须为字符串或字符串数组。这些值与精确的字符串匹配进行比较,不支持通配符或正则表达式。

例如

xpack.security.authc.realms.jwt.jwt1:
  required_claims:
    token_use: "id"
    versions: ["1.0", "2.0"]
allowed_signature_algorithms logo cloud
(静态) Elasticsearch 将用于验证从 JWT Issuer 接收到的 JWT 签名的签名算法列表。默认为 RS256。例如 HS512,RS512,ES512ES384。允许的值为 HS256HS384HS512ES256ES384ES512RS256RS384RS512PS256PS384PS512
authorization_realms
(静态) 应查询以进行委托授权的领域的名称。如果使用此设置,则 JWT 领域不执行角色映射,而是从列出的领域加载用户。请参阅 将授权委托给另一个领域
claims.dn logo cloud
(静态) 包含用户可分辨名称 (DN) 的 JWT 声明的名称,该名称唯一标识用户或组。
claim_patterns.dn logo cloud
(静态) 接受与 claim_patterns.principal 相同的 Java 正则表达式,但用于 dn 属性。
claims.groups logo cloud
(静态) 包含用户组的 JWT 声明的名称,例如 groupsroles
claim_patterns.group logo cloud
(静态) 接受与 claim_patterns.principal 相同的 Java 正则表达式,但用于 group 属性。
claims.mail logo cloud
(静态) 包含用户电子邮件地址的 JWT 声明的名称。
claim_patterns.mail logo cloud
(静态) 接受与 claim_patterns.principal 相同的 Java 正则表达式,但用于 mail 属性。
claims.name logo cloud
(静态) 包含用户用户名(user name)的 JWT 声明的名称。
claim_patterns.name logo cloud
(静态) 接受与 claim_patterns.principal 相同的 Java 正则表达式,但用于 name 属性。
claims.principal
(静态) 包含用户主体(用户名)的 JWT 声明的名称,例如 subnameemaildn
claim_patterns.principal logo cloud
(静态) 一个可选的 Java 正则表达式,在将其应用于用户的 principal 属性之前,会将其与 claims.principal 指定的 JWT 声明进行匹配。该值必须与模式匹配,并且第一个捕获组的值用作主体。例如,^([^@]+)@example\\.com$ 匹配来自 example.com 域的电子邮件地址,并将本地部分用作主体。另一个示例是 sub,它可能不需要模式设置。
client_authentication.type logo cloud

(静态) 指定是使用 shared_secret 还是 none 来验证传入的客户端请求。如果此值为 shared_secret,则使用必须与预配置的密钥值匹配的 HTTP 请求标头对客户端进行身份验证。客户端必须在 ES-Client-Authentication 标头中提供每个请求的此共享密钥。如果此值为 none,则忽略请求标头 ES-Client-Authentication。默认为 shared_secret

建议启用客户端身份验证。如果 JWT 持有者令牌与其他客户端或服务共享,则客户端身份验证会限制允许哪些客户端或服务将这些 JWT 提交到 Elasticsearch。

client_authentication.shared_secret logo cloud
(安全可重新加载) 客户端身份验证的密钥值字符串。如果 client_authentication.typeshared_secret,则需要此值。
client_authentication.rotation_grace_period
(静态) 设置旋转 client_authentication.shared_secret 后有效的宽限期。可以通过更新密钥库,然后调用 重新加载 API 来旋转 client_authentication.shared_secret。默认为 1m
http.connect_timeout logo cloud
(静态) 设置用于从远程 URL 获取 JSON Web 密钥集的 HTTP 客户端的超时时间。值为零表示不使用超时。默认为 5s
http.connection_read_timeout logo cloud
(静态) 指定从连接管理器请求连接时使用的 HTTP 超时时间。默认为 5s
http.socket_timeout logo cloud
(静态) 指定 HTTP 客户端在两个连续数据包之间等待空闲的最大套接字超时时间 (SO_TIMEOUT)。默认为 5s
http.max_connections logo cloud
(静态) 指定所有端点允许的最大连接数。
http.max_endpoint_connections logo cloud
(静态) 指定每个端点允许的最大连接数。
jwt.cache.size
(静态) 指定 JWT 缓存条目的最大数量。如果客户端对每个请求使用不同的 JWT,则将其设置为 0 以禁用 JWT 缓存。默认为 100000
jwt.cache.ttl
(静态) 指定缓存 JWT 条目的生存时间。只有在客户端身份验证成功(或禁用)时才能缓存 JWT。使用标准 Elasticsearch 时间单位。如果客户端对每个请求使用不同的 JWT,则将其设置为 0 以禁用 JWT 缓存。默认为 20m
pkc_jwkset_path logo cloud
(静态) 包含 JWT 领域用于验证令牌签名的公钥材料的 JSON Web 密钥集 (JWKS) 的文件名或 URL。如果值不以 https 开头,则将其视为文件名。文件名相对于 Elasticsearch 配置目录解析。如果提供了 URL,则它必须以 https:// 开头(不支持 http://)。Elasticsearch 自动缓存 JWK 集,并在签名验证失败时尝试刷新 JWK 集,因为这可能表示 JWT 提供程序已轮换签名密钥。
hmac_jwkset logo cloud
(安全) JSON Web 密钥集 (JWKS) 的内容,包括 JWT 领域用于验证令牌签名的密钥。此格式支持多个密钥和可选属性,并且优于 hmac_key 设置。不能与 hmac_key 设置一起使用。请参阅 配置 Elasticsearch 以使用 JWT 领域
hmac_key logo cloud
(安全) 单个 JSON Web 密钥 (JWK) 的内容,包括 JWT 领域用于验证令牌签名的密钥。此格式仅支持不带属性的单个密钥,不能与 hmac_jwkset 设置一起使用。此格式与 OIDC 兼容。HMAC 密钥必须是 UNICODE 字符串,其中密钥字节是 UNICODE 字符串的 UTF-8 编码。hmac_jwkset 设置是首选。请参阅 配置 Elasticsearch 以使用 JWT 领域
populate_user_metadata logo cloud
(静态) 指定是否使用 JWT 声明提供的值填充 Elasticsearch 用户的元数据。默认为 true

JWT 领域 SSL 设置
编辑

以下设置可用于配置从远程 URL 获取 JSON Web 密钥集的 SSL。

这些设置**仅**用于 Elasticsearch 和 JWT 发行者之间的后端通信。

ssl.key logo cloud

(静态) 包含私钥的 PEM 编码文件的路径。

如果需要 HTTP 客户端身份验证,则使用此文件。您不能同时使用此设置和 ssl.keystore.path

ssl.key_passphrase logo cloud

(静态) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.secure_key_passphrase

您不能同时使用此设置和 ssl.secure_key_passphrase

ssl.secure_key_passphrase

(安全) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。

您不能同时使用此设置和 ssl.key_passphrase

ssl.certificate logo cloud

(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。

仅当设置了 ssl.key 时才能使用此设置。

ssl.certificate_authorities logo cloud

(静态) 应信任的 PEM 编码证书文件的路径列表。

此设置和 ssl.truststore.path 不能同时使用。

ssl.keystore.path logo cloud

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

ssl.keystore.type logo cloud
(静态) 密钥库文件的格式。它必须是 jksPKCS12。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为 PKCS12。否则,默认为 jks
ssl.keystore.password logo cloud
(静态) 密钥库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_password
ssl.keystore.secure_password

(安全) 密钥库的密码。

您不能同时使用此设置和 ssl.keystore.password

ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_key_password

您不能同时使用此设置和 ssl.keystore.secure_password

您不能同时使用此设置和 ssl.keystore.secure_key_password

ssl.keystore.secure_key_password

安全)密钥库中密钥的密码。默认为密钥库密码。

您不能同时使用此设置和 ssl.keystore.key_password

ssl.truststore.path logo cloud

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

ssl.truststore.type logo cloud
(静态) 信任库文件的格式。它必须是 jksPKCS12。如果文件名以“.p12”、“.pfx”或“pkcs12”结尾,则默认为 PKCS12。否则,默认为 jks
ssl.truststore.password logo cloud

(静态) 信任库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.truststore.secure_password

您不能同时使用此设置和 ssl.truststore.secure_password

ssl.truststore.secure_password

(安全) 信任库的密码。

您不能同时使用此设置和 ssl.truststore.password

ssl.verification_mode logo cloud

(静态) 控制证书的验证。

有效值
full
验证提供的证书:其发行日期在 not_beforenot_after 日期范围内;链接到受信任的证书颁发机构 (CA);其 hostname 或 IP 地址与证书中的名称匹配。
certificate
验证提供的证书并验证它是否由受信任的颁发机构 (CA) 签名,但不检查证书 hostname
none

不执行证书验证。

将证书验证设置为 none 会禁用 SSL/TLS 的许多安全优势,这非常危险。仅当 Elastic 支持人员指示您将其作为临时诊断机制用于解决 TLS 错误时,才设置此值。

默认为 full

ssl.supported_protocols logo cloud

(静态) 支持的协议及其版本。有效协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。如果 JVM 的 SSL 提供程序支持 TLSv1.3,则默认为 TLSv1.3,TLSv1.2,TLSv1.1。否则,默认为 TLSv1.2,TLSv1.1

Elasticsearch 依赖于您的 JDK 的 SSL 和 TLS 实现。查看 JDK 版本支持的 SSL/TLS 版本 以获取更多信息。

如果 xpack.security.fips_mode.enabledtrue,则无法使用 SSLv2HelloSSLv3。请参阅 FIPS 140-2

ssl.cipher_suites logo cloud

(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为 TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256TLS_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA

有关更多信息,请参阅 Oracle 的 Java 密码体系结构文档

负载均衡和故障转移
编辑

静态 load_balance.type 设置可以具有以下值

  • failover:按指定的顺序使用指定的 URL。将使用第一个可以连接到的服务器进行所有后续连接。如果与该服务器的连接失败,则将使用可以建立连接的下一个服务器进行后续连接。
  • dns_failover:在此操作模式下,只能指定一个 URL。此 URL 必须包含 DNS 名称。系统将查询与此 DNS 名称对应的所有 IP 地址。到 Active Directory 或 LDAP 服务器的连接将始终按检索到的顺序尝试。这与 failover 不同,因为列表没有重新排序,并且如果列表开头的服务器已失败,它仍将针对每个后续连接进行尝试。
  • round_robin:连接将连续遍历提供的 URL 列表。如果服务器不可用,则将继续遍历 URL 列表,直到建立成功的连接。
  • dns_round_robin:在此操作模式下,只能指定一个 URL。此 URL 必须包含 DNS 名称。系统将查询与此 DNS 名称对应的所有 IP 地址。连接将连续遍历地址列表。如果服务器不可用,则将继续遍历 URL 列表,直到建立成功的连接。

通用 TLS 设置

编辑
xpack.security.ssl.diagnose.trust
(静态)控制是否输出 SSL/TLS 信任失败的诊断消息。如果设置为 true(默认值),则每当由于无法建立信任而拒绝 SSL 连接(传入或传出)时,都会将消息打印到 Elasticsearch 日志。此诊断消息包含可用于确定失败原因并帮助解决问题的信息。设置为 false 以禁用这些消息。
TLS/SSL 密钥和受信任证书设置
编辑

以下设置用于指定在通过 SSL/TLS 连接进行通信时应使用的私钥、证书和受信任证书。如果未配置受信任证书,则 JVM 信任的默认证书以及与同一上下文中的密钥关联的证书将被信任。对于需要客户端身份验证或充当启用 SSL 的服务器的连接,密钥和证书必须到位。

尽管受支持,但在实践中,将受信任证书存储在 PKCS#12 文件中并不常见。 elasticsearch-certutil 工具 以及 Java 的 keytool 旨在生成可同时用作密钥库和信任库的 PKCS#12 文件,但这对于使用其他工具创建的容器文件可能并非如此。通常,PKCS#12 文件仅包含秘密和私有条目。要确认 PKCS#12 容器是否包含受信任证书(“锚”)条目,请在 openssl pkcs12 -info 输出中查找 2.16.840.1.113894.746875.1.1: <Unsupported tag 6>,或在 keytool -list 输出中查找 trustedCertEntry

HTTP TLS/SSL 设置

编辑

您可以配置以下 TLS/SSL 设置。

xpack.security.http.ssl.enabled
(静态)用于启用或禁用 HTTP 网络层上的 TLS/SSL,Elasticsearch 使用它与其他客户端通信。默认值为 false
xpack.security.http.ssl.supported_protocols

(静态) 支持的协议及其版本。有效协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。如果 JVM 的 SSL 提供程序支持 TLSv1.3,则默认为 TLSv1.3,TLSv1.2,TLSv1.1。否则,默认为 TLSv1.2,TLSv1.1

Elasticsearch 依赖于您的 JDK 的 SSL 和 TLS 实现。查看 JDK 版本支持的 SSL/TLS 版本 以获取更多信息。

如果 xpack.security.fips_mode.enabledtrue,则无法使用 SSLv2HelloSSLv3。请参阅 FIPS 140-2

xpack.security.http.ssl.client_authentication
(静态)控制服务器在请求客户端连接证书方面的行为。有效值为 requiredoptionalnonerequired 强制客户端提供证书,而 optional 请求客户端证书,但不要求客户端提供。默认为 none
xpack.security.http.ssl.verification_mode

(静态)xpack.security.http.ssl 中的 SSL 设置控制 TLS 的**服务器上下文**,该上下文定义 TLS 连接的设置。不建议在 TLS **服务器**中使用 verification_mode。定义如何在 TLS 连接中验证另一方提供的证书

有效值
full
验证提供的证书:其发行日期在 not_beforenot_after 日期范围内;链接到受信任的证书颁发机构 (CA);其 hostname 或 IP 地址与证书中的名称匹配。
certificate
验证提供的证书并验证它是否由受信任的颁发机构 (CA) 签名,但不检查证书 hostname
none

不执行证书验证。

将证书验证设置为 none 会禁用 SSL/TLS 的许多安全优势,这非常危险。仅当 Elastic 支持人员指示您将其作为临时诊断机制用于解决 TLS 错误时,才设置此值。

默认为 full

xpack.security.http.ssl.cipher_suites

(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为 TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256TLS_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA

有关更多信息,请参阅 Oracle 的 Java 密码体系结构文档

HTTP TLS/SSL 密钥和受信任证书设置

编辑

以下设置用于指定在通过 SSL/TLS 连接进行通信时应使用的私钥、证书和受信任证书。必须配置私钥和证书。

PEM 编码文件

编辑

使用 PEM 编码文件时,请使用以下设置

xpack.security.http.ssl.key

(静态) 包含私钥的 PEM 编码文件的路径。

如果需要 HTTP 客户端身份验证,则使用此文件。您不能同时使用此设置和 ssl.keystore.path

xpack.security.http.ssl.key_passphrase

(静态) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.secure_key_passphrase

您不能同时使用此设置和 ssl.secure_key_passphrase

xpack.security.http.ssl.secure_key_passphrase
(安全) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。
xpack.security.http.ssl.certificate

(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。

仅当设置了 ssl.key 时才能使用此设置。

xpack.security.http.ssl.certificate_authorities

(静态) 应信任的 PEM 编码证书文件的路径列表。

此设置和 ssl.truststore.path 不能同时使用。

Java 密钥库文件

编辑

使用 Java 密钥库文件 (JKS) 时,其中包含私钥、证书和应信任的证书,请使用以下设置

xpack.security.http.ssl.keystore.path

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

xpack.security.http.ssl.keystore.password
(静态) 密钥库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_password
xpack.security.http.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.http.ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_key_password

您不能同时使用此设置和 ssl.keystore.secure_password

xpack.security.http.ssl.keystore.secure_key_password
安全)密钥库中密钥的密码。默认为密钥库密码。
xpack.security.http.ssl.truststore.path

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

xpack.security.http.ssl.truststore.password

(静态) 信任库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.truststore.secure_password

您不能同时使用此设置和 ssl.truststore.secure_password

xpack.security.http.ssl.truststore.secure_password
(安全) 信任库的密码。

PKCS#12 文件

编辑

Elasticsearch 可以配置为使用包含私钥、证书和应信任证书的 PKCS#12 容器文件(.p12.pfx 文件)。

PKCS#12 文件的配置方式与 Java 密钥库文件相同

xpack.security.http.ssl.keystore.path

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

xpack.security.http.ssl.keystore.type
(静态) 密钥库文件的格式。它必须是 jksPKCS12。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为 PKCS12。否则,默认为 jks
xpack.security.http.ssl.keystore.password
(静态) 密钥库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_password
xpack.security.http.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.http.ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_key_password

您不能同时使用此设置和 ssl.keystore.secure_password

xpack.security.http.ssl.keystore.secure_key_password
安全)密钥库中密钥的密码。默认为密钥库密码。
xpack.security.http.ssl.truststore.path

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

xpack.security.http.ssl.truststore.type
(静态)将其设置为 PKCS12 以指示信任库是 PKCS#12 文件。
xpack.security.http.ssl.truststore.password

(静态) 信任库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.truststore.secure_password

您不能同时使用此设置和 ssl.truststore.secure_password

xpack.security.http.ssl.truststore.secure_password
(安全) 信任库的密码。

传输 TLS/SSL 设置

编辑

您可以配置以下 TLS/SSL 设置。

xpack.security.transport.ssl.enabled
(静态)用于启用或禁用传输网络层上的 TLS/SSL,节点使用它相互通信。默认值为 false
xpack.security.transport.ssl.supported_protocols

(静态) 支持的协议及其版本。有效协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。如果 JVM 的 SSL 提供程序支持 TLSv1.3,则默认为 TLSv1.3,TLSv1.2,TLSv1.1。否则,默认为 TLSv1.2,TLSv1.1

Elasticsearch 依赖于您的 JDK 的 SSL 和 TLS 实现。查看 JDK 版本支持的 SSL/TLS 版本 以获取更多信息。

如果 xpack.security.fips_mode.enabledtrue,则无法使用 SSLv2HelloSSLv3。请参阅 FIPS 140-2

xpack.security.transport.ssl.client_authentication
(静态)控制服务器在请求客户端连接证书方面的行为。有效值为 requiredoptionalnonerequired 强制客户端提供证书,而 optional 请求客户端证书,但不要求客户端提供。默认为 required
xpack.security.transport.ssl.verification_mode

(静态)定义如何在 TLS 连接中验证另一方提供的证书

有效值
full
验证提供的证书:其发行日期在 not_beforenot_after 日期范围内;链接到受信任的证书颁发机构 (CA);其 hostname 或 IP 地址与证书中的名称匹配。
certificate
验证提供的证书并验证它是否由受信任的颁发机构 (CA) 签名,但不检查证书 hostname
none

不执行证书验证。

将证书验证设置为 none 会禁用 SSL/TLS 的许多安全优势,这非常危险。仅当 Elastic 支持人员指示您将其作为临时诊断机制用于解决 TLS 错误时,才设置此值。

默认为 full

xpack.security.transport.ssl.cipher_suites

(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为 TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256TLS_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA

有关更多信息,请参阅 Oracle 的 Java 密码体系结构文档

传输 TLS/SSL 密钥和受信任证书设置

编辑

以下设置用于指定在通过 SSL/TLS 连接进行通信时应使用的私钥、证书和受信任证书。必须配置私钥和证书。

PEM 编码文件

编辑

使用 PEM 编码文件时,请使用以下设置

xpack.security.transport.ssl.key

(静态) 包含私钥的 PEM 编码文件的路径。

如果需要 HTTP 客户端身份验证,则使用此文件。您不能同时使用此设置和 ssl.keystore.path

xpack.security.transport.ssl.key_passphrase

(静态) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.secure_key_passphrase

您不能同时使用此设置和 ssl.secure_key_passphrase

xpack.security.transport.ssl.secure_key_passphrase
(安全) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。
xpack.security.transport.ssl.certificate

(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。

仅当设置了 ssl.key 时才能使用此设置。

xpack.security.transport.ssl.certificate_authorities

(静态) 应信任的 PEM 编码证书文件的路径列表。

此设置和 ssl.truststore.path 不能同时使用。

Java 密钥库文件

编辑

使用 Java 密钥库文件 (JKS) 时,其中包含私钥、证书和应信任的证书,请使用以下设置

xpack.security.transport.ssl.keystore.path

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

xpack.security.transport.ssl.keystore.password
(静态) 密钥库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_password
xpack.security.transport.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.transport.ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_key_password

您不能同时使用此设置和 ssl.keystore.secure_password

xpack.security.transport.ssl.keystore.secure_key_password
安全)密钥库中密钥的密码。默认为密钥库密码。
xpack.security.transport.ssl.truststore.path

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

xpack.security.transport.ssl.truststore.password

(静态) 信任库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.truststore.secure_password

您不能同时使用此设置和 ssl.truststore.secure_password

xpack.security.transport.ssl.truststore.secure_password
(安全) 信任库的密码。

PKCS#12 文件

编辑

Elasticsearch 可以配置为使用包含私钥、证书和应信任证书的 PKCS#12 容器文件(.p12.pfx 文件)。

PKCS#12 文件的配置方式与 Java 密钥库文件相同

xpack.security.transport.ssl.keystore.path

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

xpack.security.transport.ssl.keystore.type
(静态) 密钥库文件的格式。它必须是 jksPKCS12。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为 PKCS12。否则,默认为 jks
xpack.security.transport.ssl.keystore.password
(静态) 密钥库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_password
xpack.security.transport.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.transport.ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.keystore.secure_key_password

您不能同时使用此设置和 ssl.keystore.secure_password

xpack.security.transport.ssl.keystore.secure_key_password
安全)密钥库中密钥的密码。默认为密钥库密码。
xpack.security.transport.ssl.truststore.path

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

xpack.security.transport.ssl.truststore.type
(静态)将其设置为 PKCS12 以指示信任库是 PKCS#12 文件。
xpack.security.transport.ssl.truststore.password

(静态) 信任库的密码。 [7.17.0] 已在 7.17.0 中弃用。 请改用 ssl.truststore.secure_password

您不能同时使用此设置和 ssl.truststore.secure_password

xpack.security.transport.ssl.truststore.secure_password
(安全) 信任库的密码。

远程集群服务器(基于 API 密钥的模型)TLS/SSL 设置

编辑

您可以配置以下 TLS/SSL 设置。

xpack.security.remote_cluster_server.ssl.enabled
(静态)用于启用或禁用远程集群服务器网络层上的 TLS/SSL,Elasticsearch 使用它与远程集群客户端通信。默认值为 true
xpack.security.remote_cluster_server.ssl.supported_protocols

(静态) 支持的协议及其版本。有效协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。如果 JVM 的 SSL 提供程序支持 TLSv1.3,则默认为 TLSv1.3,TLSv1.2,TLSv1.1。否则,默认为 TLSv1.2,TLSv1.1

Elasticsearch 依赖于您的 JDK 的 SSL 和 TLS 实现。查看 JDK 版本支持的 SSL/TLS 版本 以获取更多信息。

如果 xpack.security.fips_mode.enabledtrue,则无法使用 SSLv2HelloSSLv3。请参阅 FIPS 140-2

xpack.security.remote_cluster_server.ssl.client_authentication
(静态)控制服务器在请求客户端连接证书方面的行为。有效值为 requiredoptionalnonerequired 强制客户端提供证书,而 optional 请求客户端证书,但不要求客户端提供。默认为 none
xpack.security.remote_cluster_server.ssl.verification_mode

(静态)xpack.security.remote_cluster_server.ssl 中的 SSL 设置控制 TLS 的**服务器上下文**,该上下文定义 TLS 连接的设置。不建议在 TLS **服务器**中使用 verification_mode。定义如何在 TLS 连接中验证另一方提供的证书

有效值
full
验证提供的证书:其发行日期在 not_beforenot_after 日期范围内;链接到受信任的证书颁发机构 (CA);其 hostname 或 IP 地址与证书中的名称匹配。
certificate
验证提供的证书并验证它是否由受信任的颁发机构 (CA) 签名,但不检查证书 hostname
none

不执行证书验证。

将证书验证设置为 none 会禁用 SSL/TLS 的许多安全优势,这非常危险。仅当 Elastic 支持人员指示您将其作为临时诊断机制用于解决 TLS 错误时,才设置此值。

默认为 full

xpack.security.remote_cluster_server.ssl.cipher_suites

(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为 TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256TLS_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA

有关更多信息,请参阅 Oracle 的 Java 密码体系结构文档

远程集群服务器(基于 API 密钥的模型)TLS/SSL 密钥和受信任证书设置

编辑

以下设置用于指定在通过 SSL/TLS 连接进行通信时应使用的私钥、证书和受信任证书。必须配置私钥和证书。

PEM 编码文件

编辑

使用 PEM 编码文件时,请使用以下设置

xpack.security.remote_cluster_server.ssl.key

(静态) 包含私钥的 PEM 编码文件的路径。

如果需要 HTTP 客户端身份验证,则使用此文件。您不能同时使用此设置和 ssl.keystore.path

xpack.security.remote_cluster_server.ssl.secure_key_passphrase
(安全) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。
xpack.security.remote_cluster_server.ssl.certificate

(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。

仅当设置了 ssl.key 时才能使用此设置。

xpack.security.remote_cluster_server.ssl.certificate_authorities

(静态) 应信任的 PEM 编码证书文件的路径列表。

此设置和 ssl.truststore.path 不能同时使用。

Java 密钥库文件

编辑

使用 Java 密钥库文件 (JKS) 时,其中包含私钥、证书和应信任的证书,请使用以下设置

xpack.security.remote_cluster_server.ssl.keystore.path

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

xpack.security.remote_cluster_server.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.remote_cluster_server.ssl.keystore.secure_key_password
安全)密钥库中密钥的密码。默认为密钥库密码。
xpack.security.remote_cluster_server.ssl.truststore.path

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

xpack.security.remote_cluster_server.ssl.truststore.secure_password
(安全) 信任库的密码。

PKCS#12 文件

编辑

Elasticsearch 可以配置为使用包含私钥、证书和应信任证书的 PKCS#12 容器文件(.p12.pfx 文件)。

PKCS#12 文件的配置方式与 Java 密钥库文件相同

xpack.security.remote_cluster_server.ssl.keystore.path

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

xpack.security.remote_cluster_server.ssl.keystore.type
(静态) 密钥库文件的格式。它必须是 jksPKCS12。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为 PKCS12。否则,默认为 jks
xpack.security.remote_cluster_server.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.remote_cluster_server.ssl.keystore.secure_key_password
安全)密钥库中密钥的密码。默认为密钥库密码。
xpack.security.remote_cluster_server.ssl.truststore.path

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

xpack.security.remote_cluster_server.ssl.truststore.type
(静态)将其设置为 PKCS12 以指示信任库是 PKCS#12 文件。
xpack.security.remote_cluster_server.ssl.truststore.secure_password
(安全) 信任库的密码。

远程集群客户端(基于 API 密钥的模型)TLS/SSL 设置

编辑

您可以配置以下 TLS/SSL 设置。

xpack.security.remote_cluster_client.ssl.enabled

(静态) 用于启用或禁用远程集群客户端网络层的 TLS/SSL,Elasticsearch 使用它与远程集群服务器通信。默认值为 true
xpack.security.remote_cluster_client.ssl.supported_protocols

(静态) 支持的协议及其版本。有效协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。如果 JVM 的 SSL 提供程序支持 TLSv1.3,则默认为 TLSv1.3,TLSv1.2,TLSv1.1。否则,默认为 TLSv1.2,TLSv1.1

Elasticsearch 依赖于您的 JDK 的 SSL 和 TLS 实现。查看 JDK 版本支持的 SSL/TLS 版本 以获取更多信息。

如果 xpack.security.fips_mode.enabledtrue,则无法使用 SSLv2HelloSSLv3。请参阅 FIPS 140-2

xpack.security.remote_cluster_client.ssl.verification_mode

(静态)定义如何在 TLS 连接中验证另一方提供的证书

有效值
full
验证提供的证书:其发行日期在 not_beforenot_after 日期范围内;链接到受信任的证书颁发机构 (CA);其 hostname 或 IP 地址与证书中的名称匹配。
certificate
验证提供的证书并验证它是否由受信任的颁发机构 (CA) 签名,但不检查证书 hostname
none

不执行证书验证。

将证书验证设置为 none 会禁用 SSL/TLS 的许多安全优势,这非常危险。仅当 Elastic 支持人员指示您将其作为临时诊断机制用于解决 TLS 错误时,才设置此值。

默认为 full

xpack.security.remote_cluster_client.ssl.cipher_suites

(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为 TLS_AES_256_GCM_SHA384TLS_AES_128_GCM_SHA256TLS_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA

有关更多信息,请参阅 Oracle 的 Java 密码体系结构文档

远程集群客户端(基于 API 密钥的模型)TLS/SSL 密钥和受信任证书设置

编辑

以下设置用于指定私钥、证书和在通过 SSL/TLS 连接通信时应使用的受信任证书。私钥和证书是可选的,如果服务器需要客户端身份验证进行 PKI 身份验证,则可以使用它们。

PEM 编码文件

编辑

使用 PEM 编码文件时,请使用以下设置

xpack.security.remote_cluster_client.ssl.key

(静态) 包含私钥的 PEM 编码文件的路径。

如果需要 HTTP 客户端身份验证,则使用此文件。您不能同时使用此设置和 ssl.keystore.path

xpack.security.remote_cluster_client.ssl.secure_key_passphrase
(安全) 用于解密私钥的密码短语。由于密钥可能未加密,因此此值是可选的。
xpack.security.remote_cluster_client.ssl.certificate

(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。

仅当设置了 ssl.key 时才能使用此设置。

xpack.security.remote_cluster_client.ssl.certificate_authorities

(静态) 应信任的 PEM 编码证书文件的路径列表。

此设置和 ssl.truststore.path 不能同时使用。

Java 密钥库文件

编辑

使用 Java 密钥库文件 (JKS) 时,其中包含私钥、证书和应信任的证书,请使用以下设置

xpack.security.remote_cluster_client.ssl.keystore.path

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

xpack.security.remote_cluster_client.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.remote_cluster_client.ssl.keystore.secure_key_password
安全)密钥库中密钥的密码。默认为密钥库密码。
xpack.security.remote_cluster_client.ssl.truststore.path

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

xpack.security.remote_cluster_client.ssl.truststore.secure_password
(安全) 信任库的密码。

PKCS#12 文件

编辑

Elasticsearch 可以配置为使用包含私钥、证书和应信任证书的 PKCS#12 容器文件(.p12.pfx 文件)。

PKCS#12 文件的配置方式与 Java 密钥库文件相同

xpack.security.remote_cluster_client.ssl.keystore.path

(静态) 包含私钥和证书的密钥库文件的路径。

它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。您不能同时使用此设置和 ssl.key

xpack.security.remote_cluster_client.ssl.keystore.type
(静态) 密钥库文件的格式。它必须是 jksPKCS12。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为 PKCS12。否则,默认为 jks
xpack.security.remote_cluster_client.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.remote_cluster_client.ssl.keystore.secure_key_password
安全)密钥库中密钥的密码。默认为密钥库密码。
xpack.security.remote_cluster_client.ssl.truststore.path

(静态) 包含要信任的证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。

您不能同时使用此设置和 ssl.certificate_authorities

xpack.security.remote_cluster_client.ssl.truststore.type
(静态)将其设置为 PKCS12 以指示信任库是 PKCS#12 文件。
xpack.security.remote_cluster_client.ssl.truststore.secure_password
(安全) 信任库的密码。
传输配置文件 TLS/SSL 设置
编辑

默认传输 可用的相同设置也适用于每个传输配置文件。默认情况下,传输配置文件的设置将与默认传输相同,除非它们被指定。

例如,让我们看一下密钥设置。对于默认传输,它是 xpack.security.transport.ssl.key。为了在传输配置文件中使用此设置,请使用前缀 transport.profiles.$PROFILE.xpack.security. 并追加 xpack.security.transport. 之后设置的部分。对于密钥设置,这将是 transport.profiles.$PROFILE.xpack.security.ssl.key

IP 过滤设置

编辑

您可以为 IP 过滤 配置以下设置。

xpack.security.transport.filter.allow
(动态) 要允许的 IP 地址列表。
xpack.security.transport.filter.deny
(动态) 要拒绝的 IP 地址列表。
xpack.security.http.filter.allow
(动态) 仅允许 HTTP 使用的 IP 地址列表。
xpack.security.http.filter.deny
(动态) 仅拒绝 HTTP 使用的 IP 地址列表。
transport.profiles.$PROFILE.xpack.security.filter.allow
(动态) 要允许此配置文件使用的 IP 地址列表。
transport.profiles.$PROFILE.xpack.security.filter.deny
(动态) 要拒绝此配置文件使用的 IP 地址列表。
xpack.security.remote_cluster.filter.allow
(动态) 仅允许 使用基于 API 密钥的模型配置的远程集群服务器 使用的 IP 地址列表。
xpack.security.remote_cluster.filter.deny
(动态) 仅拒绝 使用基于 API 密钥的模型配置的远程集群服务器 使用的 IP 地址列表。

用户缓存和密码哈希算法

编辑

某些领域在内存中存储用户凭据。为了限制对凭据盗窃的暴露并减轻凭据泄露的影响,缓存仅在内存中存储用户凭据的哈希版本。默认情况下,用户缓存使用带盐的 sha-256 哈希算法进行哈希。您可以通过将 静态 cache.hash_algo 领域设置更改为以下任何值来使用不同的哈希算法

表 1. 缓存哈希算法

算法

描述

ssha256

使用带盐的 sha-256 算法(默认值)。

md5

使用 MD5 算法。

sha1

使用 SHA1 算法。

bcrypt

使用 bcrypt 算法,盐在 1024 轮中生成。

bcrypt4

使用 bcrypt 算法,盐在 16 轮中生成。

bcrypt5

使用 bcrypt 算法,盐在 32 轮中生成。

bcrypt6

使用 bcrypt 算法,盐在 64 轮中生成。

bcrypt7

使用 bcrypt 算法,盐在 128 轮中生成。

bcrypt8

使用 bcrypt 算法,盐在 256 轮中生成。

bcrypt9

使用 bcrypt 算法,盐在 512 轮中生成。

pbkdf2

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 10000 次迭代。

pbkdf2_1000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 1000 次迭代。

pbkdf2_10000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 10000 次迭代。

pbkdf2_50000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 50000 次迭代。

pbkdf2_100000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 100000 次迭代。

pbkdf2_500000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 500000 次迭代。

pbkdf2_1000000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 1000000 次迭代。

pbkdf2_stretch

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 10000 次迭代。

pbkdf2_stretch_1000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 1000 次迭代。

pbkdf2_stretch_10000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 10000 次迭代。

pbkdf2_stretch_50000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 50000 次迭代。

pbkdf2_stretch_100000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 100000 次迭代。

pbkdf2_stretch_500000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 500000 次迭代。

pbkdf2_stretch_1000000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 1000000 次迭代。

noop,clear_text

不哈希凭据,并将其以明文形式保存在内存中。注意:保留明文被认为是不安全的,并且可以在操作系统级别受到攻击(例如,通过内存转储和使用 ptrace)。

同样,存储密码的领域使用密码学上强大的且特定于密码的盐值对它们进行哈希处理。您可以通过将 静态 xpack.security.authc.password_hashing.algorithm 设置更改为以下之一来配置密码哈希的算法

表 2. 密码哈希算法

算法 描述

bcrypt

使用 bcrypt 算法,盐在 1024 轮中生成。(默认值)

bcrypt4

使用 bcrypt 算法,盐在 16 轮中生成。

bcrypt5

使用 bcrypt 算法,盐在 32 轮中生成。

bcrypt6

使用 bcrypt 算法,盐在 64 轮中生成。

bcrypt7

使用 bcrypt 算法,盐在 128 轮中生成。

bcrypt8

使用 bcrypt 算法,盐在 256 轮中生成。

bcrypt9

使用 bcrypt 算法,盐在 512 轮中生成。

bcrypt10

使用 bcrypt 算法,盐在 1024 轮中生成。

bcrypt11

使用 bcrypt 算法,盐在 2048 轮中生成。

bcrypt12

使用 bcrypt 算法,盐在 4096 轮中生成。

bcrypt13

使用 bcrypt 算法,盐在 8192 轮中生成。

bcrypt14

使用 bcrypt 算法,盐在 16384 轮中生成。

pbkdf2

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 10000 次迭代。

pbkdf2_1000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 1000 次迭代。

pbkdf2_10000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 10000 次迭代。

pbkdf2_50000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 50000 次迭代。

pbkdf2_100000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 100000 次迭代。

pbkdf2_500000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 500000 次迭代。

pbkdf2_1000000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,使用 1000000 次迭代。

pbkdf2_stretch

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 10000 次迭代。

pbkdf2_stretch_1000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 1000 次迭代。

pbkdf2_stretch_10000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 10000 次迭代。

pbkdf2_stretch_50000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 50000 次迭代。

pbkdf2_stretch_100000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 100000 次迭代。

pbkdf2_stretch_500000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 500000 次迭代。

pbkdf2_stretch_1000000

使用 PBKDF2 密钥派生函数,使用 HMAC-SHA512 作为伪随机函数,在首先使用 SHA512 对初始输入进行哈希处理后使用 1000000 次迭代。