Elasticsearch 中的安全设置

编辑

您可以使用 xpack.security 设置来启用匿名访问和执行消息身份验证,设置文档和字段级安全配置 Realm使用 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 realm 的所有设置: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

Automata 设置

编辑

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

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 以禁用内置令牌服务。除非 xpack.security.http.ssl.enabledfalse,否则默认为 true。这可以防止从普通 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
静态)缓存的用户条目的生存时间 (TTL)。用户及其凭据的哈希值将在此时间段内缓存。使用标准的 Elasticsearch 时间单位指定时间段。默认为 20m
cache.max_users
静态)缓存中在任何给定时间可以存在的最大用户条目数。默认为 100,000。
cache.hash_algo
静态,专家)用于内存中缓存的用户凭据的哈希算法。有关可能的值,请参阅表 1,“缓存哈希算法”。默认为 ssha256
authentication.enabled
静态)如果设置为 false,则禁用此 realm 中的身份验证支持,使其仅支持用户查找。(请参阅以其他用户身份运行授权 realm功能)。默认为 true
文件 realm 设置
编辑

除了适用于所有 realm 的设置之外,您还可以指定以下设置

cache.ttl
静态)缓存的用户条目的生存时间 (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]://<服务器>:<端口> 格式的 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
静态)将用户名替换为字符串 {0} 的 DN 模板。此设置是多值的;您可以指定多个用户上下文。在用户模板模式下运行是必需的。如果指定了 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
(静态) 指定用于查找组的过滤器。如果未设置,则 realm 将搜索带有属性 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
(静态) truststore 的算法。默认为 SunX509
truststore.password

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

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

如果设置了 truststore.path,则此设置是必需的。

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

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

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 资源以 realm 的 idp.metadata.http.refreshidp.metadata.http.minimum_refresh 设置确定的频率进行轮询。

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

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

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

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

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.50 *专有名称*的 SAML 属性的名称。
attribute_patterns.principal logo cloud
静态)一个 Java 正则表达式,用于匹配 attributes.principal 指定的 SAML 属性,然后将其应用于用户的 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
静态)应该咨询以进行委托授权的 realm 的名称。如果使用此设置,则 SAML realm 不会执行角色映射,而是从列出的 realm 加载用户。请参阅 将授权委托给另一个 realm
allowed_clock_skew logo cloud
静态)IdP 的时钟和 Elasticsearch 节点的时钟之间可以容忍的最大偏差量。默认为 3m(3 分钟)。
req_authn_context_class_ref logo cloud

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

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

SAML realm 签名设置
编辑

如果配置了签名密钥(即设置了 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
(静态) 指定 Kerberos keytab 文件的路径,该文件包含此 Elasticsearch 节点使用的服务主体。这必须是 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
静态)应该用于委托授权的 realm 的名称。如果使用此设置,则 Kerberos realm 不会执行角色映射,而是从列出的 realm 加载用户。请参阅将授权委托给另一个 realm
OpenID Connect realm 设置
编辑

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

op.issuer logo cloud
静态)OpenID Connect 提供商的可验证标识符。颁发者标识符通常是使用 https 方案(包含方案、主机,以及可选的端口号和路径组件,并且没有查询或片段组件)的大小写敏感 URL。此设置的值应由 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
静态)应该用于委托授权的 realm 的名称。如果使用此设置,则 OpenID Connect realm 不会执行角色映射,而是从列出的 realm 加载用户。请参阅将授权委托给另一个 realm
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
静态)当为 rp.client_auth_method 选择 client_secret_jwt 时,Elasticsearch 用于对 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 正则表达式。属性值必须与模式匹配,并且第一个捕获组的值用作主体。例如,^([^@]+)@example\\.com$ 匹配来自 "example.com" 域的电子邮件地址,并使用本地部分作为主体。
claim_patterns.groups logo cloud
静态)与 claim_patterns.principal 相同,但用于属性。
claim_patterns.name logo cloud
静态)与 claim_patterns.principal 相同,但用于名称属性。
claim_patterns.mail logo cloud
静态)与 claim_patterns.principal 相同,但用于邮件属性。
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 Key Set 的请求。
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 领域设置
编辑

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

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 颁发者接收的 JWT 签名的签名算法列表。默认为 RS256。示例包括 HS512,RS512,ES512ES384。允许的值为 HS256HS384HS512ES256ES384ES512RS256RS384RS512PS256PS384PS512
authorization_realms
(静态) 应该咨询以进行委托授权的 realm 名称。如果使用了此设置,则 JWT realm 不执行角色映射,而是从列出的 realm 加载用户。请参阅将授权委托给另一个 realm
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
(静态) 包含用户的用户名的 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_secretnone 来验证传入的客户端请求。如果此值为 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 密钥集 (JWKS) 的 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 Realm 用于验证令牌签名的公钥材料的 JSON Web 密钥集 (JWKS) 的文件名或 URL。如果值不以 https 开头,则将其视为文件名。文件名相对于 Elasticsearch 配置目录进行解析。如果提供 URL,则它必须以 https:// 开头(不支持 http://)。Elasticsearch 会自动缓存 JWK 集,并在签名验证失败时尝试刷新 JWK 集,因为这可能表明 JWT 提供程序已轮换了签名密钥。
hmac_jwkset logo cloud
(安全) JSON Web 密钥集 (JWKS) 的内容,包括 JWT realm 用于验证令牌签名的密钥。此格式支持多个密钥和可选属性,并且优先于 hmac_key 设置。不能与 hmac_key 设置一起使用。请参阅配置 Elasticsearch 以使用 JWT realm
hmac_key logo cloud
(安全) 单个 JSON Web 密钥 (JWK) 的内容,包括 JWT realm 用于验证令牌签名的密钥。此格式仅支持不带属性的单个密钥,不能与 hmac_jwkset 设置一起使用。此格式与 OIDC 兼容。HMAC 密钥必须是 UNICODE 字符串,其中密钥字节是 UNICODE 字符串的 UTF-8 编码。hmac_jwkset 设置是首选。请参阅配置 Elasticsearch 以使用 JWT realm
populate_user_metadata logo cloud
(静态) 指定是否使用 JWT 声明提供的值填充 Elasticsearch 用户的元数据。默认为 true
JWT realm SSL 设置
编辑

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

这些设置用于 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

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

pbkdf2_stretch_1000

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

pbkdf2_stretch_10000

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

pbkdf2_stretch_50000

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

pbkdf2_stretch_100000

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

pbkdf2_stretch_500000

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

pbkdf2_stretch_1000000

先使用 SHA512 对初始输入进行哈希,然后使用 PBKDF2 密钥派生函数,以 HMAC-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

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

pbkdf2_stretch_1000

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

pbkdf2_stretch_10000

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

pbkdf2_stretch_50000

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

pbkdf2_stretch_100000

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

pbkdf2_stretch_500000

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

pbkdf2_stretch_1000000

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