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
-
如果设置为
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_dn
和bind_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
- (静态) 匿名用户的用户名(Principal)。默认为
_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对象,这些对象会自动缓存以提高性能。可以配置为原始字节数(例如200mb
或1g
)或节点JVM堆内存的百分比(例如5%
)。超过默认值时,最近最少使用的条目将被逐出。默认为分配给节点的堆内存的10%
。
您可以在elasticsearch.yml
中设置以下令牌服务设置。
xpack.security.authc.token.enabled
- (静态) 设置为
false
可禁用内置令牌服务。默认为true
,除非xpack.security.http.ssl.enabled
为false
。这可以防止通过纯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' ]
- 指定安全域的名称
- 指定属于该域的Realm
xpack.security.authc.realms.saml.*
- 要了解如何启用SAML和相关用户设置的更多信息,请查看使用SAML保护您的集群。
xpack.security.authc.realms.oidc.*
- 要了解如何启用OpenID Connect和相关用户设置的更多信息,请查看使用OpenID Connect保护您的集群。
xpack.security.authc.realms.kerberos.*
- 要了解如何启用Kerberos和相关用户设置的更多信息,请查看使用Kerberos保护您的集群。
xpack.security.authc.realms.jwt.*
- 要了解如何启用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
...
...
- 指定Realm类型(例如,
native
、ldap
、active_directory
、pki
、file
、kerberos
、saml
)和Realm名称。此信息是必需的。 - 指定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"
)。虽然两者都支持,但不能混合使用
ldap
和ldaps
协议。 load_balance.type
- (静态) 定义多个LDAP URL时使用的行为。支持的值请参阅负载均衡和故障转移类型。默认为
failover
。 load_balance.cache_ttl
- (静态) 当使用
dns_failover
或dns_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_tree
、one_level
或base
。one_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_tree
、one_level
还是base
。one_level
仅搜索直接包含在base_dn
中的对象。sub_tree
搜索base_dn
下包含的所有对象。base
指定base_dn
是一个组对象,并且它是唯一考虑的组。默认为sub_tree
。 group_search.filter
- (静态) 指定用于查找组的过滤器。如果未设置,该领域将搜索具有
member
、memberOf
或memberUid
属性的group
、groupOfNames
、groupOfUniqueNames
或posixGroup
。过滤器中任何{{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
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以“.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
- (静态) 信任库文件的格式。它必须是
jks
或PKCS12
。如果文件名以“.p12”、“.pfx”或“pkcs12”结尾,则默认为PKCS12
。否则,默认为jks
。 ssl.verification_mode
-
(静态) 指示使用
ldaps
时用于防止中间人攻击和证书伪造的验证类型。默认为
full
。有效值:
full
: 验证提供的证书是否:颁发日期在not_before
和not_after
日期范围内;链到受信任的证书颁发机构(CA);具有与证书中名称匹配的hostname
或IP地址。certificate
: 验证提供的证书并验证其是否由受信任的机构(CA)签名,但不检查证书的hostname
。none
: 不执行任何证书验证。
重要将证书验证设置为
none
会禁用SSL/TLS的许多安全优势,这非常危险。仅在Elastic支持人员指示将其作为临时诊断机制以尝试解决TLS错误时才设置此值。 ssl.supported_protocols
-
(静态) 支持的协议及其版本。有效协议:
SSLv2Hello
、SSLv3
、TLSv1
、TLSv1.1
、TLSv1.2
、TLSv1.3
。默认为TLSv1.3,TLSv1.2
。Elasticsearch依赖于您JDK对SSL和TLS的实现。查看按JDK版本划分的支持的SSL/TLS版本以获取更多信息。
注意如果
xpack.security.fips_mode.enabled
为true
,则不能使用SSLv2Hello
或SSLv3
。请参阅FIPS 140-2。 ssl.cipher_suites
-
(静态) 指定与LDAP服务器通信时应支持的密码套件。支持的密码套件因您使用的Java版本而异。例如,对于版本12,默认值为
TLS_AES_256_GCM_SHA384
、TLS_AES_128_GCM_SHA256
、TLS_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
、TLS_RSA_WITH_AES_256_GCM_SHA384
、TLS_RSA_WITH_AES_128_GCM_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA256
、TLS_RSA_WITH_AES_128_CBC_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA
、TLS_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"
)。虽然两者都支持,但不能混合使用
ldap
和ldaps
协议。如果未提供URL,Elasticsearch使用默认值
ldap://<domain_name>:389
。此默认值使用domain_name
设置的值,并假定到端口389的连接未加密。 load_balance.type
- (静态) 定义多个LDAP URL时使用的行为。支持的值请参阅负载均衡和故障转移类型。默认为
failover
。 load_balance.cache_ttl
- (静态) 当使用
dns_failover
或dns_round_robin
作为负载均衡类型时,此设置控制缓存DNS查找的时间量。默认为1h
。 domain_name
- (静态) Active Directory的域名。如果未指定
url
和user_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_tree
、one_level
还是base
。one_level
仅搜索直接包含在base_dn
中的用户。sub_tree
搜索base_dn
下包含的所有对象。base
指定base_dn
是用户对象,并且它是唯一考虑的用户。默认为sub_tree
。 user_search.filter
- (静态) 指定用于查找给定用户名的用户的过滤器。默认过滤器查找具有
sAMAccountName
或userPrincipalName
的user
对象。如果指定,这必须是一个有效的LDAP用户搜索过滤器。例如(&(objectClass=user)(sAMAccountName={{0}}))
。更多信息,请参阅搜索过滤器语法。 user_search.upn_filter
- (静态) 指定用于查找给定用户主体名的用户的过滤器。默认过滤器查找匹配
userPrincipalName
的user
对象。如果指定,这必须是一个有效的LDAP用户搜索过滤器。例如,(&(objectClass=user)(userPrincipalName={{1}}))
。{{1}}
是用户提供的完整用户主体名。更多信息,请参阅搜索过滤器语法。 user_search.down_level_filter
- (静态) 指定用于查找给定下层登录名(DOMAIN\user)的用户的过滤器。默认过滤器在提供的域中查找具有匹配
sAMAccountName
的user
对象。如果指定,这必须是一个有效的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_tree
、one_level
还是base
。one_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
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以“.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
- (静态) 信任库文件的格式。它必须是
jks
或PKCS12
。如果文件名以“.p12”、“.pfx”或“pkcs12”结尾,则默认为PKCS12
。否则,默认为jks
。 ssl.verification_mode
-
(静态) 指示使用
ldaps
时用于防止中间人攻击和证书伪造的验证类型。默认为
full
。有效值:
full
: 验证提供的证书是否:颁发日期在not_before
和not_after
日期范围内;链到受信任的证书颁发机构(CA);具有与证书中名称匹配的hostname
或IP地址。certificate
: 验证提供的证书并验证其是否由受信任的机构(CA)签名,但不检查证书的hostname
。none
: 不执行任何证书验证。
重要将证书验证设置为
none
会禁用SSL/TLS的许多安全优势,这非常危险。仅在Elastic支持人员指示将其作为临时诊断机制以尝试解决TLS错误时才设置此值。 ssl.supported_protocols
-
(静态) 支持的协议及其版本。有效协议:
SSLv2Hello
、SSLv3
、TLSv1
、TLSv1.1
、TLSv1.2
、TLSv1.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.enabled
为true
,则不能使用SSLv2Hello
或SSLv3
。请参阅FIPS 140-2。 ssl.cipher_suites
-
(静态) 指定与 Active Directory 服务器通信时应支持的密码套件。支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为
TLS_AES_256_GCM_SHA384
、TLS_AES_128_GCM_SHA256
、TLS_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
、TLS_RSA_WITH_AES_256_GCM_SHA384
、TLS_RSA_WITH_AES_128_GCM_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA256
、TLS_RSA_WITH_AES_128_CBC_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA
、TLS_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.path
或certificate_authorities
设置之一。有关更多详细信息,请参阅 配置 PKI 域的身份验证委托。
除了适用于所有域的设置之外,您还可以指定以下设置。
idp.entity_id
- (静态) SAML 身份提供商的实体 ID。实体 ID 是一个 URI,最大长度为 1024 个字符。它可以是 URL (https://idp.example.com/) 或 URN (
urn:example.com:idp
),并且可以在身份提供商的配置或 SAML 元数据中找到。 idp.metadata.path
-
(静态) SAML 2.0 元数据文件的路径 *(_推荐_)* 或 URL,该文件描述了身份提供商的功能和配置。如果提供了路径,则它相对于 Elasticsearch 配置目录解析。如果提供了 URL,则它必须是
file
URL 或https
URL。Elasticsearch 会自动轮询此元数据资源并在检测到更改时重新加载 IdP 配置。基于文件的资源按照全局 Elasticsearch
resource.reload.interval.high
设置确定的频率轮询,该设置默认为 5 秒。HTTPS 资源按照域的idp.metadata.http.refresh
和idp.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
-
(静态) 控制检查
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
- (静态) 指示是否使用身份提供商的单一退出服务(如果 IdP 元数据文件中存在)。默认为
true
。 sp.entity_id
- (静态) 用于此 SAML 服务提供商的实体 ID。应将其输入为 URI。建议您使用 Kibana 实例的基本 URL。例如,
https://kibana.example.com/
。 sp.acs
- (静态) Kibana 中 Assertion Consumer Service 的 URL。通常这是您 Kibana 服务器的 "api/security/saml/callback" 端点。例如,
https://kibana.example.example.com/api/security/saml/callback
。 sp.logout
- (静态) Kibana 中 Single Logout 服务的 URL。通常这是您 Kibana 服务器的 "logout" 端点。例如,
https://kibana.example.com/logout
。 attributes.principal
- (静态) 包含用户主体 (用户名) 的 SAML 属性名称。
attributes.groups
- (静态) 包含用户组的 SAML 属性名称。
attributes.name
- (静态) 包含用户全名的 SAML 属性名称。
attributes.mail
- (静态) 包含用户电子邮件地址的 SAML 属性名称。
attributes.dn
- (静态) 包含用户 X.50 * Distinguished Name *的 SAML 属性名称。
attribute_patterns.principal
- (静态) 一个 Java 正则表达式,在应用于用户的主体属性之前,它与
attributes.principal
指定的 SAML 属性匹配。属性值必须匹配模式,并且第一个捕获组的值用作主体。例如,^([^@]+)@example\\.com$
匹配来自 "example.com" 域的电子邮件地址,并使用本地部分作为主体。 attribute_patterns.groups
- (静态) 与
attribute_patterns.principal
类似,但用于组属性。 attribute_patterns.name
- (静态) 与
attribute_patterns.principal
类似,但用于名称属性。 attribute_patterns.mail
- (静态) 与
attribute_patterns.principal
类似,但用于邮件属性。 attribute_patterns.dn
- (静态) 与
attribute_patterns.principal
类似,但用于dn属性。 attribute_delimiters.groups
- (静态) 一个纯字符串,用作分隔符,用于在应用于用户的组属性之前分割由
attributes.groups
指定的单值 SAML 属性。例如,使用分隔符,
分割 SAML 属性值engineering,elasticsearch-admins,employees
,将得到engineering
、elasticsearch-admins
和employees
作为用户的组列表。无论输入字符串中是否有转义,都将始终按照分隔符进行分割。此设置不支持多值 SAML 属性。不能与attribute_patterns
设置一起使用。只能为 groups 属性配置此设置。 nameid_format
- (静态) 在请求 IdP 认证当前用户时应请求的 NameID 格式。默认是不包含
nameid_format
属性。 nameid.allow_create
- (静态) 身份验证请求中
NameIdPolicy
元素的AllowCreate
属性值。默认值为 false。 nameid.sp_qualifier
- (静态) 身份验证请求中
NameIdPolicy
元素的SPNameQualifier
属性值。默认是不包含SPNameQualifier
属性。 force_authn
- (静态) 指定在请求 IdP 认证当前用户时是否设置
ForceAuthn
属性。如果设置为true
,则 IdP 必须验证用户的身份,无论他们可能拥有任何现有会话。默认为false
。 populate_user_metadata
- (静态) 指定是否使用 SAML 属性提供的值填充 Elasticsearch 用户的元数据。默认为
true
。 authorization_realms
- (静态) 应咨询哪些域进行授权委托的名称。如果使用此设置,则 SAML 域不会执行角色映射,而是从列出的域加载用户。请参阅 将授权委托给另一个域。
allowed_clock_skew
- (静态) IdP 时钟和 Elasticsearch 节点时钟之间可容忍的最大偏差量。默认为
3m
(3 分钟)。 req_authn_context_class_ref
-
(静态) 在请求 IdP 认证当前用户时,要包含在 Requested Authentication Context 中的 Authentication Context Class Reference 值列表,以逗号分隔。相应的身份验证响应的 Authentication Context 应包含至少一个请求的值。
有关更多信息,请参阅 请求特定的认证方法。
如果配置了签名密钥(即设置了 signing.key
或 signing.keystore.path
),则 Elasticsearch 会对传出的 SAML 消息进行签名。可以使用以下设置配置签名:
signing.saml_messages
- (静态) 应签名的 SAML 消息类型列表,或使用
*
表示对所有消息进行签名。列表中的每个元素都应是 SAML XML 元素的本地名称。支持的元素类型包括AuthnRequest
、LogoutRequest
和LogoutResponse
。仅在同时指定signing.key
或signing.keystore.path
时有效。默认为*
。 signing.key
- (静态) 指定用于 SAML 消息签名的 PEM 编码私钥的路径。不能同时使用
signing.key
和signing.keystore.path
。 signing.secure_key_passphrase
- (安全) 如果 PEM 编码的私钥 (
signing.key
) 已加密,指定用于解密的密码短语。 signing.certificate
- (静态) 指定与
signing.key
对应的 PEM 编码证书(或证书链)的路径。该证书也必须包含在服务提供商元数据中,或者在 IdP 中手动配置以允许签名验证。仅当设置了signing.key
时才能使用此设置。 signing.keystore.path
- (静态) 包含私钥和证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
signing.key
。 signing.keystore.type
- (静态)
signing.keystore.path
中密钥库的类型。必须是jks
或PKCS12
。如果密钥库路径以 ".p12"、".pfx" 或 "pkcs12" 结尾,此设置默认为PKCS12
。否则,默认为jks
。 signing.keystore.alias
- (静态) 指定密钥库中应用于 SAML 消息签名的密钥别名。如果密钥库包含多个私钥,则必须指定此设置。
signing.keystore.secure_password
- (安全)
signing.keystore.path
中密钥库的密码。 signing.keystore.secure_key_password
- (安全) 密钥库 (
signing.keystore.path
) 中密钥的密码。默认为密钥库密码。
如果配置了加密密钥(即设置了 encryption.key
或 encryption.keystore.path
),则 Elasticsearch 在生成元数据时会发布加密证书,并尝试解密传入的 SAML 内容。可以使用以下设置配置加密:
encryption.key
- (静态) 指定用于 SAML 消息解密的 PEM 编码私钥的路径。不能同时使用
encryption.key
和encryption.keystore.path
。 encryption.secure_key_passphrase
- (安全) 如果 PEM 编码的私钥 (
encryption.key
) 已加密,指定用于解密的密码短语。 encryption.certificate
- (静态) 指定与
encryption.key
关联的 PEM 编码证书(或证书链)的路径。该证书也必须包含在服务提供商元数据中,或者在 IdP 中手动配置以启用消息加密。仅当设置了encryption.key
时才能使用此设置。 encryption.keystore.path
- (静态) 包含私钥和证书的密钥库的路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
encryption.key
。 encryption.keystore.type
- (静态) 密钥库 (
encryption.keystore.path
) 的类型。必须是jks
或PKCS12
。如果密钥库路径以 ".p12"、".pfx" 或 "pkcs12" 结尾,此设置默认为PKCS12
。否则,默认为jks
。 encryption.keystore.alias
- (静态) 指定密钥库 (
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
-
(静态) 包含私钥的PEM编码文件的路径。
如果需要HTTP客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。 ssl.key_passphrase
-
(静态) 用于解密私钥的密码。由于密钥可能未加密,此值为可选。
自 7.17.0 版本弃用推荐改用
ssl.secure_key_passphrase
。不能同时使用此设置和
ssl.secure_key_passphrase
。 ssl.secure_key_passphrase
-
(安全) 用于解密私钥的密码。由于密钥可能未加密,此值为可选。
不能同时使用此设置和
ssl.key_passphrase
。 ssl.certificate
-
(静态) 指定与密钥关联的PEM编码证书(或证书链)的路径。
仅当设置了
ssl.key
时,才能使用此设置。 ssl.certificate_authorities
-
(静态) 应信任的PEM编码证书文件的路径列表。
不能同时使用此设置和
ssl.truststore.path
。 ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是Java密钥库(jks)或PKCS#12文件。不能同时使用此设置和
ssl.key
。 ssl.keystore.type
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为PKCS12
。否则,默认为jks
。 ssl.keystore.password
-
(静态) 密钥库的密码。
自 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
-
(静态) 包含受信任证书的密钥库的路径。它必须是Java密钥库(jks)或PKCS#12文件。
不能同时使用此设置和
ssl.certificate_authorities
。 ssl.truststore.type
- (静态) 信任库文件的格式。它必须是
jks
或PKCS12
。如果文件名以“.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.password
同时使用。 ssl.verification_mode
-
(静态) 控制证书的验证。
默认为
full
。有效值:
full
: 验证提供的证书是否:颁发日期在not_before
和not_after
日期范围内;链到受信任的证书颁发机构(CA);具有与证书中名称匹配的hostname
或IP地址。certificate
: 验证提供的证书并验证其是否由受信任的机构(CA)签名,但不检查证书的hostname
。none
: 不执行任何证书验证。
重要将证书验证设置为
none
会禁用SSL/TLS的许多安全优势,这非常危险。仅在Elastic支持人员指示将其作为临时诊断机制以尝试解决TLS错误时才设置此值。 ssl.supported_protocols
-
(静态) 支持的协议及其版本。有效协议:
SSLv2Hello
、SSLv3
、TLSv1
、TLSv1.1
、TLSv1.2
、TLSv1.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.enabled
为true
,则不能使用SSLv2Hello
或SSLv3
。请参阅FIPS 140-2。 ssl.cipher_suites
-
(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为
TLS_AES_256_GCM_SHA384
、TLS_AES_128_GCM_SHA256
、TLS_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
、TLS_RSA_WITH_AES_256_GCM_SHA384
、TLS_RSA_WITH_AES_128_GCM_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA256
、TLS_RSA_WITH_AES_128_CBC_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA
、TLS_RSA_WITH_AES_128_CBC_SHA
。更多信息,请参阅Oracle的Java加密架构文档。
除了适用于所有领域的设置外,您还可以指定以下设置
keytab.path
- (静态) 指定 Kerberos keytab 文件的路径,该文件包含此 Elasticsearch 节点使用的服务主体。该文件必须位于 Elasticsearch 配置目录内,并且必须具有读取权限。必需。
remove_realm_name
- (静态) 设置为
true
以移除主体名称的 realm 部分。Kerberos 中的主体名称格式为user/instance@REALM
。如果此选项为true
,则 realm 部分(@REALM
)将不会包含在用户名中。默认为false
。 krb.debug
- (静态) 设置为
true
以启用为 Kerberos 认证提供支持的 Java 登录模块的调试日志。默认为false
。 cache.ttl
- (静态) 缓存用户条目的存活时间(TTL)。用户在此时间段内被缓存。使用标准的 Elasticsearch 时间单位指定时间段。默认为
20m
。 cache.max_users
- (静态) 缓存中可以同时存在的用户条目最大数量。默认为100,000。
authorization_realms
- (静态) 指定应咨询哪些 realm 以进行委托授权。如果使用此设置,则 Kerberos realm 不执行角色映射,而是从列出的 realm 中加载用户。参见将授权委托给另一个 realm。
除了适用于所有域的设置之外,您还可以指定以下设置。
op.issuer
- (静态) 您的 OpenID Connect Provider (OP) 的可验证标识符。颁发者标识符通常是一个区分大小写的 URL,使用 HTTPS 方案,包含方案、主机,以及可选的端口号和路径组件,但不包含查询或片段组件。此设置的值应由您的 OpenID Connect Provider 提供。
op.authorization_endpoint
- (静态) OpenID Connect Provider 上的授权端点 URL。此设置的值应由您的 OpenID Connect Provider 提供。
op.token_endpoint
- (静态) OpenID Connect Provider 上的令牌端点 URL。此设置的值应由您的 OpenID Connect Provider 提供。
op.userinfo_endpoint
- (静态) OpenID Connect Provider 上的用户信息端点 URL。此设置的值应由您的 OpenID Connect Provider 提供。
op.endsession_endpoint
- (静态) OpenID Connect Provider 上的结束会话端点 URL。此设置的值应由您的 OpenID Connect Provider 提供。
op.jwkset_path
- (静态)
包含公钥材料的 JSON Web Key Set (JWKS) 文件名或 URL,这些公钥用于验证由 OpenID Connect Provider 签名的令牌和声明响应。如果值不以 https
或 http
开头,则被视为文件名。文件名将相对于 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
- (静态) 在 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
- (静态) Elasticsearch 用于向 OpenID Connect Provider 进行身份验证的客户端身份验证方法。可以是
client_secret_basic
、client_secret_post
或client_secret_jwt
。默认为client_secret_basic
。 rp.client_auth_jwt_signature_algorithm
- (静态) 当为
rp.client_auth_method
选择client_secret_jwt
时,Elasticsearch 用来签署用于向 OpenID Connect Provider 进行客户端身份验证的 JWT 的签名算法。可以是HS256
、HS384
或HS512
。默认为HS384
。 rp.redirect_uri
- (静态) Kibana 内的重定向 URI。如果您想使用授权码流程,这是您 Kibana 服务器的
api/security/oidc/callback
端点。如果您想使用隐式流程,这是api/security/oidc/implicit
端点。例如,https://kibana.example.com/api/security/oidc/callback
。 rp.response_type
- (静态) 确定要使用的授权处理流程的 OAuth 2.0 Response Type 值。可以是用于授权码授权流程的
code
,或者用于隐式流程的id_token
、id_token token
。 rp.signature_algorithm
- (静态) Elasticsearch 用于验证从 OpenID Connect Provider 接收到的 id 令牌签名的签名算法。允许的值为
HS256
、HS384
、HS512
、ES256
、ES384
、ES512
、RS256
、RS384
、RS512
、PS256
、PS384
、PS512
。默认为RS256
。 rp.requested_scopes
- (静态) OpenID Connect Provider 作为身份验证请求一部分将请求的作用域值。可选,默认为
openid
。 rp.post_logout_redirect_uri
- (静态) 单点注销成功后,OpenID Connect Provider 应将浏览器重定向到的重定向 URI(通常在 Kibana 中)。
claims.principal
- (静态) 包含用户主体(用户名)的 OpenID Connect 声明的名称。
claims.groups
- (静态) 包含用户组的 OpenID Connect 声明的名称。
claims.name
- (静态) 包含用户全名的 OpenID Connect 声明的名称。
claims.mail
- (静态) 包含用户电子邮件地址的 OpenID Connect 声明的名称。
claims.dn
- (静态) 包含用户 X.509 可分辨名称 (Distinguished Name) 的 OpenID Connect 声明的名称。
claim_patterns.principal
- (静态) 一个 Java 正则表达式,在应用于用户的 principal 属性之前,会与由
claims.principal
指定的 OpenID Connect 声明进行匹配。属性值必须匹配此模式,并且第一个捕获组的值将用作 principal。例如,^([^@]+)@example\\.com$
匹配来自“example.com”域的电子邮件地址,并使用本地部分作为 principal。 claim_patterns.groups
- (静态) 同
claim_patterns.principal
,但用于 group 属性。 claim_patterns.name
- (静态) 同
claim_patterns.principal
,但用于 name 属性。 claim_patterns.mail
- (静态) 同
claim_patterns.principal
,但用于 mail 属性。 claim_patterns.dn
- (静态) 同
claim_patterns.principal
,但用于 dn 属性。 allowed_clock_skew
- (静态) 验证 id 令牌的创建和过期时间时允许的最大时钟偏移。默认为
60s
。 populate_user_metadata
- (静态) 指定是否使用 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
。允许的值为http
或https
。 http.proxy.port
- (静态) 指定 HTTP 客户端用于连接到代理服务器的端口,该代理服务器将用于与 OpenID Connect Provider 端点进行所有后台通信。默认为
80
。 http.connect_timeout
- (静态) 控制用于与 OpenID Connect Provider 端点进行后台通信的 HTTP 客户端行为。指定建立连接的超时时间。值为零表示不使用超时。默认为
5s
。 http.connection_read_timeout
- (静态) 控制用于与 OpenID Connect Provider 端点进行后台通信的 HTTP 客户端行为。指定从连接管理器请求连接时使用的超时时间。默认为
5s
http.socket_timeout
- (静态) 控制用于与 OpenID Connect Provider 端点进行后台通信的 HTTP 客户端行为。指定套接字超时时间 (SO_TIMEOUT),单位为毫秒,即等待数据或两次连续数据包之间最大不活动周期的超时时间。默认为
5s
。 http.max_connections
- (静态) 控制用于与 OpenID Connect Provider 端点进行后台通信的 HTTP 客户端行为。指定所有端点允许的最大连接数。默认为
200
。 http.max_endpoint_connections
- (静态) 控制用于与 OpenID Connect Provider 端点进行后台通信的 HTTP 客户端行为。指定每个端点允许的最大连接数。默认为
200
。 http.tcp.keep_alive
- (静态) 是否在用于与 OpenID Connect Provider 端点进行后台通信的 HTTP 连接上启用 TCP keepalives。默认为
true
。 http.connection_pool_ttl
- (静态) 控制用于与 OpenID Connect Provider 端点进行后台通信的 HTTP 客户端行为。指定连接池中连接的存活时间(默认为 3 分钟)。如果连接空闲超过指定超时时间,则会关闭。
服务器也可以设置 Keep-Alive
HTTP 响应头。有效的存活时间值是此设置与 Keep-Alive
响应头中较小的值。将此设置配置为 -1
以让服务器决定该值。如果服务器未设置该头且此设置的值为 -1
,则存活时间是无限的,连接永不过期。
以下设置可用于为所有出站 HTTP 连接配置 SSL,这些连接指向 OpenID Connect Provider 端点。
这些设置仅用于 Elasticsearch 与 OpenID Connect Provider 之间的后台通信。
ssl.key
-
(静态) 包含私钥的PEM编码文件的路径。
如果需要HTTP客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。 ssl.key_passphrase
-
(静态) 用于解密私钥的密码。由于密钥可能未加密,此值为可选。
自 7.17.0 版本弃用推荐改用
ssl.secure_key_passphrase
。不能同时使用此设置和
ssl.secure_key_passphrase
。 ssl.secure_key_passphrase
-
(安全) 用于解密私钥的密码。由于密钥可能未加密,此值为可选。
不能同时使用此设置和
ssl.key_passphrase
。 ssl.certificate
-
(静态) 指定与密钥关联的PEM编码证书(或证书链)的路径。
仅当设置了
ssl.key
时,才能使用此设置。 ssl.certificate_authorities
-
(静态) 应信任的PEM编码证书文件的路径列表。
不能同时使用此设置和
ssl.truststore.path
。 ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是Java密钥库(jks)或PKCS#12文件。不能同时使用此设置和
ssl.key
。 ssl.keystore.type
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为PKCS12
。否则,默认为jks
。 ssl.keystore.password
-
(静态) 密钥库的密码。
自 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
-
(静态) 包含受信任证书的密钥库的路径。它必须是Java密钥库(jks)或PKCS#12文件。
不能同时使用此设置和
ssl.certificate_authorities
。 ssl.truststore.type
- (静态) 信任库文件的格式。它必须是
jks
或PKCS12
。如果文件名以“.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.password
。 ssl.verification_mode
-
(静态) 控制证书的验证。
默认为
full
。有效值:
full
: 验证提供的证书是否:颁发日期在not_before
和not_after
日期范围内;链到受信任的证书颁发机构(CA);具有与证书中名称匹配的hostname
或IP地址。certificate
: 验证提供的证书并验证其是否由受信任的机构(CA)签名,但不检查证书的hostname
。none
: 不执行任何证书验证。
重要将证书验证设置为
none
会禁用SSL/TLS的许多安全优势,这非常危险。仅在Elastic支持人员指示将其作为临时诊断机制以尝试解决TLS错误时才设置此值。 ssl.supported_protocols
-
(静态) 支持的协议及其版本。有效协议:
SSLv2Hello
、SSLv3
、TLSv1
、TLSv1.1
、TLSv1.2
、TLSv1.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.enabled
为true
,则不能使用SSLv2Hello
或SSLv3
。请参阅FIPS 140-2。 ssl.cipher_suites
-
(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为
TLS_AES_256_GCM_SHA384
、TLS_AES_128_GCM_SHA256
、TLS_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
、TLS_RSA_WITH_AES_256_GCM_SHA384
、TLS_RSA_WITH_AES_128_GCM_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA256
、TLS_RSA_WITH_AES_128_CBC_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA
、TLS_RSA_WITH_AES_128_CBC_SHA
。更多信息,请参阅Oracle的Java加密架构文档。
除了适用于所有域的设置之外,您还可以指定以下设置。
token_type
- (静态) JWT realm 用于验证入站 JWT 的令牌类型,
id_token
或access_token
。默认为id_token
。 allowed_audiences
- (静态) Elasticsearch 应验证的允许的 JWT audience 列表。Elasticsearch 只会消费那些旨在用于这些 audience 中的任何一个的 JWT,如 JWT 中
aud
声明所指示。audience 通过精确字符串匹配进行比较,不支持通配符或正则表达式。aud
声明示例包括https://example.com/client1
和other_service,elasticsearch
。当token_type
为access_token
时,如果aud
不存在,可以在 JWT 中通过其他声明可选地指示 audience。另请参见fallback_claims.aud
。 allowed_clock_skew
- (静态) 验证 JWT 的创建时间(不早于)和过期时间时允许的最大时钟偏移。
allowed_issuer
- (静态) 您的 JWT 颁发者 (Issuer) 的可验证标识符。颁发者标识符通常是一个区分大小写的 URL,使用 HTTPS 方案,包含方案、主机,以及可选的端口号和路径组件,但不包含查询或片段组件。然而,它可以是任何字符串。此设置的值应由您的 JWT 颁发者提供。颁发者通过精确字符串匹配进行比较,不支持通配符或正则表达式。
iss
声明示例包括https://example.com:8443/jwt
和issuer123
。 allowed_subjects
- (静态) Elasticsearch 应验证的允许的 JWT subject 列表。Elasticsearch 只会消费那些针对这些 subject 中任何一个颁发的 JWT,如 JWT 中
sub
声明所指示。subject 通过精确字符串匹配进行比较,不支持通配符或正则表达式。sub
声明示例包括https://example.com/user1
和user_1,user2
。当token_type
为access_token
时,此设置是必需的,并且如果sub
不存在,可以在 JWT 中通过其他声明可选地指示 subject。另请参见fallback_claims.sub
。
fallback_claims.sub
- (静态) 如果
sub
声明不存在,则用于查找 subject 信息的备用声明。仅当token_type
为access_token
时可配置。回退机制应用于使用sub
声明的所有地方。
fallback_claims.aud
- (静态) 如果
aud
声明不存在,则用于查找 audience 信息的备用声明。仅当token_type
为access_token
时可配置。回退机制应用于使用aud
声明的所有地方。 required_claims
- (静态) Elasticsearch 应验证的附加声明及其关联值。这是一个分组设置,接受键/值对,其中键是字符串,值必须是字符串或字符串数组。值通过精确字符串匹配进行比较,不支持通配符或正则表达式。
例如
xpack.security.authc.realms.jwt.jwt1:
required_claims:
token_use: "id"
versions: ["1.0", "2.0"]
allowed_signature_algorithms
- (静态) Elasticsearch 用于验证从 JWT 颁发者接收到的 JWT 签名的签名算法列表。默认为
RS256
。示例包括HS512,RS512,ES512
和ES384
。允许的值为HS256
、HS384
、HS512
、ES256
、ES384
、ES512
、RS256
、RS384
、RS512
、PS256
、PS384
、PS512
。 authorization_realms
- (静态) 指定应咨询哪些 realm 以进行委托授权。如果使用此设置,则 JWT realm 不执行角色映射,而是从列出的 realm 中加载用户。参见将授权委托给另一个 realm。
claims.dn
- (静态) 包含用户可分辨名称 (DN) 的 JWT 声明的名称,DN 唯一标识用户或组。
claim_patterns.dn
- (静态) 接受与
claim_patterns.principal
相同的 Java 正则表达式,但用于dn
属性。 claims.groups
- (静态) 包含用户组的 JWT 声明的名称,例如
groups
和roles
。 claim_patterns.group
- (静态) 接受与
claim_patterns.principal
相同的 Java 正则表达式,但用于group
属性。 claims.mail
- (静态) 包含用户电子邮件地址的 JWT 声明的名称。
claim_patterns.mail
- (静态) 接受与
claim_patterns.principal
相同的 Java 正则表达式,但用于mail
属性。 claims.name
- (静态) 包含用户用户名的 JWT 声明的名称。
claim_patterns.name
- (静态) 接受与
claim_patterns.principal
相同的 Java 正则表达式,但用于name
属性。 claims.principal
- (静态) 包含用户主体(用户名)的 JWT 声明的名称,例如
sub
、name
、email
和dn
。
claim_patterns.principal
- (静态) 一个可选的 Java 正则表达式,在应用于用户的
principal
属性之前,会与由claims.principal
指定的 JWT 声明进行匹配。值必须匹配此模式,并且第一个捕获组的值将用作 principal。例如,^([^@]+)@example\\.com$
匹配来自example.com
域的电子邮件地址,并使用本地部分作为 principal。另一个示例是sub
,它可能不需要模式设置。 client_authentication.type
-
(静态) 指定是使用
shared_secret
还是none
来验证入站客户端请求。如果此值为shared_secret
,则使用必须与预配置的秘密值匹配的 HTTP 请求头来验证客户端。客户端必须在每个请求的ES-Client-Authentication
头中提供此共享秘密。如果此值为none
,则忽略请求头ES-Client-Authentication
。默认为shared_secret
。建议启用客户端身份验证。如果 JWT bearer 令牌与其他客户端或服务共享,客户端身份验证会限制哪些客户端或服务被允许将这些 JWT 提交给 Elasticsearch。
client_authentication.shared_secret
- (安全设置, 可重新加载) 用于客户端身份验证的秘密值字符串。如果
client_authentication.type
为shared_secret
,则此项必需。 client_authentication.rotation_grace_period
- (静态) 设置轮换
client_authentication.shared_secret
后其保持有效期的宽限期。可以通过更新 keystore 然后调用reload API来轮换client_authentication.shared_secret
。默认为1m
。 http.connect_timeout
- (静态) 设置用于从远程 URL 获取 JSON Web Key Set 的 HTTP 客户端的超时时间。值为零表示不使用超时。默认为
5s
。 http.connection_read_timeout
- (静态) 指定从连接管理器请求连接时使用的 HTTP 超时时间。默认为
5s
。 http.socket_timeout
- (静态) 指定 HTTP 客户端等待两次连续数据包之间不活动状态的最大套接字超时时间 (SO_TIMEOUT)。默认为
5s
。 http.max_connections
- (静态) 指定所有端点允许的最大连接数。
http.max_endpoint_connections
- (静态) 指定每个端点允许的最大连接数。
jwt.cache.size
- (静态) 指定 JWT 缓存条目的最大数量。如果客户端为每个请求使用不同的 JWT,请设置为
0
以禁用 JWT 缓存。默认为100000
。 jwt.cache.ttl
- (静态) 指定缓存 JWT 条目的存活时间(TTL)。仅当客户端身份验证成功(或禁用)时,JWT 才能被缓存。使用标准的 Elasticsearch 时间单位。如果客户端为每个请求使用不同的 JWT,请设置为
0
以禁用 JWT 缓存。默认为20m
。 pkc_jwkset_path
- (静态) 包含 JWT Realm 用于验证令牌签名的公钥材料的 JSON Web Key Set (JWKS) 文件名或 URL。如果值不以
https
开头,则被视为文件名。文件名相对于 Elasticsearch 配置目录进行解析。如果提供 URL,则必须以https://
开头(不支持http://
)。Elasticsearch 会自动缓存 JWK Set,并在签名验证失败时尝试刷新 JWK Set,因为这可能表明 JWT Provider 已轮换了签名密钥。 hmac_jwkset
- (安全设置) JSON Web Key Set (JWKS) 的内容,包括 JWT realm 用于验证令牌签名的秘密密钥。此格式支持多个密钥和可选属性,优先于
hmac_key
设置。不能与hmac_key
设置同时使用。请参阅配置 Elasticsearch 以使用 JWT realm。 hmac_key
- (安全设置) 单个 JSON Web Key (JWK) 的内容,包括 JWT realm 用于验证令牌签名的秘密密钥。此格式仅支持单个密钥且不包含属性,不能与
hmac_jwkset
设置同时使用。此格式兼容 OIDC。HMAC 密钥必须是 UNICODE 字符串,其中密钥字节是该 UNICODE 字符串的 UTF-8 编码。优先使用hmac_jwkset
设置。请参阅配置 Elasticsearch 以使用 JWT realm。 populate_user_metadata
- (静态) 指定是否使用 JWT 声明提供的值来填充 Elasticsearch 用户的元数据。默认为
true
。
以下设置可用于配置 SSL 以从远程 URL 获取 JSON Web Key Set。
这些设置仅用于 Elasticsearch 与 JWT 颁发者之间的后台通信。
ssl.key
-
(静态) 包含私钥的PEM编码文件的路径。
如果需要HTTP客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。 ssl.key_passphrase
-
(静态) 用于解密私钥的密码。由于密钥可能未加密,此值为可选。
自 7.17.0 版本弃用推荐改用
ssl.secure_key_passphrase
。不能同时使用此设置和
ssl.secure_key_passphrase
。 ssl.secure_key_passphrase
-
(安全) 用于解密私钥的密码。由于密钥可能未加密,此值为可选。
不能同时使用此设置和
ssl.key_passphrase
。 ssl.certificate
-
(静态) 指定与密钥关联的PEM编码证书(或证书链)的路径。
仅当设置了
ssl.key
时,才能使用此设置。 ssl.certificate_authorities
-
(静态) 应信任的PEM编码证书文件的路径列表。
不能同时使用此设置和
ssl.truststore.path
。 ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是Java密钥库(jks)或PKCS#12文件。不能同时使用此设置和
ssl.key
。 ssl.keystore.type
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以“.p12”、“.pfx”或“.pkcs12”结尾,则此设置默认为PKCS12
。否则,默认为jks
。 ssl.keystore.password
-
(静态) 密钥库的密码。
自 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
-
(静态) 包含受信任证书的密钥库的路径。它必须是Java密钥库(jks)或PKCS#12文件。
不能同时使用此设置和
ssl.certificate_authorities
。 ssl.truststore.type
- (静态) 信任库文件的格式。它必须是
jks
或PKCS12
。如果文件名以“.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.password
。 ssl.verification_mode
-
(静态) 控制证书的验证。
默认为
full
。有效值:
full
: 验证提供的证书是否:颁发日期在not_before
和not_after
日期范围内;链到受信任的证书颁发机构(CA);具有与证书中名称匹配的hostname
或IP地址。certificate
: 验证提供的证书并验证其是否由受信任的机构(CA)签名,但不检查证书的hostname
。none
: 不执行任何证书验证。
重要将证书验证设置为
none
会禁用SSL/TLS的许多安全优势,这非常危险。仅在Elastic支持人员指示将其作为临时诊断机制以尝试解决TLS错误时才设置此值。 ssl.supported_protocols
-
(静态) 支持的协议及其版本。有效协议:
SSLv2Hello
、SSLv3
、TLSv1
、TLSv1.1
、TLSv1.2
、TLSv1.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.enabled
为true
,则不能使用SSLv2Hello
或SSLv3
。请参阅FIPS 140-2。 ssl.cipher_suites
-
(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为
TLS_AES_256_GCM_SHA384
、TLS_AES_128_GCM_SHA256
、TLS_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
、TLS_RSA_WITH_AES_256_GCM_SHA384
、TLS_RSA_WITH_AES_128_GCM_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA256
、TLS_RSA_WITH_AES_128_CBC_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA
、TLS_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
-
(静态) 支持的协议及其版本。有效协议:
SSLv2Hello
、SSLv3
、TLSv1
、TLSv1.1
、TLSv1.2
、TLSv1.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.enabled
为true
,则不能使用SSLv2Hello
或SSLv3
。请参阅FIPS 140-2。 xpack.security.http.ssl.client_authentication
- (静态) 控制服务器在请求客户端连接证书方面的行为。有效值包括
required
、optional
和none
。required
强制客户端必须提供证书,而optional
请求客户端证书但客户端并非必须提供。默认为none
。 xpack.security.http.ssl.verification_mode
-
(静态)
xpack.security.http.ssl
中的 SSL 设置控制 TLS 的*服务器上下文*,该上下文定义 TLS 连接的设置。不鼓励在 TLS *服务器*中使用verification_mode
。定义如何验证 TLS 连接中另一方提供的证书。默认为
full
。有效值:
full
: 验证提供的证书是否:颁发日期在not_before
和not_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_SHA384
、TLS_AES_128_GCM_SHA256
、TLS_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
、TLS_RSA_WITH_AES_256_GCM_SHA384
、TLS_RSA_WITH_AES_128_GCM_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA256
、TLS_RSA_WITH_AES_128_CBC_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA
、TLS_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
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以“.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
-
(静态) 支持的协议及其版本。有效协议:
SSLv2Hello
、SSLv3
、TLSv1
、TLSv1.1
、TLSv1.2
、TLSv1.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.enabled
为true
,则不能使用SSLv2Hello
或SSLv3
。请参阅FIPS 140-2。 xpack.security.transport.ssl.client_authentication
- (静态) 控制服务器在请求客户端连接证书方面的行为。有效值包括
required
、optional
和none
。required
强制客户端必须提供证书,而optional
请求客户端证书但客户端并非必须提供。默认为required
。 xpack.security.transport.ssl.verification_mode
-
(静态) 定义如何验证 TLS 连接中另一方提供的证书。
默认为
full
。有效值:
full
: 验证提供的证书是否:颁发日期在not_before
和not_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_SHA384
、TLS_AES_128_GCM_SHA256
、TLS_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
、TLS_RSA_WITH_AES_256_GCM_SHA384
、TLS_RSA_WITH_AES_128_GCM_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA256
、TLS_RSA_WITH_AES_128_CBC_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA
、TLS_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
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以“.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
-
(静态) 支持的协议及其版本。有效协议:
SSLv2Hello
、SSLv3
、TLSv1
、TLSv1.1
、TLSv1.2
、TLSv1.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.enabled
为true
,则不能使用SSLv2Hello
或SSLv3
。请参阅FIPS 140-2。 xpack.security.remote_cluster_server.ssl.client_authentication
- (静态) 控制服务器在请求客户端连接证书方面的行为。有效值包括
required
、optional
和none
。required
强制客户端必须提供证书,而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_before
和not_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_SHA384
、TLS_AES_128_GCM_SHA256
、TLS_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
、TLS_RSA_WITH_AES_256_GCM_SHA384
、TLS_RSA_WITH_AES_128_GCM_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA256
、TLS_RSA_WITH_AES_128_CBC_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA
、TLS_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
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以“.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
-
(静态) 支持的协议及其版本。有效协议:
SSLv2Hello
、SSLv3
、TLSv1
、TLSv1.1
、TLSv1.2
、TLSv1.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.enabled
为true
,则不能使用SSLv2Hello
或SSLv3
。请参阅FIPS 140-2。 xpack.security.remote_cluster_client.ssl.verification_mode
-
(静态) 定义如何验证 TLS 连接中另一方提供的证书。
默认为
full
。有效值:
full
: 验证提供的证书是否:颁发日期在not_before
和not_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_SHA384
、TLS_AES_128_GCM_SHA256
、TLS_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
、TLS_RSA_WITH_AES_256_GCM_SHA384
、TLS_RSA_WITH_AES_128_GCM_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA256
、TLS_RSA_WITH_AES_128_CBC_SHA256
、TLS_RSA_WITH_AES_256_CBC_SHA
、TLS_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
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以“.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 次迭代。 |