Elasticsearch 中的安全设置
编辑Elasticsearch 中的安全设置
编辑您可以使用 xpack.security
设置来启用匿名访问和执行消息身份验证,设置文档和字段级安全,配置 Realm,使用 SSL 加密通信,以及审核安全事件。
所有这些设置都可以添加到 elasticsearch.yml
配置文件中,但安全设置除外,安全设置需要添加到 Elasticsearch 密钥库中。有关创建和更新 Elasticsearch 密钥库的更多信息,请参阅安全设置。
通用安全设置
编辑-
xpack.security.enabled
-
(静态) 默认为
true
,这将在节点上启用 Elasticsearch 安全功能。必须启用此设置才能使用 Elasticsearch 的身份验证、授权和审核功能。
如果设置为
false
,则安全功能将被禁用,不建议这样做。它还会影响连接到此 Elasticsearch 实例的所有 Kibana 实例;您无需在这些kibana.yml
文件中禁用安全功能。有关在特定 Kibana 实例中禁用安全功能的更多信息,请参阅Kibana 安全设置。 -
xpack.security.autoconfiguration.enabled
-
如果设置为
false
,则安全自动配置将被禁用,不建议这样做。禁用后,首次启动 Elasticsearch 时不会自动配置安全,这意味着您必须手动配置安全。 -
xpack.security.enrollment.enabled
-
(静态) 默认为
false
。控制(节点和 Kibana)注册到已自动配置安全的本地节点。设置为true
时,本地节点可以生成新的注册令牌。如果现有令牌仍然有效,则可以使用它们进行注册。安全自动配置过程会将此项设置为
true
,除非管理员在启动 Elasticsearch 之前将其设置为false
。 -
xpack.security.hide_settings
- (静态) 一个逗号分隔的设置列表,这些设置将从集群节点信息 API 的结果中省略。您可以使用通配符在列表中包含多个设置。例如,以下值会隐藏 ad1 active_directory realm 的所有设置:
xpack.security.authc.realms.active_directory.ad1.*
。API 已经省略了所有ssl
设置、bind_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
- (静态) 匿名用户的用户名(主体)。默认为
_es_anonymous_user
。 -
xpack.security.authc.anonymous.roles
- (静态) 要与匿名用户关联的角色。必需。
-
xpack.security.authc.anonymous.authz_exception
- (静态) 如果
true
,如果匿名用户没有请求操作的适当权限,则会返回 HTTP 403 响应。不会提示用户提供凭证来访问请求的资源。如果设置为false
,则会返回 HTTP 401 响应,并且用户可以提供具有适当权限的凭证以获得访问权限。默认为true
。
Automata 设置
编辑在安全功能接受通配符模式(例如,角色中的索引模式、角色映射 API 中的组匹配)的地方,每个模式都会被编译成一个 Automaton。可以使用以下设置来控制此行为。
-
xpack.security.automata.max_determinized_states
- (静态) 单个模式可以创建的自动机状态数的上限。这可以防止过于困难(例如,指数级困难)的模式。默认为
100,000
。 -
xpack.security.automata.cache.enabled
- (静态) 是否缓存已编译的自动机。编译自动机可能需要大量 CPU,并可能减慢某些操作的速度。缓存可以减少需要编译自动机的频率。默认为
true
。 -
xpack.security.automata.cache.size
- (静态) 自动机缓存中要保留的最大项数。默认为
10,000
。 -
xpack.security.automata.cache.ttl
- (静态) 在自动机缓存中保留一项的时间长度(基于最近的使用情况)。默认为
48h
(48 小时)。
文档和字段级安全设置
编辑您可以在 elasticsearch.yml
中设置以下文档和字段级安全设置。有关更多信息,请参阅设置字段和文档级别安全。
-
xpack.security.dls_fls.enabled
- (静态) 设置为
false
以防止配置文档和字段级安全。默认为true
。 -
xpack.security.dls.bitset.cache.ttl
- (静态) 文档级别安全的缓存
BitSet
条目的生存时间。文档级别安全查询可能依赖于 Lucene BitSet 对象,并且这些对象会自动缓存以提高性能。默认情况下,未使用的条目将在2h
(2 小时)后过期。 -
xpack.security.dls.bitset.cache.size
- (静态) 文档级别安全的缓存
BitSet
条目的最大内存使用量。文档级别安全查询可能依赖于 Lucene BitSet 对象,并且这些对象会自动缓存以提高性能。可以配置为原始字节数(例如200mb
或1g
)或节点 JVM 堆内存的百分比(例如5%
)。当超出默认值时,最近最少使用的条目将被逐出。默认为分配给节点的堆的10%
。
令牌服务设置
编辑您可以在 elasticsearch.yml
中设置以下令牌服务设置。
API 密钥服务设置
编辑您可以在 elasticsearch.yml
中设置以下 API 密钥服务设置。
-
xpack.security.authc.api_key.enabled
- (静态) 设置为
false
以禁用内置 API 密钥服务。默认为true
。 -
xpack.security.authc.api_key.cache.ttl
- (静态) 缓存的 API 密钥条目的生存时间。API 密钥 ID 及其 API 密钥的哈希值会在此时间段内缓存。使用标准的 Elasticsearch 时间单位指定时间段。默认为
1d
。 -
xpack.security.authc.api_key.cache.max_keys
- (静态) 缓存中可以同时存在的 API 密钥条目的最大数量。默认为 10,000。
-
xpack.security.authc.api_key.cache.hash_algo
- (静态,专家) 用于内存中缓存的 API 密钥凭证的哈希算法。有关可能的值,请参阅表 1,“缓存哈希算法”。默认为
ssha256
。
-
xpack.security.authc.api_key.delete.retention_period
- (动态) 早于保留期的失效或过期的 API 密钥有资格被删除。默认为
7d
。
集群节点之间的大实时时钟不一致可能会导致评估 API 密钥保留期时出现问题。也就是说,如果使 API 密钥失效的节点上的时钟与执行删除的节点上的时钟明显不同,则密钥的保留时间可能会长于或短于配置的保留期。
-
xpack.security.authc.api_key.delete.interval
-
(动态,专家) 集群节点会计划自动删除早于保留期的失效或过期的 API 密钥。此设置控制两个此类删除作业之间的最短时间间隔。默认为
24h
。这是一个低级设置,目前控制每个节点触发的删除作业之间的间隔,而不是整个集群的间隔。
-
xpack.security.authc.api_key.delete.timeout
- (静态,专家) 设置内部搜索和删除调用的超时时间。
-
xpack.security.authc.api_key.hashing.algorithm
- (静态)指定用于保护 API 密钥凭据的哈希算法。请参阅表 2,“密码哈希算法”。默认为
pbkdf2
。
安全域设置
编辑您可以在 elasticsearch.yml
中的 xpack.security.authc.domains
命名空间中配置安全域设置。
例如
Realm 设置
编辑您可以在 elasticsearch.yml
中的 xpack.security.authc.realms
命名空间中配置 realm 设置。
例如
xpack.security.authc.realms: native.realm1: order: 0 ... ldap.realm2: order: 1 ... active_directory.realm3: order: 2 ... ...
指定 realm 的类型(例如, |
|
指定 realm 在 realm 链中的优先级。此信息是必需的。 |
有效设置因 realm 类型而异。有关更多信息,请参阅用户身份验证。
适用于所有 realm 的设置
编辑原生 realm 设置
编辑除了适用于所有 realm 的设置之外,您还可以指定以下可选设置
-
cache.ttl
- (静态)缓存的用户条目的生存时间 (TTL)。用户及其凭据的哈希值将在此时间段内缓存。使用标准的 Elasticsearch 时间单位指定时间段。默认为
20m
。 -
cache.max_users
- (静态)缓存中在任何给定时间可以存在的最大用户条目数。默认为 100,000。
-
cache.hash_algo
- (静态,专家)用于内存中缓存的用户凭据的哈希算法。有关可能的值,请参阅表 1,“缓存哈希算法”。默认为
ssha256
。 -
authentication.enabled
- (静态)如果设置为
false
,则禁用此 realm 中的身份验证支持,使其仅支持用户查找。(请参阅以其他用户身份运行和授权 realm功能)。默认为true
。
文件 realm 设置
编辑除了适用于所有 realm 的设置之外,您还可以指定以下设置
-
cache.ttl
- (静态)缓存的用户条目的生存时间 (TTL)。用户及其凭据的哈希值将在此配置的时间段内缓存。默认值为
20m
。使用标准的 Elasticsearch 时间单位指定值。默认值为20m
。 -
cache.max_users
- (静态)缓存中在给定时间可以存在的最大用户条目数。默认为 100,000。
-
cache.hash_algo
- (静态,专家)用于内存中缓存的用户凭据的哈希算法。请参阅表 1,“缓存哈希算法”。默认为
ssha256
。 -
authentication.enabled
- (静态)如果设置为
false
,则禁用此 realm 中的身份验证支持,使其仅支持用户查找。(请参阅以其他用户身份运行和授权 realm功能)。默认为true
。
LDAP realm 设置
编辑除了适用于所有 realm 的设置之外,您还可以指定以下设置
-
url
-
(静态)一个或多个
ldap[s]://<服务器>:<端口>
格式的 LDAP URL。必需。要提供多个 URL,请使用 YAML 数组 (
["ldap://server1:636", "ldap://server2:636"]
) 或逗号分隔的字符串 ("ldap://server1:636, ldap://server2:636"
)。虽然两者都支持,但您不能混合使用
ldap
和ldaps
协议。 -
load_balance.type
- (静态)定义多个 LDAP URL 时要使用的行为。有关支持的值,请参阅负载平衡和故障转移类型。默认为
failover
。 -
load_balance.cache_ttl
- (静态)当使用
dns_failover
或dns_round_robin
作为负载平衡类型时,此设置控制缓存 DNS 查找的时间量。默认为1h
。 -
bind_dn
- (静态)用于绑定到 LDAP 并执行搜索的用户的 DN。仅适用于用户搜索模式。如果未指定,将尝试匿名绑定。默认为空。由于其潜在的安全影响,
bind_dn
不会通过节点信息 API 公开。 -
bind_password
- (静态) [6.3] 在 6.3 中已弃用。 使用
secure_bind_password
代替。用于绑定到 LDAP 目录的用户的密码。默认为空。由于其潜在的安全影响,bind_password
不会通过节点信息 API 公开。 -
secure_bind_password
- (安全,可重载)用于绑定到 LDAP 目录的用户的密码。默认为空。
-
user_dn_templates
- (静态)将用户名替换为字符串
{0}
的 DN 模板。此设置是多值的;您可以指定多个用户上下文。在用户模板模式下运行是必需的。如果指定了user_search.base_dn
,则此设置无效。有关不同模式的更多信息,请参阅LDAP 用户身份验证。 -
authorization_realms
-
(静态)应咨询以进行委派授权的 realm 的名称。如果使用此设置,则 LDAP realm 不执行角色映射,而是从列出的 realm 加载用户。将按照此列表中定义的顺序咨询引用的 realm。请参阅将授权委托给另一个 realm。
如果指定了任何以
user_search
开头的设置,则会忽略user_dn_templates
设置。 -
user_group_attribute
- (静态)指定要检查用户组隶属关系的属性。如果指定了任何
group_search
设置,则会忽略此设置。默认为memberOf
。 -
user_full_name_attribute
- (静态)指定要检查用户的全名的属性。默认为
cn
。 -
user_email_attribute
- (静态)指定要检查用户的电子邮件地址的属性。默认为
mail
。 -
user_search.base_dn
- (静态)指定要搜索用户的容器 DN。在用户搜索模式下运行是必需的。如果指定了
user_dn_templates
,则此设置无效。有关不同模式的更多信息,请参阅LDAP 用户身份验证。 -
user_search.scope
- (静态)用户搜索的范围。有效值为
sub_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] 在 5.6 中已弃用。 使用
user_search.filter
代替。与请求一起发送的用户名匹配的属性。默认为uid
。 -
user_search.pool.enabled
- (静态)启用或禁用用户搜索的连接池。如果设置为
false
,则每次搜索都会创建一个新连接。当设置bind_dn
时,默认值为true
。 -
user_search.pool.size
- (静态)连接池中允许的最大 LDAP 服务器连接数。默认为
20
。 -
user_search.pool.initial_size
- (静态)启动时要创建到 LDAP 服务器的初始连接数。默认为
0
。如果 LDAP 服务器关闭,则大于0
的值可能会导致启动失败。 -
user_search.pool.health_check.enabled
- (静态)启用或禁用连接池中 LDAP 连接的运行状况检查。连接会在后台按指定的时间间隔进行检查。默认为
true
。 -
user_search.pool.health_check.dn
- (静态)作为运行状况检查的一部分检索的专有名称。如果存在,则默认为
bind_dn
的值;如果不存在,则回退到user_search.base_dn
。 -
user_search.pool.health_check.interval
- (静态)在池中执行连接后台检查的时间间隔。默认为
60s
。 -
group_search.base_dn
- (静态) 用于搜索用户所属组的容器 DN。如果此元素不存在,Elasticsearch 将搜索用户上设置的
user_group_attribute
指定的属性,以确定组成员身份。 -
group_search.scope
- (静态) 指定组搜索应为
sub_tree
、one_level
还是base
。one_level
仅搜索直接包含在base_dn
中的对象。sub_tree
搜索base_dn
下包含的所有对象。base
指定base_dn
是一个组对象,并且它是唯一被考虑的组。默认为sub_tree
。 -
group_search.filter
- (静态) 指定用于查找组的过滤器。如果未设置,则 realm 将搜索带有属性
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 服务器返回的引荐。引荐是服务器返回的 URL,用于继续 LDAP 操作(例如,搜索)。默认为
true
。 -
metadata
- (静态) 应从 LDAP 服务器加载并存储在已验证用户的元数据字段中的其他 LDAP 属性列表。
-
timeout.tcp_connect
- (静态) 建立 LDAP 连接的 TCP 连接超时时间。末尾的
s
表示秒,ms
表示毫秒。默认为5s
(5 秒)。 -
timeout.tcp_read
- (静态) [7.7] 在 7.7 中已弃用。 建立 LDAP 连接后的 TCP 读取超时时间。这等效于
timeout.response
,并且已弃用,不能同时使用。末尾的s
表示秒,ms
表示毫秒。 -
timeout.response
- (静态) 等待 LDAP 服务器响应的时间间隔。末尾的
s
表示秒,ms
表示毫秒。默认为timeout.ldap_search
的值。 -
timeout.ldap_search
- (静态) LDAP 搜索的超时时间。该值在请求中指定,并由接收 LDAP 服务器强制执行。末尾的
s
表示秒,ms
表示毫秒。默认为5s
(5 秒)。 -
ssl.key
-
(静态) 包含私钥的 PEM 编码文件的路径。
如果需要 HTTP 客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。如果 LDAP 服务器需要客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。 -
ssl.key_passphrase
-
(静态) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.secure_key_passphrase
。不能同时使用此设置和
ssl.secure_key_passphrase
。 -
ssl.secure_key_passphrase
- (安全) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。
-
ssl.certificate
-
(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。
仅当设置了
ssl.key
时,才能使用此设置。此证书在客户端连接时呈现给客户端。
-
ssl.certificate_authorities
-
(静态) 应信任的 PEM 编码证书文件的路径列表。
不能同时使用此设置和
ssl.truststore.path
。不能同时使用此设置和
ssl.truststore.path
。 -
ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
ssl.key
。不能同时使用此设置和
ssl.key
。 -
ssl.keystore.type
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾,则此设置默认为PKCS12
。否则,它默认为jks
。 -
ssl.keystore.password
- (静态) 密钥库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_password
。 -
ssl.keystore.secure_password
- (安全) 密钥库的密码。
-
ssl.keystore.key_password
-
(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_key_password
。不能同时使用此设置和
ssl.keystore.secure_password
。 -
ssl.keystore.secure_key_password
- (静态) 密钥库中密钥的密码。默认为密钥库密码。
-
ssl.truststore.path
-
(静态) 包含要信任的证书的密钥库路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。
不能同时使用此设置和
ssl.certificate_authorities
。不能同时使用此设置和
ssl.certificate_authorities
。 -
ssl.truststore.password
-
(静态) 信任库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.truststore.secure_password
。不能同时使用此设置和
ssl.truststore.secure_password
。 -
ssl.truststore.secure_password
- (安全) 信任库的密码。
-
ssl.truststore.type
- (静态) 信任库文件的格式。它必须是
jks
或PKCS12
。如果文件名以 ".p12"、".pfx" 或 "pkcs12" 结尾,则默认为PKCS12
。否则,它默认为jks
。 -
ssl.verification_mode
-
(静态) 指示使用
ldaps
时为防止中间人攻击和证书伪造而进行的验证类型。有效值
-
full
- 验证提供的证书:具有
not_before
和not_after
日期范围内的颁发日期;链接到受信任的证书颁发机构 (CA);具有与证书中的名称匹配的hostname
或 IP 地址。 -
certificate
- 验证提供的证书,并验证它是否由受信任的机构 (CA) 签名,但不检查证书的
hostname
。 -
none
-
不执行证书验证。
将证书验证设置为
none
会禁用 SSL/TLS 的许多安全优势,这是非常危险的。仅在 Elastic 支持指示您在尝试解决 TLS 错误时将其作为临时诊断机制时,才设置此值。
默认为
full
。 -
-
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
-
(静态) 指定与 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
- (静态) 指定缓存用户条目的生存时间。用户及其凭据的哈希值会在此期间缓存。使用标准的 Elasticsearch 时间单位。默认为
20m
。 -
cache.max_users
- (静态) 指定缓存可以包含的最大用户条目数。默认为
100000
。 -
cache.hash_algo
- (静态,专家) 指定用于内存缓存用户凭据的哈希算法。请参阅 表 1,“缓存哈希算法”。默认为
ssha256
。 -
authentication.enabled
- (静态)如果设置为
false
,则禁用此 realm 中的身份验证支持,使其仅支持用户查找。(请参阅以其他用户身份运行和授权 realm功能)。默认为true
。
Active Directory 领域设置
编辑除了适用于所有 realm 的设置之外,您还可以指定以下设置
-
url
-
(静态) 一个或多个
ldap[s]://<server>:<port>
格式的 LDAP URL。默认为ldap://<domain_name>:389
。当使用 SSL/TLS 连接或使用自定义端口时,此设置是必需的。要提供多个 URL,请使用 YAML 数组 (
["ldap://server1:636", "ldap://server2:636"]
) 或逗号分隔的字符串 ("ldap://server1:636, ldap://server2:636"
)。虽然两者都支持,但您不能混合使用
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
- (静态) [6.3] 在 6.3 中已弃用。 请改用
secure_bind_password
。用于绑定到 Active Directory 的用户的密码。默认为空。由于其潜在的安全影响,bind_password
不会通过 节点信息 API 公开。 -
secure_bind_password
- (安全,可重新加载) 用于绑定到 Active Directory 的用户的密码。默认为空。
-
unmapped_groups_as_roles
- (静态) 如果设置为
true
,则任何未映射的 Active Directory 组的名称将用作角色名称并分配给用户。当组未在任何角色映射文件中引用时,该组被认为是未映射的。不考虑基于 API 的角色映射。默认为false
。 -
files.role_mapping
- (静态) YAML 角色映射配置文件的位置。默认为
ES_PATH_CONF/role_mapping.yml
。 -
user_search.base_dn
- (静态) 搜索用户的上下文。默认为 Active Directory 域的根目录。
-
user_search.scope
- (静态) 指定用户搜索应为
sub_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] 在 7.7 中已弃用。 建立 LDAP 连接后的 TCP 读取超时时间段。这等效于
timeout.response
并且已弃用,它们不能同时使用。末尾的s
表示秒,ms
表示毫秒。默认为timeout.ldap_search
的值。 -
timeout.response
- (静态) 等待 AD 服务器响应的时间间隔。末尾的
s
表示秒,ms
表示毫秒。默认为timeout.ldap_search
的值。 -
timeout.ldap_search
- (静态) LDAP 搜索的超时时间。该值在请求中指定,并由接收 LDAP 服务器强制执行。末尾的
s
表示秒,ms
表示毫秒。默认为5s
(5 秒)。 -
ssl.certificate
-
(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。
仅当设置了
ssl.key
时,才能使用此设置。此证书在客户端连接时呈现给客户端。
-
ssl.certificate_authorities
-
(静态) 应信任的 PEM 编码证书文件的路径列表。
不能同时使用此设置和
ssl.truststore.path
。不能同时使用此设置和
ssl.truststore.path
。 -
ssl.key
-
(静态) 包含私钥的 PEM 编码文件的路径。
如果需要 HTTP 客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。如果 Active Directory 服务器需要客户端身份验证,它将使用此文件。您不能同时使用此设置和
ssl.keystore.path
。 -
ssl.key_passphrase
-
(静态) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.secure_key_passphrase
。不能同时使用此设置和
ssl.secure_key_passphrase
。 -
ssl.secure_key_passphrase
- (安全) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。
-
ssl.keystore.key_password
-
(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_key_password
。不能同时使用此设置和
ssl.keystore.secure_password
。 -
ssl.keystore.secure_key_password
- (安全) 密钥库中密钥的密码。默认为密钥库密码。
-
ssl.keystore.password
- (静态) 密钥库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_password
。 -
ssl.secure_keystore.password
- (安全) 密钥库的密码。
-
ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
ssl.key
。不能同时使用此设置和
ssl.key
。 -
ssl.keystore.type
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾,则此设置默认为PKCS12
。否则,它默认为jks
。 -
ssl.truststore.password
-
(静态) 信任库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.truststore.secure_password
。不能同时使用此设置和
ssl.truststore.secure_password
。 -
ssl.truststore.secure_password
- (安全) 信任库的密码。
-
ssl.truststore.path
-
(静态) 包含要信任的证书的密钥库路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。
不能同时使用此设置和
ssl.certificate_authorities
。不能同时使用此设置和
ssl.certificate_authorities
。 -
ssl.truststore.type
- (静态) 信任库文件的格式。它必须是
jks
或PKCS12
。如果文件名以 ".p12"、".pfx" 或 "pkcs12" 结尾,则默认为PKCS12
。否则,它默认为jks
。 -
ssl.verification_mode
-
(静态) 指示使用
ldaps
时为防止中间人攻击和证书伪造而进行的验证类型。有效值
-
full
- 验证提供的证书:具有
not_before
和not_after
日期范围内的颁发日期;链接到受信任的证书颁发机构 (CA);具有与证书中的名称匹配的hostname
或 IP 地址。 -
certificate
- 验证提供的证书,并验证它是否由受信任的机构 (CA) 签名,但不检查证书的
hostname
。 -
none
-
不执行证书验证。
将证书验证设置为
none
会禁用 SSL/TLS 的许多安全优势,这是非常危险的。仅在 Elastic 支持指示您在尝试解决 TLS 错误时将其作为临时诊断机制时,才设置此值。
默认为
full
。 -
-
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
,则禁用此 realm 中的身份验证支持,使其仅支持用户查找。(请参阅以其他用户身份运行和授权 realm功能)。默认为true
。 -
follow_referrals
- (静态) 如果设置为
true
,Elasticsearch 将遵循 LDAP 服务器返回的引用。引用是服务器返回的 URL,用于继续 LDAP 操作(例如search
)。默认为true
。
PKI 领域设置
编辑除了适用于所有 realm 的设置之外,您还可以指定以下设置
-
username_pattern
- (静态) 用于从证书 DN 中提取用户名的正则表达式模式。用户名用于审计和日志记录。用户名还可以与角色映射 API和授权委派一起使用。第一个匹配组用作用户名。默认为
CN=(.*?)(?:,|$)
。 -
certificate_authorities
- (静态) 应该用于验证用户证书是否可信的 PEM 证书文件路径列表。默认为为 SSL 配置的受信任证书。此设置不能与
truststore.path
一起使用。 -
truststore.algorithm
- (静态) truststore 的算法。默认为
SunX509
。 -
truststore.password
-
(静态) 信任库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.truststore.secure_password
。不能同时使用此设置和
ssl.truststore.secure_password
。
如果设置了 truststore.path
,则此设置是必需的。
-
truststore.secure_password
- (安全) 信任库的密码。
-
truststore.path
- (静态) 要使用的 truststore 的路径。默认为为 SSL 配置的受信任证书。此设置不能与
certificate_authorities
一起使用。 -
files.role_mapping
- (静态) 指定位置的YAML 角色映射配置文件。默认为
ES_PATH_CONF/role_mapping.yml
。 -
authorization_realms
- (静态) 应该为委派授权咨询的 realm 的名称。如果使用此设置,则 PKI realm 不会执行角色映射,而是从列出的 realm 加载用户。请参阅将授权委派给另一个 realm。
-
cache.ttl
- (静态) 指定缓存用户条目的生存时间。用户及其凭据的哈希值将在此期间缓存。使用标准的 Elasticsearch 时间单位)。默认为
20m
。 -
cache.max_users
- (静态) 指定缓存可以包含的最大用户条目数。默认为
100000
。 -
delegation.enabled
- (静态) 通常,为了让客户端通过 PKI realm 进行身份验证,它们必须直接连接到 Elasticsearch。也就是说,它们不能通过终止 TLS 连接的代理。为了允许 可信 和 智能 的代理(例如 Kibana)位于 Elasticsearch 之前并终止 TLS 连接,但仍然允许客户端在此 realm 中通过 Elasticsearch 进行身份验证,您需要将其切换为
true
。默认为false
。如果启用了委派,则必须定义truststore.path
或certificate_authorities
设置。有关更多详细信息,请参阅为 PKI realm 配置身份验证委派。
SAML realm 设置
编辑除了对所有 realm 有效的设置之外,您还可以指定以下设置。
-
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 资源以 realm 的idp.metadata.http.refresh
和idp.metadata.http.minimum_refresh
设置确定的频率进行轮询。如果元数据资源是从文件加载的,则该文件必须在节点启动时存在,如果不存在,则节点将无法启动。如果资源是通过 HTTPS 加载的,则(默认情况下)节点将容忍加载资源失败 - 节点将启动并继续轮询 URL 以进行更新。受影响的 SAML realm 将无法验证用户身份,直到问题得到解决。要强制节点在元数据不可用时失败,请将
idp.metadata.http.fail_on_error
设置为true
。
-
idp.metadata.http.fail_on_error
- (静态) 如果设置为
true
,则 realm 将在启动时失败(并阻止节点启动),如果它尝试通过 HTTPS 加载元数据并且该元数据不可用。如果设置为false
(默认值),则节点将启动,但受影响的 SAML realm 将不支持用户身份验证,直到元数据可以成功加载。如果元数据是从文件加载的,则忽略此设置。
-
idp.metadata.http.refresh
-
(静态) 控制检查
https
元数据更改的频率。默认为1h
(1 小时)。在某些情况下,Elasticsearch 可能会确定需要更频繁地检查元数据。如果先前尝试加载元数据时遇到错误,或者元数据表明它将在小于配置的刷新间隔内过期,则可能会发生这种情况。在这些情况下,Elasticsearch 将更频繁地进行轮询,但频率永远不会高于
idp.metadata.http.minimum_refresh
。如果有尝试针对尚未成功加载元数据的 realm 进行身份验证,则该 realm 可能会尝试在配置的轮询频率之外加载元数据。
-
idp.metadata.http.minimum_refresh
- (静态) 控制检查
https
元数据更改的最低频率。在正常操作中,Elasticsearch 将使用idp.metadata.http.refresh
的值作为轮询间隔。但是,在某些情况下,Elasticsearch 可能会确定需要更频繁地进行轮询。在这些情况下,minimum_refresh
将设置检查元数据的最低频率。默认为5m
(5 分钟),并且不得设置为大于idp.metadata.http.refresh
的值。
-
idp.use_single_logout
- (静态) 指示是否利用身份提供程序的单点注销服务(如果 IdP 元数据文件中存在)。默认为
true
。
-
sp.entity_id
- (静态) 要用于此 SAML 服务提供程序的实体 ID。这应输入为 URI。我们建议您使用 Kibana 实例的基本 URL。例如,
https://kibana.example.com/
。
-
sp.acs
- (静态) Kibana 中断言使用者服务的 URL。通常,这是您的 Kibana 服务器的 "api/security/saml/callback" 端点。例如,
https://kibana.example.com/api/security/saml/callback
。
-
sp.logout
- (静态) Kibana 中单点注销服务的 URL。通常,这是您的 Kibana 服务器的 "logout" 端点。例如,
https://kibana.example.com/logout
。
-
attributes.principal
- (静态) 包含用户主体(用户名)的 SAML 属性的名称。
-
attributes.groups
- (静态) 包含用户组的 SAML 属性的名称。
-
attributes.name
- (静态) 包含用户全名的 SAML 属性的名称。
-
attributes.mail
- (静态) 包含用户电子邮件地址的 SAML 属性的名称。
-
attributes.dn
- (静态) 包含用户 X.50 *专有名称*的 SAML 属性的名称。
-
attribute_patterns.principal
- (静态)一个 Java 正则表达式,用于匹配
attributes.principal
指定的 SAML 属性,然后将其应用于用户的 principal 属性。属性值必须与该模式匹配,并且第一个捕获组的值将用作 principal。例如,^([^@]+)@example\\.com$
匹配来自 "example.com" 域的电子邮件地址,并使用本地部分作为 principal。
-
attribute_patterns.groups
- (静态)与
attribute_patterns.principal
类似,但用于 group 属性。
-
attribute_patterns.name
- (静态)与
attribute_patterns.principal
类似,但用于 name 属性。
-
attribute_patterns.mail
- (静态)与
attribute_patterns.principal
类似,但用于 mail 属性。
-
attribute_patterns.dn
- (静态)与
attribute_patterns.principal
类似,但用于 dn 属性。
-
attribute_delimiters.groups
- (静态)一个纯字符串,用作分隔符来拆分由
attributes.groups
指定的单值 SAML 属性,然后将其应用于用户的 groups 属性。例如,在分隔符值为,
的情况下拆分 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
- (静态)应该咨询以进行委托授权的 realm 的名称。如果使用此设置,则 SAML realm 不会执行角色映射,而是从列出的 realm 加载用户。请参阅 将授权委托给另一个 realm。
-
allowed_clock_skew
- (静态)IdP 的时钟和 Elasticsearch 节点的时钟之间可以容忍的最大偏差量。默认为
3m
(3 分钟)。
-
req_authn_context_class_ref
-
(静态)当请求 IdP 验证当前用户身份时,要包含在请求身份验证上下文中的身份验证上下文类引用值(以逗号分隔)的列表。相应身份验证响应的身份验证上下文应至少包含一个请求的值。
有关更多信息,请参阅 请求特定的身份验证方法。
SAML realm 签名设置
编辑如果配置了签名密钥(即设置了 signing.key
或 signing.keystore.path
),则 Elasticsearch 会对传出的 SAML 消息进行签名。可以使用以下设置配置签名
-
signing.saml_messages
- (静态)应该签名的 SAML 消息类型列表,或
*
以签名所有消息。列表中的每个元素都应该是 SAML XML 元素的本地名称。支持的元素类型为AuthnRequest
、LogoutRequest
和LogoutResponse
。仅当同时指定signing.key
或signing.keystore.path
时才有效。默认为*
。
-
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
。
SAML 领域加密设置
编辑如果配置了加密密钥(即设置了 encryption.key
或 encryption.keystore.path
之一),则 Elasticsearch 在生成元数据时会发布加密证书,并尝试解密传入的 SAML 内容。可以使用以下设置配置加密:
-
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
)中密钥的密码。仅支持单个密码。如果要使用多个解密密钥,它们不能有单独的密码。
SAML 领域 SSL 设置
编辑如果您通过 SSL/TLS 加载 IdP 元数据(即 idp.metadata.path
是使用 https
协议的 URL),则可以使用以下设置配置 SSL。
这些设置仅用于通过 https 加载元数据,不用于任何其他目的。
-
ssl.key
-
(静态) 包含私钥的 PEM 编码文件的路径。
如果需要 HTTP 客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。
-
ssl.key_passphrase
-
(静态) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.secure_key_passphrase
。不能同时使用此设置和
ssl.secure_key_passphrase
。
-
ssl.secure_key_passphrase
-
(安全) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。
不能同时使用此设置和
ssl.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] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_password
。
-
ssl.keystore.secure_password
-
(安全) 密钥库的密码。
不能同时使用此设置和
ssl.keystore.password
。 -
ssl.keystore.key_password
-
(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_key_password
。不能同时使用此设置和
ssl.keystore.secure_password
。不能同时使用此设置和
ssl.keystore.secure_key_password
。 -
ssl.keystore.secure_key_password
- (安全) 密钥库中密钥的密码。默认为密钥库密码。
不能同时使用此设置和 ssl.keystore.key_password
。
-
ssl.truststore.path
-
(静态) 包含要信任的证书的密钥库路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。
不能同时使用此设置和
ssl.certificate_authorities
。
-
ssl.truststore.type
- (静态) 信任库文件的格式。它必须是
jks
或PKCS12
。如果文件名以 ".p12"、".pfx" 或 "pkcs12" 结尾,则默认为PKCS12
。否则,它默认为jks
。
-
ssl.truststore.password
-
(静态) 信任库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.truststore.secure_password
。不能同时使用此设置和
ssl.truststore.secure_password
。
-
ssl.truststore.secure_password
-
(安全) 信任库的密码。
此设置不能与
ssl.truststore.password
一起使用。
-
ssl.verification_mode
-
(静态) 控制证书的验证。
有效值
-
full
- 验证提供的证书:具有
not_before
和not_after
日期范围内的颁发日期;链接到受信任的证书颁发机构 (CA);具有与证书中的名称匹配的hostname
或 IP 地址。 -
certificate
- 验证提供的证书,并验证它是否由受信任的机构 (CA) 签名,但不检查证书的
hostname
。 -
none
-
不执行证书验证。
将证书验证设置为
none
会禁用 SSL/TLS 的许多安全优势,这是非常危险的。仅在 Elastic 支持指示您在尝试解决 TLS 错误时将其作为临时诊断机制时,才设置此值。
默认为
full
。 -
-
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 加密架构文档。
Kerberos 领域设置
编辑除了适用于所有 realm 的设置之外,您还可以指定以下设置
-
keytab.path
- (静态) 指定 Kerberos keytab 文件的路径,该文件包含此 Elasticsearch 节点使用的服务主体。这必须是 Elasticsearch 配置目录中的位置,并且该文件必须具有读取权限。必需。
-
cache.max_users
- (静态)缓存中在任何给定时间可以存在的最大用户条目数。默认为 100,000。
-
authorization_realms
- (静态)应该用于委托授权的 realm 的名称。如果使用此设置,则 Kerberos realm 不会执行角色映射,而是从列出的 realm 加载用户。请参阅将授权委托给另一个 realm。
OpenID Connect realm 设置
编辑除了对所有 realm 有效的设置之外,您还可以指定以下设置。
-
op.issuer
- (静态)OpenID Connect 提供商的可验证标识符。颁发者标识符通常是使用 https 方案(包含方案、主机,以及可选的端口号和路径组件,并且没有查询或片段组件)的大小写敏感 URL。此设置的值应由 OpenID Connect 提供商提供。
-
op.authorization_endpoint
- (静态)OpenID Connect 提供商的授权端点的 URL。此设置的值应由 OpenID Connect 提供商提供。
-
op.token_endpoint
- (静态)OpenID Connect 提供商的令牌端点的 URL。此设置的值应由 OpenID Connect 提供商提供。
-
op.userinfo_endpoint
- (静态)OpenID Connect 提供商的用户信息端点的 URL。此设置的值应由 OpenID Connect 提供商提供。
-
op.endsession_endpoint
- (静态)OpenID Connect 提供商的结束会话端点的 URL。此设置的值应由 OpenID Connect 提供商提供。
-
op.jwkset_path
- (静态)
包含用于验证 OpenID Connect 提供商签名的令牌和声明响应的公钥材料的 JSON Web 密钥集 (JWKS) 的文件名或 URL。如果值不是以 https
或 http
开头,则将其视为文件名。文件名相对于 Elasticsearch 配置目录解析。文件更改会以由全局 Elasticsearch resource.reload.interval.high
设置确定的频率进行轮询,该设置默认为 5 秒。
+ 如果提供的是 URL,则它必须以 https://
或 http://
开头。Elasticsearch 会自动缓存检索到的 JWK,并在签名验证失败时尝试刷新 JWK,因为这可能表明 OpenID Connect 提供商已轮换签名密钥。
-
authorization_realms
- (静态)应该用于委托授权的 realm 的名称。如果使用此设置,则 OpenID Connect realm 不会执行角色映射,而是从列出的 realm 加载用户。请参阅将授权委托给另一个 realm。
-
rp.client_auth_method
- (静态)Elasticsearch 用于向 OpenID Connect 提供商进行身份验证的客户端身份验证方法。可以是
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 用于对 JWT 进行签名,以作为客户端向 OpenID Connect 提供商进行身份验证的签名算法。可以是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 响应类型值,用于确定要使用的授权处理流程。对于授权代码授予流程,可以是
code
,对于隐式流,可以是id_token
、id_token token
中的一个。
-
rp.signature_algorithm
- (静态)Elasticsearch 为了验证它将从 OpenID Connect 提供商接收的 id 令牌的签名而将使用的签名算法。允许的值为
HS256
、HS384
、HS512
、ES256
、ES384
、ES512
、RS256
、RS384
、RS512
、PS256
、PS384
、PS512
。默认为RS256
。
-
rp.requested_scopes
- (静态)OpenID Connect 提供商将在身份验证请求中请求的作用域值。可选,默认为
openid
-
rp.post_logout_redirect_uri
- (静态)成功单点注销后,OpenID Connect 提供商应将浏览器重定向到的重定向 URI(通常在 Kibana 中)。
-
claims.principal
- (静态)包含用户主体(用户名)的 OpenID Connect 声明的名称。
-
claims.groups
- (静态)包含用户组的 OpenID Connect 声明的名称。
-
claims.name
- (静态)包含用户全名的 OpenID Connect 声明的名称。
-
claims.mail
- (静态)包含用户电子邮件地址的 OpenID Connect 声明的名称。
-
claims.dn
- (静态)包含用户的 X.509 专有名称的 OpenID Connect 声明的名称。
-
claim_patterns.principal
- (静态)在应用于用户的主体属性之前,与
claims.principal
指定的 OpenID Connect 声明匹配的 Java 正则表达式。属性值必须与模式匹配,并且第一个捕获组的值用作主体。例如,^([^@]+)@example\\.com$
匹配来自 "example.com" 域的电子邮件地址,并使用本地部分作为主体。
-
claim_patterns.groups
- (静态)与
claim_patterns.principal
相同,但用于组属性。
-
claim_patterns.name
- (静态)与
claim_patterns.principal
相同,但用于名称属性。
-
claim_patterns.mail
- (静态)与
claim_patterns.principal
相同,但用于邮件属性。
-
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 提供商端点进行所有后台通道通信的代理服务器地址。这包括对令牌端点、用户信息端点的请求,以及如果
op.jwkset_path
设置为 URL 时,从 OP 获取 JSON Web Key Set 的请求。 -
http.proxy.scheme
- (静态)指定用于连接到代理服务器的协议,该代理服务器将由 HTTP 客户端用于与 OpenID Connect 提供商端点进行所有后台通道通信。默认为
http
。允许的值为http
或https
。 -
http.proxy.port
- (静态)指定代理服务器的端口,该代理服务器将由 HTTP 客户端用于与 OpenID Connect 提供商端点进行所有后台通道通信。默认为
80
。
-
http.connect_timeout
- (静态)控制用于与 OpenID Connect 提供商端点进行后台通道通信的 HTTP 客户端的行为。指定建立连接的超时时间。值为零表示不使用超时。默认为
5s
。
-
http.connection_read_timeout
- (静态)控制用于与 OpenID Connect 提供商端点进行后台通道通信的 HTTP 客户端的行为。指定从连接管理器请求连接时使用的超时时间。默认为
5s
。
-
http.socket_timeout
- (静态)控制用于与 OpenID Connect 提供商端点进行后台通道通信的 HTTP 客户端的行为。指定套接字超时(SO_TIMEOUT),以毫秒为单位,它是等待数据的超时时间,或者换句话说,是两个连续数据包之间最大的不活动时间。默认为
5s
。
-
http.max_connections
- (静态)控制用于与 OpenID Connect 提供商端点进行后台通道通信的 HTTP 客户端的行为。指定所有端点允许的最大连接数。默认为
200
。
-
http.max_endpoint_connections
- (静态)控制用于与 OpenID Connect 提供商端点进行后台通道通信的 HTTP 客户端的行为。指定每个端点允许的最大连接数。默认为
200
。
-
http.tcp.keep_alive
- (静态)是否在用于与 OpenID Connect 提供商端点进行后台通道通信的 HTTP 连接上启用 TCP 保活。默认为
true
。
-
http.connection_pool_ttl
- (静态)控制用于与 OpenID Connect 提供商端点进行后台通道通信的 HTTP 客户端的行为。指定连接池中连接的生存时间(默认为 3 分钟)。如果连接空闲时间超过指定的超时时间,则会关闭该连接。
服务器还可以设置 Keep-Alive
HTTP 响应头。有效的生存时间值是此设置和 Keep-Alive
响应头之间的较小值。将此设置配置为 -1
以允许服务器决定该值。如果服务器未设置标头,并且该设置的值为 -1
,则生存时间为无限,并且连接永不过期。
OpenID Connect 领域 SSL 设置
编辑以下设置可用于为所有到 OpenID Connect 提供商端点的传出 HTTP 连接配置 SSL。
这些设置仅用于 Elasticsearch 和 OpenID Connect 提供商之间的后台通道通信
-
ssl.key
-
(静态) 包含私钥的 PEM 编码文件的路径。
如果需要 HTTP 客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。
-
ssl.key_passphrase
-
(静态) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.secure_key_passphrase
。不能同时使用此设置和
ssl.secure_key_passphrase
。
-
ssl.secure_key_passphrase
-
(安全) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。
不能同时使用此设置和
ssl.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] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_password
。
-
ssl.keystore.secure_password
-
(安全) 密钥库的密码。
不能同时使用此设置和
ssl.keystore.password
。 -
ssl.keystore.key_password
-
(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_key_password
。不能同时使用此设置和
ssl.keystore.secure_password
。不能同时使用此设置和
ssl.keystore.secure_key_password
。 -
ssl.keystore.secure_key_password
-
(安全) 密钥库中密钥的密码。默认为密钥库密码。
不能同时使用此设置和
ssl.keystore.key_password
。
-
ssl.truststore.path
-
(静态) 包含要信任的证书的密钥库路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。
不能同时使用此设置和
ssl.certificate_authorities
。
-
ssl.truststore.type
- (静态) 信任库文件的格式。它必须是
jks
或PKCS12
。如果文件名以 ".p12"、".pfx" 或 "pkcs12" 结尾,则默认为PKCS12
。否则,它默认为jks
。
-
ssl.truststore.password
-
(静态) 信任库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.truststore.secure_password
。不能同时使用此设置和
ssl.truststore.secure_password
。
-
ssl.truststore.secure_password
-
(安全) 信任库的密码。
您不能同时使用此设置和
ssl.truststore.password
。
-
ssl.verification_mode
-
(静态) 控制证书的验证。
有效值
-
full
- 验证提供的证书:具有
not_before
和not_after
日期范围内的颁发日期;链接到受信任的证书颁发机构 (CA);具有与证书中的名称匹配的hostname
或 IP 地址。 -
certificate
- 验证提供的证书,并验证它是否由受信任的机构 (CA) 签名,但不检查证书的
hostname
。 -
none
-
不执行证书验证。
将证书验证设置为
none
会禁用 SSL/TLS 的许多安全优势,这是非常危险的。仅在 Elastic 支持指示您在尝试解决 TLS 错误时将其作为临时诊断机制时,才设置此值。
默认为
full
。 -
-
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 加密架构文档。
JWT 领域设置
编辑除了对所有 realm 有效的设置之外,您还可以指定以下设置。
-
token_type
- (静态)JWT 领域用于验证传入 JWT 的令牌类型,
id_token
或access_token
。默认为id_token
。
-
allowed_audiences
- (静态)Elasticsearch 应验证的允许 JWT 受众列表。Elasticsearch 将仅使用任何这些受众(由 JWT 中的
aud
声明表示)的 JWT。受众会与精确的字符串匹配进行比较,并且不支持通配符或正则表达式。aud
声明的示例包括https://example.com/client1
和other_service,elasticsearch
。当token_type
为access_token
时,如果aud
不存在,则可以选择在 JWT 中通过不同的声明来表示受众。另请参阅fallback_claims.aud
。
-
allowed_clock_skew
- (静态)在验证 JWT 时,关于其创建时间、不早于时间和过期时间所考虑的最大允许时钟偏差。
-
allowed_issuer
- (静态)JWT 颁发者的可验证标识符。颁发者标识符通常是使用 https 方案(包含方案、主机,并且可以选择端口号和路径组件,但不包含查询或片段组件)的大小写敏感的 URL。但是,它可以是任何字符串。此设置的值应由您的 JWT 颁发者提供。颁发者会与精确的字符串匹配进行比较,并且不支持通配符或正则表达式。
iss
声明的示例包括https://example.com:8443/jwt
和issuer123
。
-
allowed_subjects
- (静态)Elasticsearch 应验证的允许 JWT 主题列表。Elasticsearch 将仅使用为任何这些主题(由 JWT 中的
sub
声明表示)颁发的 JWT。主题会与精确的字符串匹配进行比较,并且不支持通配符或正则表达式。sub
声明的示例包括https://example.com/user1
和user_1,user2
。当token_type
为access_token
时,此设置是必需的,并且如果sub
不存在,则可以选择在 JWT 中通过不同的声明来表示主题。另请参阅fallback_claims.sub
。
-
fallback_claims.sub
- (静态)如果
sub
声明不存在,则查找主题信息的备用声明。仅当token_type
为access_token
时,才可以配置它。回退应用于使用sub
声明的所有位置。
-
fallback_claims.aud
- (静态) 如果
aud
声明不存在,则用于查找受众信息的备用声明。仅当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 声明的名称,该名称唯一标识用户或组。
-
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 声明匹配。该值必须与模式匹配,并且第一个捕获组的值用作主体。例如,^([^@]+)@example\\.com$
匹配来自example.com
域的电子邮件地址,并使用本地部分作为主体。另一个例子是sub
,可能不需要模式设置。
-
client_authentication.type
-
(静态) 指定是否使用
shared_secret
或none
来验证传入的客户端请求。如果此值为shared_secret
,则使用必须与预配置的密钥值匹配的 HTTP 请求标头来验证客户端的身份。客户端必须在每个请求的ES-Client-Authentication
标头中提供此共享密钥。如果此值为none
,则请求标头ES-Client-Authentication
将被忽略。默认为shared_secret
。建议启用客户端身份验证。如果 JWT 令牌与其他客户端或服务共享,则客户端身份验证会限制哪些客户端可以将这些 JWT 提交到 Elasticsearch。
-
http.connect_timeout
- (静态) 设置用于从远程 URL 获取 JSON Web 密钥集 (JWKS) 的 HTTP 客户端的超时时间。值为零表示不使用超时。默认为
5s
。
-
http.connection_read_timeout
- (静态) 指定从连接管理器请求连接时使用的 HTTP 超时时间。默认为
5s
。
-
http.socket_timeout
- (静态) 指定 HTTP 客户端在两个连续数据包之间等待不活动的最大套接字超时 (SO_TIMEOUT) 时间。默认为
5s
。
-
http.max_connections
- (静态) 指定所有端点允许的最大连接数。
-
pkc_jwkset_path
- (静态) 包含 JWT Realm 用于验证令牌签名的公钥材料的 JSON Web 密钥集 (JWKS) 的文件名或 URL。如果值不以
https
开头,则将其视为文件名。文件名相对于 Elasticsearch 配置目录进行解析。如果提供 URL,则它必须以https://
开头(不支持http://
)。Elasticsearch 会自动缓存 JWK 集,并在签名验证失败时尝试刷新 JWK 集,因为这可能表明 JWT 提供程序已轮换了签名密钥。
-
hmac_jwkset
- (安全) JSON Web 密钥集 (JWKS) 的内容,包括 JWT realm 用于验证令牌签名的密钥。此格式支持多个密钥和可选属性,并且优先于
hmac_key
设置。不能与hmac_key
设置一起使用。请参阅配置 Elasticsearch 以使用 JWT realm。
-
hmac_key
- (安全) 单个 JSON Web 密钥 (JWK) 的内容,包括 JWT realm 用于验证令牌签名的密钥。此格式仅支持不带属性的单个密钥,不能与
hmac_jwkset
设置一起使用。此格式与 OIDC 兼容。HMAC 密钥必须是 UNICODE 字符串,其中密钥字节是 UNICODE 字符串的 UTF-8 编码。hmac_jwkset
设置是首选。请参阅配置 Elasticsearch 以使用 JWT realm。
-
populate_user_metadata
- (静态) 指定是否使用 JWT 声明提供的值填充 Elasticsearch 用户的元数据。默认为
true
。
JWT realm SSL 设置
编辑以下设置可用于配置 SSL,以便从远程 URL 获取 JSON Web 密钥集。
这些设置仅用于 Elasticsearch 和 JWT 颁发者之间的后通道通信。
-
ssl.key
-
(静态) 包含私钥的 PEM 编码文件的路径。
如果需要 HTTP 客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。
-
ssl.key_passphrase
-
(静态) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.secure_key_passphrase
。不能同时使用此设置和
ssl.secure_key_passphrase
。
-
ssl.secure_key_passphrase
-
(安全) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。
不能同时使用此设置和
ssl.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] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_password
。
-
ssl.keystore.secure_password
-
(安全) 密钥库的密码。
不能同时使用此设置和
ssl.keystore.password
。 -
ssl.keystore.key_password
-
(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_key_password
。不能同时使用此设置和
ssl.keystore.secure_password
。不能同时使用此设置和
ssl.keystore.secure_key_password
。 -
ssl.keystore.secure_key_password
-
(安全) 密钥库中密钥的密码。默认为密钥库密码。
不能同时使用此设置和
ssl.keystore.key_password
。
-
ssl.truststore.path
-
(静态) 包含要信任的证书的密钥库路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。
不能同时使用此设置和
ssl.certificate_authorities
。
-
ssl.truststore.type
- (静态) 信任库文件的格式。它必须是
jks
或PKCS12
。如果文件名以 ".p12"、".pfx" 或 "pkcs12" 结尾,则默认为PKCS12
。否则,它默认为jks
。
-
ssl.truststore.password
-
(静态) 信任库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.truststore.secure_password
。不能同时使用此设置和
ssl.truststore.secure_password
。
-
ssl.truststore.secure_password
-
(安全) 信任库的密码。
您不能同时使用此设置和
ssl.truststore.password
。
-
ssl.verification_mode
-
(静态) 控制证书的验证。
有效值
-
full
- 验证提供的证书:具有
not_before
和not_after
日期范围内的颁发日期;链接到受信任的证书颁发机构 (CA);具有与证书中的名称匹配的hostname
或 IP 地址。 -
certificate
- 验证提供的证书,并验证它是否由受信任的机构 (CA) 签名,但不检查证书的
hostname
。 -
none
-
不执行证书验证。
将证书验证设置为
none
会禁用 SSL/TLS 的许多安全优势,这是非常危险的。仅在 Elastic 支持指示您在尝试解决 TLS 错误时将其作为临时诊断机制时,才设置此值。
默认为
full
。 -
-
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 地址。连接将不断迭代遍历地址列表。如果某个服务器不可用,则会继续迭代遍历 URL 列表,直到建立成功的连接为止。
通用 TLS 设置
编辑-
xpack.security.ssl.diagnose.trust
- (静态) 控制是否输出 SSL/TLS 信任失败的诊断消息。如果此设置为
true
(默认值),则当由于无法建立信任而拒绝 SSL 连接(传入或传出)时,将在 Elasticsearch 日志中打印一条消息。此诊断消息包含可用于确定失败原因并协助解决问题的信息。设置为false
以禁用这些消息。
TLS/SSL 密钥和受信任证书设置
编辑以下设置用于指定通过 SSL/TLS 连接进行通信时应使用的私钥、证书和受信任的证书。如果未配置受信任的证书,则 JVM 信任的默认证书以及与同一上下文中的密钥关联的证书将被信任。对于需要客户端身份验证的连接或充当启用 SSL 的服务器时,密钥和证书必须到位。
尽管支持将受信任的证书存储在 PKCS#12 文件中,但在实践中并不常见。elasticsearch-certutil
工具以及 Java 的 keytool
旨在生成既可用作密钥库又可用作信任库的 PKCS#12 文件,但对于使用其他工具创建的容器文件可能并非如此。通常,PKCS#12 文件仅包含秘密和私有条目。要确认 PKCS#12 容器是否包含受信任的证书(“锚”)条目,请在 openssl pkcs12 -info
输出中查找 2.16.840.1.113894.746875.1.1: <Unsupported tag 6>
,或者在 keytool -list
输出中查找 trustedCertEntry
。
HTTP TLS/SSL 设置
编辑您可以配置以下 TLS/SSL 设置。
-
xpack.security.http.ssl.enabled
- (静态) 用于启用或禁用 HTTP 网络层上的 TLS/SSL,Elasticsearch 使用该层与其他客户端进行通信。默认值为
false
。 -
xpack.security.http.ssl.supported_protocols
-
(静态) 支持的协议和版本。有效协议:
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
- 验证提供的证书:具有
not_before
和not_after
日期范围内的颁发日期;链接到受信任的证书颁发机构 (CA);具有与证书中的名称匹配的hostname
或 IP 地址。 -
certificate
- 验证提供的证书,并验证它是否由受信任的机构 (CA) 签名,但不检查证书的
hostname
。 -
none
-
不执行证书验证。
将证书验证设置为
none
会禁用 SSL/TLS 的许多安全优势,这是非常危险的。仅在 Elastic 支持指示您在尝试解决 TLS 错误时将其作为临时诊断机制时,才设置此值。
默认为
full
。 -
-
xpack.security.http.ssl.cipher_suites
-
(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为
TLS_AES_256_GCM_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 加密架构文档。
HTTP TLS/SSL 密钥和受信任证书设置
编辑以下设置用于指定通过 SSL/TLS 连接进行通信时应使用的私钥、证书和受信任的证书。必须配置私钥和证书。
PEM 编码文件
编辑使用 PEM 编码文件时,请使用以下设置
-
xpack.security.http.ssl.key
-
(静态) 包含私钥的 PEM 编码文件的路径。
如果需要 HTTP 客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。 -
xpack.security.http.ssl.key_passphrase
-
(静态) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.secure_key_passphrase
。不能同时使用此设置和
ssl.secure_key_passphrase
。 -
xpack.security.http.ssl.secure_key_passphrase
- (安全) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。
-
xpack.security.http.ssl.certificate
-
(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。
仅当设置了
ssl.key
时,才能使用此设置。 -
xpack.security.http.ssl.certificate_authorities
-
(静态) 应信任的 PEM 编码证书文件的路径列表。
不能同时使用此设置和
ssl.truststore.path
。
Java 密钥库文件
编辑使用包含私钥、证书和应信任的证书的 Java 密钥库文件 (JKS) 时,请使用以下设置
-
xpack.security.http.ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
ssl.key
。 -
xpack.security.http.ssl.keystore.password
- (静态) 密钥库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_password
。 -
xpack.security.http.ssl.keystore.secure_password
- (安全) 密钥库的密码。
-
xpack.security.http.ssl.keystore.key_password
-
(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_key_password
。不能同时使用此设置和
ssl.keystore.secure_password
。 -
xpack.security.http.ssl.keystore.secure_key_password
- (安全) 密钥库中密钥的密码。默认为密钥库密码。
-
xpack.security.http.ssl.truststore.path
-
(静态) 包含要信任的证书的密钥库路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。
不能同时使用此设置和
ssl.certificate_authorities
。 -
xpack.security.http.ssl.truststore.password
-
(静态) 信任库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.truststore.secure_password
。不能同时使用此设置和
ssl.truststore.secure_password
。 -
xpack.security.http.ssl.truststore.secure_password
- (安全) 信任库的密码。
PKCS#12 文件
编辑可以将 Elasticsearch 配置为使用包含私钥、证书和应信任的证书的 PKCS#12 容器文件(.p12
或 .pfx
文件)。
PKCS#12 文件的配置方式与 Java 密钥库文件相同
-
xpack.security.http.ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
ssl.key
。 -
xpack.security.http.ssl.keystore.type
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾,则此设置默认为PKCS12
。否则,它默认为jks
。 -
xpack.security.http.ssl.keystore.password
- (静态) 密钥库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_password
。 -
xpack.security.http.ssl.keystore.secure_password
- (安全) 密钥库的密码。
-
xpack.security.http.ssl.keystore.key_password
-
(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_key_password
。不能同时使用此设置和
ssl.keystore.secure_password
。 -
xpack.security.http.ssl.keystore.secure_key_password
- (安全) 密钥库中密钥的密码。默认为密钥库密码。
-
xpack.security.http.ssl.truststore.path
-
(静态) 包含要信任的证书的密钥库路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。
不能同时使用此设置和
ssl.certificate_authorities
。 -
xpack.security.http.ssl.truststore.type
- (静态) 将此设置为
PKCS12
以指示信任库是 PKCS#12 文件。 -
xpack.security.http.ssl.truststore.password
-
(静态) 信任库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.truststore.secure_password
。不能同时使用此设置和
ssl.truststore.secure_password
。 -
xpack.security.http.ssl.truststore.secure_password
- (安全) 信任库的密码。
传输 TLS/SSL 设置
编辑您可以配置以下 TLS/SSL 设置。
-
xpack.security.transport.ssl.enabled
- (静态) 用于启用或禁用传输网络层上的 TLS/SSL,节点使用该层彼此通信。默认值为
false
。 -
xpack.security.transport.ssl.supported_protocols
-
(静态) 支持的协议和版本。有效协议:
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
- 验证提供的证书:具有
not_before
和not_after
日期范围内的颁发日期;链接到受信任的证书颁发机构 (CA);具有与证书中的名称匹配的hostname
或 IP 地址。 -
certificate
- 验证提供的证书,并验证它是否由受信任的机构 (CA) 签名,但不检查证书的
hostname
。 -
none
-
不执行证书验证。
将证书验证设置为
none
会禁用 SSL/TLS 的许多安全优势,这是非常危险的。仅在 Elastic 支持指示您在尝试解决 TLS 错误时将其作为临时诊断机制时,才设置此值。
默认为
full
。 -
-
xpack.security.transport.ssl.cipher_suites
-
(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为
TLS_AES_256_GCM_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 加密架构文档。
传输 TLS/SSL 密钥和受信任证书设置
编辑以下设置用于指定通过 SSL/TLS 连接进行通信时应使用的私钥、证书和受信任的证书。必须配置私钥和证书。
PEM 编码文件
编辑使用 PEM 编码文件时,请使用以下设置
-
xpack.security.transport.ssl.key
-
(静态) 包含私钥的 PEM 编码文件的路径。
如果需要 HTTP 客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。 -
xpack.security.transport.ssl.key_passphrase
-
(静态) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.secure_key_passphrase
。不能同时使用此设置和
ssl.secure_key_passphrase
。 -
xpack.security.transport.ssl.secure_key_passphrase
- (安全) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。
-
xpack.security.transport.ssl.certificate
-
(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。
仅当设置了
ssl.key
时,才能使用此设置。 -
xpack.security.transport.ssl.certificate_authorities
-
(静态) 应信任的 PEM 编码证书文件的路径列表。
不能同时使用此设置和
ssl.truststore.path
。
Java 密钥库文件
编辑使用包含私钥、证书和应信任的证书的 Java 密钥库文件 (JKS) 时,请使用以下设置
-
xpack.security.transport.ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
ssl.key
。 -
xpack.security.transport.ssl.keystore.password
- (静态) 密钥库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_password
。 -
xpack.security.transport.ssl.keystore.secure_password
- (安全) 密钥库的密码。
-
xpack.security.transport.ssl.keystore.key_password
-
(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_key_password
。不能同时使用此设置和
ssl.keystore.secure_password
。 -
xpack.security.transport.ssl.keystore.secure_key_password
- (安全) 密钥库中密钥的密码。默认为密钥库密码。
-
xpack.security.transport.ssl.truststore.path
-
(静态) 包含要信任的证书的密钥库路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。
不能同时使用此设置和
ssl.certificate_authorities
。 -
xpack.security.transport.ssl.truststore.password
-
(静态) 信任库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.truststore.secure_password
。不能同时使用此设置和
ssl.truststore.secure_password
。 -
xpack.security.transport.ssl.truststore.secure_password
- (安全) 信任库的密码。
PKCS#12 文件
编辑可以将 Elasticsearch 配置为使用包含私钥、证书和应信任的证书的 PKCS#12 容器文件(.p12
或 .pfx
文件)。
PKCS#12 文件的配置方式与 Java 密钥库文件相同
-
xpack.security.transport.ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
ssl.key
。 -
xpack.security.transport.ssl.keystore.type
- (静态) 密钥库文件的格式。它必须是
jks
或PKCS12
。如果密钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾,则此设置默认为PKCS12
。否则,它默认为jks
。 -
xpack.security.transport.ssl.keystore.password
- (静态) 密钥库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_password
。 -
xpack.security.transport.ssl.keystore.secure_password
- (安全) 密钥库的密码。
-
xpack.security.transport.ssl.keystore.key_password
-
(静态) 密钥库中密钥的密码。默认为密钥库密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.keystore.secure_key_password
。不能同时使用此设置和
ssl.keystore.secure_password
。 -
xpack.security.transport.ssl.keystore.secure_key_password
- (安全) 密钥库中密钥的密码。默认为密钥库密码。
-
xpack.security.transport.ssl.truststore.path
-
(静态) 包含要信任的证书的密钥库路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。
不能同时使用此设置和
ssl.certificate_authorities
。 -
xpack.security.transport.ssl.truststore.type
- (静态) 将此设置为
PKCS12
以指示信任库是 PKCS#12 文件。 -
xpack.security.transport.ssl.truststore.password
-
(静态) 信任库的密码。 [7.17.0] 在 7.17.0 中已弃用。 请优先使用
ssl.truststore.secure_password
。不能同时使用此设置和
ssl.truststore.secure_password
。 -
xpack.security.transport.ssl.truststore.secure_password
- (安全) 信任库的密码。
远程集群服务器(基于 API 密钥的模型)TLS/SSL 设置
编辑您可以配置以下 TLS/SSL 设置。
-
xpack.security.remote_cluster_server.ssl.enabled
- (静态) 用于启用或禁用远程集群服务器网络层上的 TLS/SSL,Elasticsearch 使用该层与远程集群客户端进行通信。默认值为
true
。 -
xpack.security.remote_cluster_server.ssl.supported_protocols
-
(静态) 支持的协议和版本。有效协议:
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
- 验证提供的证书:具有
not_before
和not_after
日期范围内的颁发日期;链接到受信任的证书颁发机构 (CA);具有与证书中的名称匹配的hostname
或 IP 地址。 -
certificate
- 验证提供的证书,并验证它是否由受信任的机构 (CA) 签名,但不检查证书的
hostname
。 -
none
-
不执行证书验证。
将证书验证设置为
none
会禁用 SSL/TLS 的许多安全优势,这是非常危险的。仅在 Elastic 支持指示您在尝试解决 TLS 错误时将其作为临时诊断机制时,才设置此值。
默认为
full
。 -
-
xpack.security.remote_cluster_server.ssl.cipher_suites
-
(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为
TLS_AES_256_GCM_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 加密架构文档。
远程集群服务器(基于 API 密钥的模型)TLS/SSL 密钥和受信任证书设置
编辑以下设置用于指定通过 SSL/TLS 连接进行通信时应使用的私钥、证书和受信任的证书。必须配置私钥和证书。
PEM 编码文件
编辑使用 PEM 编码文件时,请使用以下设置
-
xpack.security.remote_cluster_server.ssl.key
-
(静态) 包含私钥的 PEM 编码文件的路径。
如果需要 HTTP 客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。 -
xpack.security.remote_cluster_server.ssl.secure_key_passphrase
- (安全) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。
-
xpack.security.remote_cluster_server.ssl.certificate
-
(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。
仅当设置了
ssl.key
时,才能使用此设置。 -
xpack.security.remote_cluster_server.ssl.certificate_authorities
-
(静态) 应信任的 PEM 编码证书文件的路径列表。
不能同时使用此设置和
ssl.truststore.path
。
Java 密钥库文件
编辑使用包含私钥、证书和应信任的证书的 Java 密钥库文件 (JKS) 时,请使用以下设置
-
xpack.security.remote_cluster_server.ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
ssl.key
。 -
xpack.security.remote_cluster_server.ssl.keystore.secure_password
- (安全) 密钥库的密码。
-
xpack.security.remote_cluster_server.ssl.keystore.secure_key_password
- (安全) 密钥库中密钥的密码。默认为密钥库密码。
-
xpack.security.remote_cluster_server.ssl.truststore.path
-
(静态) 包含要信任的证书的密钥库路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。
不能同时使用此设置和
ssl.certificate_authorities
。 -
xpack.security.remote_cluster_server.ssl.truststore.secure_password
- (安全) 信任库的密码。
PKCS#12 文件
编辑可以将 Elasticsearch 配置为使用包含私钥、证书和应信任的证书的 PKCS#12 容器文件(.p12
或 .pfx
文件)。
PKCS#12 文件的配置方式与 Java 密钥库文件相同
-
xpack.security.remote_cluster_server.ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
ssl.key
。 -
xpack.security.remote_cluster_server.ssl.keystore.type
- (静态) 密钥库文件的格式。它必须是
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
- (安全) 信任库的密码。
远程集群客户端(基于 API 密钥的模型)TLS/SSL 设置
编辑您可以配置以下 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
- 验证提供的证书:具有
not_before
和not_after
日期范围内的颁发日期;链接到受信任的证书颁发机构 (CA);具有与证书中的名称匹配的hostname
或 IP 地址。 -
certificate
- 验证提供的证书,并验证它是否由受信任的机构 (CA) 签名,但不检查证书的
hostname
。 -
none
-
不执行证书验证。
将证书验证设置为
none
会禁用 SSL/TLS 的许多安全优势,这是非常危险的。仅在 Elastic 支持指示您在尝试解决 TLS 错误时将其作为临时诊断机制时,才设置此值。
默认为
full
。 -
-
xpack.security.remote_cluster_client.ssl.cipher_suites
-
(静态) 支持的密码套件因您使用的 Java 版本而异。例如,对于版本 12,默认值为
TLS_AES_256_GCM_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 加密架构文档。
远程集群客户端(基于 API 密钥的模型)TLS/SSL 密钥和受信任证书设置
编辑以下设置用于指定通过 SSL/TLS 连接进行通信时应使用的私钥、证书和受信任的证书。私钥和证书是可选的,如果服务器需要客户端身份验证进行 PKI 身份验证,则将使用私钥和证书。
PEM 编码文件
编辑使用 PEM 编码文件时,请使用以下设置
-
xpack.security.remote_cluster_client.ssl.key
-
(静态) 包含私钥的 PEM 编码文件的路径。
如果需要 HTTP 客户端身份验证,则使用此文件。不能同时使用此设置和
ssl.keystore.path
。 -
xpack.security.remote_cluster_client.ssl.secure_key_passphrase
- (安全) 用于解密私钥的密码。由于密钥可能未加密,因此此值是可选的。
-
xpack.security.remote_cluster_client.ssl.certificate
-
(静态) 指定与密钥关联的 PEM 编码证书(或证书链)的路径。
仅当设置了
ssl.key
时,才能使用此设置。 -
xpack.security.remote_cluster_client.ssl.certificate_authorities
-
(静态) 应信任的 PEM 编码证书文件的路径列表。
不能同时使用此设置和
ssl.truststore.path
。
Java 密钥库文件
编辑使用包含私钥、证书和应信任的证书的 Java 密钥库文件 (JKS) 时,请使用以下设置
-
xpack.security.remote_cluster_client.ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
ssl.key
。 -
xpack.security.remote_cluster_client.ssl.keystore.secure_password
- (安全) 密钥库的密码。
-
xpack.security.remote_cluster_client.ssl.keystore.secure_key_password
- (安全) 密钥库中密钥的密码。默认为密钥库密码。
-
xpack.security.remote_cluster_client.ssl.truststore.path
-
(静态) 包含要信任的证书的密钥库路径。它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。
不能同时使用此设置和
ssl.certificate_authorities
。 -
xpack.security.remote_cluster_client.ssl.truststore.secure_password
- (安全) 信任库的密码。
PKCS#12 文件
编辑可以将 Elasticsearch 配置为使用包含私钥、证书和应信任的证书的 PKCS#12 容器文件(.p12
或 .pfx
文件)。
PKCS#12 文件的配置方式与 Java 密钥库文件相同
-
xpack.security.remote_cluster_client.ssl.keystore.path
-
(静态) 包含私钥和证书的密钥库文件的路径。
它必须是 Java 密钥库 (jks) 或 PKCS#12 文件。不能同时使用此设置和
ssl.key
。 -
xpack.security.remote_cluster_client.ssl.keystore.type
- (静态) 密钥库文件的格式。它必须是
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
- (安全) 信任库的密码。
传输配置文件 TLS/SSL 设置
编辑默认传输可用的相同设置也适用于每个传输配置文件。默认情况下,传输配置文件的设置将与默认传输相同,除非指定了它们。
例如,让我们看一下密钥设置。对于默认传输,此设置为 xpack.security.transport.ssl.key
。为了在传输配置文件中使用此设置,请使用前缀 transport.profiles.$PROFILE.xpack.security.
并追加设置中 xpack.security.transport.
之后的部分。对于密钥设置,这将是 transport.profiles.$PROFILE.xpack.security.ssl.key
。
IP 过滤设置
编辑您可以为 IP 过滤配置以下设置。
-
xpack.security.transport.filter.allow
- (动态) 允许的 IP 地址列表。
-
xpack.security.transport.filter.deny
- (动态) 拒绝的 IP 地址列表。
-
xpack.security.http.filter.allow
- (动态) 仅针对 HTTP 允许的 IP 地址列表。
-
xpack.security.http.filter.deny
- (动态) 仅针对 HTTP 拒绝的 IP 地址列表。
-
transport.profiles.$PROFILE.xpack.security.filter.allow
- (动态) 此配置文件允许的 IP 地址列表。
-
transport.profiles.$PROFILE.xpack.security.filter.deny
- (动态) 此配置文件拒绝的 IP 地址列表。
-
xpack.security.remote_cluster.filter.allow
- (动态) 仅允许用于使用 基于 API 密钥的模型配置的远程集群服务器的 IP 地址列表。
-
xpack.security.remote_cluster.filter.deny
- (动态) 仅拒绝用于使用基于 API 密钥的模型配置的远程集群服务器的 IP 地址列表。
用户缓存和密码哈希算法
编辑某些领域会将用户凭据存储在内存中。为了限制凭据被盗的风险并缓解凭据泄露,缓存仅在内存中存储用户凭据的哈希版本。默认情况下,用户缓存使用加盐的 sha-256
哈希算法进行哈希。您可以通过将静态cache.hash_algo
领域设置设置为以下任何值来使用不同的哈希算法。
表 1. 缓存哈希算法
算法 |
描述 |
||
|
使用加盐的 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
不对凭据进行哈希,并将其以明文形式保存在内存中。注意:以明文形式保存被认为是不安全的,并且可能会在操作系统级别受到损害(例如通过内存转储和使用 |
同样,存储密码的领域会使用加密强度高且特定于密码的盐值对其进行哈希。您可以通过将静态xpack.security.authc.password_hashing.algorithm
设置为以下值之一来配置密码哈希算法
表 2. 密码哈希算法
算法 | 描述 | ||
---|---|---|---|
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |
||
|
先使用 SHA512 对初始输入进行哈希,然后使用 |