加载中

Elasticsearch中的安全设置

Elastic Cloud Hosted 自管型

您可以配置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
(静态) 一个逗号分隔的设置列表,这些设置将从cluster nodes info 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 logo cloud
(静态) 匿名用户的用户名(Principal)。默认为_es_anonymous_user
xpack.security.authc.anonymous.roles logo cloud
(静态) 与匿名用户关联的角色。必需。
xpack.security.authc.anonymous.authz_exception logo cloud
(静态) 当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小时。

您可以在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密钥凭据的哈希算法。请参阅表3,安全令牌哈希算法。默认为ssha256

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

例如

xpack:
  security:
    authc:
      domains:
        my_domain:
          realms: [ 'default_native', 'saml1' ]
  1. 指定安全域的名称
  2. 指定属于该域的Realm
xpack.security.authc.realms.saml.* logo cloud
要了解如何启用SAML和相关用户设置的更多信息,请查看使用SAML保护您的集群
xpack.security.authc.realms.oidc.* logo cloud
要了解如何启用OpenID Connect和相关用户设置的更多信息,请查看使用OpenID Connect保护您的集群
xpack.security.authc.realms.kerberos.* logo cloud
要了解如何启用Kerberos和相关用户设置的更多信息,请查看使用Kerberos保护您的集群
xpack.security.authc.realms.jwt.* logo cloud
要了解如何启用JWT和相关用户设置的更多信息,请查看使用JWT保护您的集群
注意

所有SAML、OpenID Connect、Kerberos和JWT设置都在允许列表中。

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

例如

xpack.security.authc.realms:

    native.realm1:
        order: 0
        ...

    ldap.realm2:
        order: 1
        ...

    active_directory.realm3:
        order: 2
        ...
    ...
  1. 指定Realm类型(例如,nativeldapactive_directorypkifilekerberossaml)和Realm名称。此信息是必需的。
  2. 指定Realm在Realm链中的优先级。此信息是必需的。

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

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

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

cache.ttl
(静态) 缓存用户条目的存活时间。用户及其凭据的哈希将在此期间被缓存。使用标准的Elasticsearch时间单位指定时间段。默认为20m
cache.max_users
(静态) 缓存中可以同时存在的用户条目最大数量。默认为100,000。
cache.hash_algo
(静态, 专家) 用于内存缓存用户凭据的哈希算法。可能的值请参阅表1,缓存哈希算法。默认为ssha256
authentication.enabled
(静态) 如果设置为false,则禁用此领域中的身份验证支持,使其仅支持用户查找。(请参阅run as授权领域功能)。默认为true

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

cache.ttl
(静态) 缓存用户条目的存活时间(time-to-live)。用户及其凭据的哈希值将缓存此配置的时间段。默认为20m。使用标准Elasticsearch时间单位指定值。默认为20m
cache.max_users
(静态) 在给定时间点可以存在于缓存中的最大用户条目数。默认为 100,000。
cache.hash_algo
(静态, 专家) 用于内存缓存用户凭据的哈希算法。请参阅表1,缓存哈希算法。默认为ssha256
authentication.enabled
(静态) 如果设置为false,则禁用此领域中的身份验证支持,使其仅支持用户查找。(请参阅run as授权领域功能)。默认为true

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

url

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

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

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

load_balance.type
(静态) 定义多个LDAP URL时使用的行为。支持的值请参阅负载均衡和故障转移类型。默认为failover
load_balance.cache_ttl
(静态) 当使用dns_failoverdns_round_robin作为负载均衡类型时,此设置控制缓存DNS查找的时间量。默认为1h
bind_dn
(静态) 用于绑定到LDAP并执行搜索的用户DN(Distinguished Name)。仅在用户搜索模式下适用。如果未指定,则尝试匿名绑定。默认为空。由于其潜在的安全影响,bind_dn不会通过节点信息API暴露。
bind_password
自 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

(静态) 应查阅以进行委派授权的领域名称。如果使用此设置,则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 版本弃用

请改用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
(静态) 作为健康检查一部分检索的专有名称(distinguished name)。如果存在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
(静态) 指定用于查找组的过滤器。如果未设置,该领域将搜索具有membermemberOfmemberUid属性的groupgroupOfNamesgroupOfUniqueNamesposixGroup。过滤器中任何{{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服务器返回的引用(referrals)。引用是服务器返回的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 版本弃用

推荐改用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 版本弃用

推荐改用ssl.keystore.secure_password

ssl.keystore.secure_password
(安全) 密钥库的密码。
ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。

自 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 版本弃用

推荐改用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

有效值:

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

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

ssl.supported_protocols

(静态) 支持的协议及其版本。有效协议:SSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.3。默认为TLSv1.3,TLSv1.2

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
(静态) 指定缓存用户条目的存活时间(time-to-live)。用户及其凭据的哈希值将缓存此时间段。使用标准Elasticsearch时间单位。默认为20m
cache.max_users
(静态) 指定缓存可包含的最大用户条目数。默认为100000
cache.hash_algo
(静态, 专家) 指定用于内存缓存用户凭据的哈希算法。请参阅表1,缓存哈希算法。默认为ssha256
authentication.enabled
(静态) 如果设置为false,则禁用此领域中的身份验证支持,使其仅支持用户查找。(请参阅run as授权领域功能)。默认为true

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

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

(静态) 用于绑定到Active Directory的用户的密码。默认为空。由于其潜在的安全影响,bind_password不会通过节点信息API暴露。

自 6.3 版本弃用

请改用secure_bind_password

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 版本弃用

这等同于timeout.response并已弃用,推荐使用后者,两者不能同时使用。

(静态) 建立LDAP连接后的TCP读取超时时长。末尾的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 版本弃用

推荐改用ssl.secure_key_passphrase

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

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

(静态) 密钥库中密钥的密码。默认为密钥库密码。

自 7.17.0 版本弃用

推荐改用ssl.keystore.secure_key_password

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

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

(静态) 密钥库的密码。

自 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 版本弃用

推荐改用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

有效值:

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

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

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,则禁用此领域中的身份验证支持,使其仅支持用户查找。(请参阅run as授权领域功能)。默认为true
follow_referrals
(静态) 如果设置为 true,Elasticsearch 会遵循 LDAP 服务器返回的引用。引用是服务器返回的用于继续 LDAP 操作(例如 search)的 URL。默认为 true

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

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

(静态) 信任库的密码。

自 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 域的身份验证委托

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

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

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

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

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

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

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

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

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

(静态) 在请求 IdP 认证当前用户时,要包含在 Requested Authentication Context 中的 Authentication Context Class Reference 值列表,以逗号分隔。相应的身份验证响应的 Authentication Context 应包含至少一个请求的值。

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

如果配置了签名密钥(即设置了 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) 中密钥的密码。默认为密钥库密码。

如果配置了加密密钥(即设置了 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) 中密钥的密码。仅支持一个密码。如果您使用多个解密密钥,它们不能有单独的密码。

如果您通过 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 版本弃用

推荐改用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 版本弃用

推荐改用ssl.keystore.secure_password

ssl.keystore.secure_password

(安全) 密钥库的密码。

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

ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。

自 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 版本弃用

推荐改用ssl.truststore.secure_password

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

ssl.truststore.secure_password

(安全) 信任库的密码。

此设置不能与 ssl.truststore.password 同时使用。

ssl.verification_mode logo cloud

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

默认为full

有效值:

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

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

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加密架构文档

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

keytab.path logo cloud
(静态) 指定 Kerberos keytab 文件的路径,该文件包含此 Elasticsearch 节点使用的服务主体。该文件必须位于 Elasticsearch 配置目录内,并且必须具有读取权限。必需。
remove_realm_name logo cloud
(静态) 设置为 true 以移除主体名称的 realm 部分。Kerberos 中的主体名称格式为 user/instance@REALM。如果此选项为 true,则 realm 部分(@REALM)将不会包含在用户名中。默认为 false
krb.debug
(静态) 设置为 true 以启用为 Kerberos 认证提供支持的 Java 登录模块的调试日志。默认为 false
cache.ttl logo cloud
(静态) 缓存用户条目的存活时间(TTL)。用户在此时间段内被缓存。使用标准的 Elasticsearch 时间单位指定时间段。默认为 20m
cache.max_users logo cloud
(静态) 缓存中可以同时存在的用户条目最大数量。默认为100,000。
authorization_realms logo cloud
(静态) 指定应咨询哪些 realm 以进行委托授权。如果使用此设置,则 Kerberos realm 不执行角色映射,而是从列出的 realm 中加载用户。参见将授权委托给另一个 realm

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

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

包含公钥材料的 JSON Web Key Set (JWKS) 文件名或 URL,这些公钥用于验证由 OpenID Connect Provider 签名的令牌和声明响应。如果值不以 httpshttp 开头,则被视为文件名。文件名将相对于 Elasticsearch 配置目录进行解析。文件更改将按照全局 Elasticsearch resource.reload.interval.high 设置确定的频率进行轮询,该设置默认为 5 秒。

  • 如果提供 URL,则必须以 https://http:// 开头。Elasticsearch 会自动缓存检索到的 JWK,并在签名验证失败时尝试刷新 JWK,因为这可能表明 OpenID Connect Provider 已轮换了签名密钥。
authorization_realms
(静态) 指定应咨询哪些 realm 以进行委托授权。如果使用此设置,则 OpenID Connect realm 不执行角色映射,而是从列出的 realm 中加载用户。参见将授权委托给另一个 realm
rp.client_id logo cloud
(静态) 在 OpenID Connect Provider 处注册时分配给 Elasticsearch 的 OAuth 2.0 Client Identifier。
rp.client_secret
(安全设置) 在 OpenID Connect Provider 处注册时分配给 Elasticsearch 的 OAuth 2.0 Client Secret。
rp.client_auth_method logo cloud
(静态) Elasticsearch 用于向 OpenID Connect Provider 进行身份验证的客户端身份验证方法。可以是 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 用来签署用于向 OpenID Connect Provider 进行客户端身份验证的 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 Response Type 值。可以是用于授权码授权流程的 code,或者用于隐式流程的 id_tokenid_token token
rp.signature_algorithm logo cloud
(静态) Elasticsearch 用于验证从 OpenID Connect Provider 接收到的 id 令牌签名的签名算法。允许的值为 HS256HS384HS512ES256ES384ES512RS256RS384RS512PS256PS384PS512。默认为 RS256
rp.requested_scopes logo cloud
(静态) OpenID Connect Provider 作为身份验证请求一部分将请求的作用域值。可选,默认为 openid
rp.post_logout_redirect_uri logo cloud
(静态) 单点注销成功后,OpenID Connect Provider 应将浏览器重定向到的重定向 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 可分辨名称 (Distinguished Name) 的 OpenID Connect 声明的名称。
claim_patterns.principal logo cloud
(静态) 一个 Java 正则表达式,在应用于用户的 principal 属性之前,会与由 claims.principal 指定的 OpenID Connect 声明进行匹配。属性值必须匹配此模式,并且第一个捕获组的值将用作 principal。例如,^([^@]+)@example\\.com$ 匹配来自“example.com”域的电子邮件地址,并使用本地部分作为 principal。
claim_patterns.groups logo cloud
(静态) 同 claim_patterns.principal,但用于 group 属性。
claim_patterns.name logo cloud
(静态) 同 claim_patterns.principal,但用于 name 属性。
claim_patterns.mail logo cloud
(静态) 同 claim_patterns.principal,但用于 mail 属性。
claim_patterns.dn logo cloud
(静态) 同 claim_patterns.principal,但用于 dn 属性。
allowed_clock_skew logo cloud
(静态) 验证 id 令牌的创建和过期时间时允许的最大时钟偏移。默认为 60s
populate_user_metadata logo cloud
(静态) 指定是否使用 OpenID Connect 声明提供的值来填充 Elasticsearch 用户的元数据。默认为 true
http.proxy.host
(静态) 指定内部 HTTP 客户端用于与 OpenID Connect Provider 端点进行所有后台通信的代理服务器地址。这包括对令牌端点 (Token Endpoint)、用户信息端点 (Userinfo Endpoint) 的请求,以及当 op.jwkset_path 设置为 URL 时从 OP 获取 JSON Web Key Set 的请求。
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 keepalives。默认为 true
http.connection_pool_ttl logo cloud
(静态) 控制用于与 OpenID Connect Provider 端点进行后台通信的 HTTP 客户端行为。指定连接池中连接的存活时间(默认为 3 分钟)。如果连接空闲超过指定超时时间,则会关闭。

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

以下设置可用于为所有出站 HTTP 连接配置 SSL,这些连接指向 OpenID Connect Provider 端点。

注意

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

ssl.key logo cloud

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

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

ssl.key_passphrase logo cloud

(静态) 用于解密私钥的密码。由于密钥可能未加密,此值为可选。

自 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 版本弃用

推荐改用ssl.keystore.secure_password

ssl.keystore.secure_password

(安全) 密钥库的密码。

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

ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。

自 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 版本弃用

推荐改用ssl.truststore.secure_password

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

ssl.truststore.secure_password

(安全) 信任库的密码。

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

ssl.verification_mode logo cloud

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

默认为full

有效值:

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

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

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加密架构文档

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

token_type logo cloud
(静态) JWT realm 用于验证入站 JWT 的令牌类型,id_tokenaccess_token。默认为 id_token
allowed_audiences logo cloud
(静态) Elasticsearch 应验证的允许的 JWT audience 列表。Elasticsearch 只会消费那些旨在用于这些 audience 中的任何一个的 JWT,如 JWT 中 aud 声明所指示。audience 通过精确字符串匹配进行比较,不支持通配符或正则表达式。aud 声明示例包括 https://example.com/client1other_service,elasticsearch。当 token_typeaccess_token 时,如果 aud 不存在,可以在 JWT 中通过其他声明可选地指示 audience。另请参见 fallback_claims.aud
allowed_clock_skew logo cloud
(静态) 验证 JWT 的创建时间(不早于)和过期时间时允许的最大时钟偏移。
allowed_issuer logo cloud
(静态) 您的 JWT 颁发者 (Issuer) 的可验证标识符。颁发者标识符通常是一个区分大小写的 URL,使用 HTTPS 方案,包含方案、主机,以及可选的端口号和路径组件,但不包含查询或片段组件。然而,它可以是任何字符串。此设置的值应由您的 JWT 颁发者提供。颁发者通过精确字符串匹配进行比较,不支持通配符或正则表达式。iss 声明示例包括 https://example.com:8443/jwtissuer123
allowed_subjects logo cloud
(静态) Elasticsearch 应验证的允许的 JWT subject 列表。Elasticsearch 只会消费那些针对这些 subject 中任何一个颁发的 JWT,如 JWT 中 sub 声明所指示。subject 通过精确字符串匹配进行比较,不支持通配符或正则表达式。sub 声明示例包括 https://example.com/user1user_1,user2。当 token_typeaccess_token 时,此设置是必需的,并且如果 sub 不存在,可以在 JWT 中通过其他声明可选地指示 subject。另请参见 fallback_claims.sub

fallback_claims.sub logo cloud
(静态) 如果 sub 声明不存在,则用于查找 subject 信息的备用声明。仅当 token_typeaccess_token 时可配置。回退机制应用于使用 sub 声明的所有地方。

fallback_claims.aud logo cloud
(静态) 如果 aud 声明不存在,则用于查找 audience 信息的备用声明。仅当 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 声明的名称,DN 唯一标识用户或组。
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 声明进行匹配。值必须匹配此模式,并且第一个捕获组的值将用作 principal。例如,^([^@]+)@example\\.com$ 匹配来自 example.com 域的电子邮件地址,并使用本地部分作为 principal。另一个示例是 sub,它可能不需要模式设置。
client_authentication.type logo cloud

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

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

client_authentication.shared_secret logo cloud
(安全设置, 可重新加载) 用于客户端身份验证的秘密值字符串。如果 client_authentication.typeshared_secret,则此项必需。
client_authentication.rotation_grace_period
(静态) 设置轮换 client_authentication.shared_secret 后其保持有效期的宽限期。可以通过更新 keystore 然后调用reload API来轮换 client_authentication.shared_secret。默认为 1m
http.connect_timeout logo cloud
(静态) 设置用于从远程 URL 获取 JSON Web Key Set 的 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 条目的存活时间(TTL)。仅当客户端身份验证成功(或禁用)时,JWT 才能被缓存。使用标准的 Elasticsearch 时间单位。如果客户端为每个请求使用不同的 JWT,请设置为 0 以禁用 JWT 缓存。默认为 20m
pkc_jwkset_path logo cloud
(静态) 包含 JWT Realm 用于验证令牌签名的公钥材料的 JSON Web Key Set (JWKS) 文件名或 URL。如果值不以 https 开头,则被视为文件名。文件名相对于 Elasticsearch 配置目录进行解析。如果提供 URL,则必须以 https:// 开头(不支持 http://)。Elasticsearch 会自动缓存 JWK Set,并在签名验证失败时尝试刷新 JWK Set,因为这可能表明 JWT Provider 已轮换了签名密钥。
hmac_jwkset logo cloud
(安全设置) JSON Web Key Set (JWKS) 的内容,包括 JWT realm 用于验证令牌签名的秘密密钥。此格式支持多个密钥和可选属性,优先于 hmac_key 设置。不能与 hmac_key 设置同时使用。请参阅配置 Elasticsearch 以使用 JWT realm
hmac_key logo cloud
(安全设置) 单个 JSON Web Key (JWK) 的内容,包括 JWT realm 用于验证令牌签名的秘密密钥。此格式仅支持单个密钥且不包含属性,不能与 hmac_jwkset 设置同时使用。此格式兼容 OIDC。HMAC 密钥必须是 UNICODE 字符串,其中密钥字节是该 UNICODE 字符串的 UTF-8 编码。优先使用 hmac_jwkset 设置。请参阅配置 Elasticsearch 以使用 JWT realm
populate_user_metadata logo cloud
(静态) 指定是否使用 JWT 声明提供的值来填充 Elasticsearch 用户的元数据。默认为 true

以下设置可用于配置 SSL 以从远程 URL 获取 JSON Web Key Set。

注意

这些设置用于 Elasticsearch 与 JWT 颁发者之间的后台通信。

ssl.key logo cloud

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

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

ssl.key_passphrase logo cloud

(静态) 用于解密私钥的密码。由于密钥可能未加密,此值为可选。

自 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 版本弃用

推荐改用ssl.keystore.secure_password

ssl.keystore.secure_password

(安全) 密钥库的密码。

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

ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。

自 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 版本弃用

推荐改用ssl.truststore.secure_password

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

ssl.truststore.secure_password

(安全) 信任库的密码。

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

ssl.verification_mode logo cloud

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

默认为full

有效值:

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

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

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 地址。连接将持续遍历地址列表。如果某个服务器不可用,遍历地址列表的操作将继续进行,直到成功建立连接。
xpack.security.ssl.diagnose.trust
(静态) 控制是否输出 SSL/TLS 信任失败的诊断消息。如果设置为 true(默认值),则每当由于无法建立信任而拒绝 SSL 连接(入站或出站)时,都会在 Elasticsearch 日志中打印一条消息。此诊断消息包含可用于确定失败原因并协助解决问题的信息。设置为 false 可禁用这些消息。

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

注意

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

您可以配置以下 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

有效值:

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

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

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加密架构文档

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

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

xpack.security.http.ssl.key

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

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

xpack.security.http.ssl.key_passphrase

(静态) 用于解密私钥的密码。由于密钥可能未加密,此值为可选。

自 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 密钥库文件 (JKS) 时,请使用以下设置

xpack.security.http.ssl.keystore.path

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

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

xpack.security.http.ssl.keystore.password

(静态) 密钥库的密码。

自 7.17.0 版本弃用

推荐改用ssl.keystore.secure_password

xpack.security.http.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.http.ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。

自 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 版本弃用

推荐改用ssl.truststore.secure_password

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

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

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 版本弃用

推荐改用ssl.keystore.secure_password

xpack.security.http.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.http.ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。

自 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 版本弃用

推荐改用ssl.truststore.secure_password

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

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

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

xpack.security.transport.ssl.enabled
(静态) 用于在传输网络层启用或禁用 TLS/SSL,Elasticsearch 节点使用该层彼此通信。默认值为 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

有效值:

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

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

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加密架构文档

xpack.security.transport.ssl.trust_restrictions.x509_fields 云图标
指定用于匹配远程集群连接所使用的受限信任管理的 TLS 证书中的哪些字段。仅当自管理集群无法创建符合 Elastic Cloud 模式的证书时才应设置此项。默认值是 ["subjectAltName.otherName.commonName"],即 Elastic Cloud 模式。"subjectAltName.dnsName" 也受支持,可以额外配置或替换默认值。

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

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

xpack.security.transport.ssl.key

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

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

xpack.security.transport.ssl.key_passphrase

(静态) 用于解密私钥的密码。由于密钥可能未加密,此值为可选。

自 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

xpack.security.loginAssistanceMessage 云图标
向登录屏幕添加一条消息。对于显示公司消息很有用。

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

xpack.security.transport.ssl.keystore.path

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

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

xpack.security.transport.ssl.keystore.password

(静态) 密钥库的密码。

自 7.17.0 版本弃用

推荐改用ssl.keystore.secure_password

xpack.security.transport.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.transport.ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。

自 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 版本弃用

推荐改用ssl.truststore.secure_password

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

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

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 版本弃用

推荐改用ssl.keystore.secure_password

xpack.security.transport.ssl.keystore.secure_password
(安全) 密钥库的密码。
xpack.security.transport.ssl.keystore.key_password

(静态) 密钥库中密钥的密码。默认为密钥库密码。

自 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 版本弃用

推荐改用ssl.truststore.secure_password

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

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

您可以配置以下 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

有效值:

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

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

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加密架构文档

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

使用 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 密钥库文件 (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
(安全) 信任库的密码。

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
(安全) 信任库的密码。

您可以配置以下 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

有效值:

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

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

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加密架构文档

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

使用 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 密钥库文件 (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
(安全) 信任库的密码。

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
(安全) 信任库的密码。

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

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

您可以为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 地址列表。

某些领域 (realm) 将用户凭据存储在内存中。为了限制凭据被盗的风险并减轻凭据泄露的危害,缓存只在内存中存储用户凭据的哈希版本。默认情况下,用户缓存使用加盐的 sha-256 哈希算法进行哈希处理。您可以通过将静态 cache.hash_algo 领域设置配置为以下任一值来使用不同的哈希算法:

算法 描述
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 设置配置为以下任一值来配置密码哈希算法:

算法 描述
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 次迭代。

此外,Elasticsearch 支持通过安全生成的高熵令牌进行认证,例如API 密钥。与密码类似,只存储令牌的哈希值。由于令牌保证具有足够高的熵来抵抗离线攻击,因此除了上面提到的密码哈希算法外,还支持安全的加盐哈希函数。

您可以通过将静态 xpack.security.authc.api_key.hashing.algorithm 设置配置为以下任一值来配置 API 密钥存储凭据的哈希算法:

算法 描述
ssha256 使用加盐的 sha-256 算法。(默认)
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 次迭代。
© . All rights reserved.