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' ] 

指定安全域的名称

指定属于该域的领域

领域设置编辑

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

例如

xpack.security.authc.realms:

    native.realm1: 
        order: 0 
        ...

    ldap.realm2:
        order: 1
        ...

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

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

指定领域链中领域的优先级。此信息是必需的。

有效设置会根据领域类型而有所不同。有关更多信息,请参见 用户身份验证

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

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

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

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

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

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

url

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

要提供多个 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。仅适用于用户搜索模式。如果未指定,则会尝试进行匿名绑定。默认值为 Empty。由于其潜在的安全影响,bind_dn 不会通过 节点信息 API 公开。
bind_password
(静态) [6.3] 在 6.3 中已弃用。 使用 secure_bind_password 代替。用于绑定到 LDAP 目录的用户的密码。默认值为 Empty。由于其潜在的安全影响,bind_password 不会通过 节点信息 API 公开。
secure_bind_password
(安全可重新加载) 用于绑定到 LDAP 目录的用户的密码。默认值为 Empty。
user_dn_templates
(静态) DN 模板,它将用户名替换为字符串 {0}。此设置是多值的;您可以指定多个用户上下文。在用户模板模式下操作时必需。如果指定了 user_search.base_dn,则此设置无效。有关不同模式的更多信息,请参见 LDAP 用户身份验证
authorization_realms

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

如果指定了任何以 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 将传递到过滤器中。默认值为 Empty。
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 会禁用 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,则会禁用此领域中的身份验证支持,因此它只支持用户查找。(请参见 以其他用户身份运行授权领域 功能)。默认值为 true
Active Directory 域设置edit

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

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 会禁用 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,则会禁用此领域中的身份验证支持,因此它只支持用户查找。(请参见 以其他用户身份运行授权领域 功能)。默认值为 true
follow_referrals
(静态) 如果设置为 true,Elasticsearch 将遵循 LDAP 服务器返回的引用。引用是服务器返回的 URL,用于继续 LDAP 操作(例如 search)。默认值为 true
PKI 领域设置编辑

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

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 将设置检查 metdata 的最小频率。默认值为 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
(静态) 与 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
(静态) 应为委托授权查询的 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 会禁用 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 领域设置编辑

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

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 提供者的可验证标识符。发行者标识符通常是使用 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
(静态) 应该查询以进行委托授权的领域的名称。如果使用此设置,则 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 的签名算法,它使用该 JWT 作为客户端向 OpenID Connect 提供者进行身份验证,前提是为 rp.client_auth_method 选择了 client_secret_jwt。可以是 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
(静态) 重定向 URI(通常在 Kibana 中),OpenID Connect 提供者应在成功执行单点注销后将浏览器重定向到该 URI。
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 相同,但针对的是 mail 属性。
claim_patterns.dn logo cloud
(静态) 与 claim_patterns.principal 相同,但针对的是 dn 属性。
allowed_clock_skew logo cloud
(静态) 验证 ID 令牌的创建和过期时间时,要考虑的最大允许时钟偏差。默认值为 60s
populate_user_metadata logo cloud
(静态) 指定是否使用 OpenID Connect 声明提供的 value 来填充 Elasticsearch 用户的元数据。默认值为 true
http.proxy.host
(静态) 指定代理服务器的地址,内部 http 客户端将使用该地址与 OpenID Connect Provider 端点进行所有后端通信。这包括对令牌端点、用户信息端点的请求,以及在 op.jwkset_path 设置为 URL 时,从 OP 获取 JSON Web 密钥集的请求。
http.proxy.scheme
(静态) 指定用于连接到代理服务器的协议,http 客户端将使用该协议与 OpenID Connect Provider 端点进行所有后端通信。默认值为 http。允许的值为 httphttps
http.proxy.port
(静态) 指定代理服务器的端口,http 客户端将使用该端口与 OpenID Connect Provider 端点进行所有后端通信。默认值为 80
http.connect_timeout logo cloud
(静态) 控制用于与 OpenID Connect Provider 端点进行后端通信的 http 客户端的行为。指定建立连接之前的超时时间。值为零表示不使用超时时间。默认值为 5s
http.connection_read_timeout logo cloud
(静态) 控制用于与 OpenID Connect Provider 端点进行后端通信的 http 客户端的行为。指定从连接管理器请求连接时使用的超时时间。默认值为 5s
http.socket_timeout logo cloud
(静态) 控制用于与 OpenID Connect Provider 端点进行后端通信的 http 客户端的行为。指定套接字超时时间 (SO_TIMEOUT),以毫秒为单位,表示等待数据的超时时间,或者换句话说,两个连续数据包之间最大允许的空闲时间。默认值为 5s
http.max_connections logo cloud
(静态) 控制用于与 OpenID Connect Provider 端点进行后端通信的 http 客户端的行为。指定所有端点允许的最大连接数。默认值为 200
http.max_endpoint_connections logo cloud
(静态) 控制用于与 OpenID Connect Provider 端点进行后端通信的 http 客户端的行为。指定每个端点允许的最大连接数。默认值为 200
http.tcp.keep_alive logo cloud
(静态) 是否在用于与 OpenID Connect Provider 端点进行后端通信的 HTTP 连接上启用 TCP 保持活动。默认值为 true
http.connection_pool_ttl logo cloud
(静态) 控制用于与 OpenID Connect Provider 端点进行后端通信的 http 客户端的行为。指定连接池中连接的生存时间 (默认值为 3 分钟)。如果连接空闲时间超过指定超时时间,则会关闭该连接。

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

OpenID Connect 领域 SSL 设置编辑

以下设置可用于为所有传出 http 连接到 OpenID Connect Provider 端点配置 SSL。

这些设置仅用于 Elasticsearch 与 OpenID Connect Provider 之间的后端通信

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 会禁用 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,如 JWT 中的 aud 声明所示。受众与精确字符串匹配进行比较,不支持通配符或正则表达式。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,如 JWT 中的 sub 声明所示。主题与精确字符串匹配进行比较,不支持通配符或正则表达式。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
(静态) 应该查询以进行委托授权的领域的名称。如果使用此设置,则 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
(静态) 包含用户用户名 的 JWT 声明的名称。
claim_patterns.name logo cloud
(静态) 接受与 claim_patterns.principal 相同的 Java 正则表达式,但用于 name 属性。
claims.principal
(静态) 包含用户主体(用户名)的 JWT 声明的名称,例如 subnameemaildn
claim_patterns.principal logo cloud
(静态) 一个可选的 Java 正则表达式,它在将 claims.principal 指定的 JWT 声明应用于用户的 principal 属性之前与该声明匹配。该值必须与模式匹配,并且第一个捕获组的值用作主体。例如,^([^@]+)@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 密钥集的 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 声明提供的 value 来填充 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 会禁用 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 会禁用 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 会禁用 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 会禁用 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 会禁用 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 作为伪随机函数,使用 10000 次迭代,在先用 SHA512 对初始输入进行哈希处理之后。

pbkdf2_stretch_1000

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

pbkdf2_stretch_10000

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

pbkdf2_stretch_50000

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

pbkdf2_stretch_100000

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

pbkdf2_stretch_500000

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

pbkdf2_stretch_1000000

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

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 作为伪随机函数,使用 10000 次迭代,在先用 SHA512 对初始输入进行哈希处理之后。

pbkdf2_stretch_1000

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

pbkdf2_stretch_10000

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

pbkdf2_stretch_50000

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

pbkdf2_stretch_100000

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

pbkdf2_stretch_500000

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

pbkdf2_stretch_1000000

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