原文链接:https://www.elastic.co/guide/en/elasticsearch/reference/7.5/settings.html
Elasticsearch具有良好的默认设置,并且只需要很少的配置。可以使用群集更新设置 API 在正在运行的群集上更改大多数设置 。
配置文件应包含特定节点的设置(例如node.name
和路径),或节点为了能够加入集群所需的设置,例如cluster.name
和network.host
。
Elasticsearch具有三个配置文件:
elasticsearch.yml
用于配置Elasticsearchjvm.options
用于配置Elasticsearch JVM设置log4j2.properties
用于配置Elasticsearch日志记录这些文件位于config目录中,其默认位置取决于安装是来自档安发行版(tar.gz
或 zip
)还是软件包发行版(Debian或RPM软件包)。
对于存档分发,配置目录位置默认为 $ES_HOME/config
。可以通过ES_PATH_CONF
环境变量来更改config目录的位置, 如下所示:
ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch
或者,您可以通过命令行或shell 来export
ES_PATH_CONF
环境变量。
对于软件包分发,config目录位置默认为 /etc/elasticsearch
。配置文件目录的位置也可以通过ES_PATH_CONF
环境变量来更改,但是请注意,仅在您的shell中进行设置是不够的。此变量还包含在配置文件/etc/default/elasticsearch
(对于Debian软件包)和 /etc/sysconfig/elasticsearch
(对于RPM软件包)中。您需要相应地编辑这些文件的ES_PATH_CONF=/etc/elasticsearch
条目,以更改配置目录位置。
配置格式为YAML。以下为更改数据和日志目录的路径的示例:
path:
data: /var/lib/elasticsearch
logs: /var/log/elasticsearch
也可以按以下平展方式设置:
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
${...}
在配置文件中用符号引用的环境变量将替换为环境变量的值,例如:
node.name: ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}
您几乎不需要更改Java虚拟机(JVM)选项。如果这样做,最可能的更改是设置堆大小。本文档的其余部分详细说明了如何设置JVM选项。
设置JVM选项(包括系统属性和JVM标志)的首选方法是通过jvm.options
配置文件。该文件的默认位置是config/jvm.options
(从tar或zip发行版安装)和/etc/elasticsearch/jvm.options
(从Debian或RPM软件包安装)。
此文件包含使用特殊语法的以行分隔的JVM参数列表:
以开头的行#
被视为注释,并被忽略
# this is a comment
以-开头的行被视为独立于JVM版本而应用的JVM选项
-Xmx2g
以数字开头后接:-
的行被视为JVM选项,仅当JVM版本与该数字匹配时才适用
8:-Xmx2g
以数字开头后跟有-:-的行被视为JVM选项,仅在JVM版本大于或等于该数字时才适用
8-:-Xmx2g
以数字开头后接-数字:-的行:
被视为JVM选项,仅当JVM版本在两个数字范围内时才适用
8-9:-Xmx2g
您可以将自定义JVM标志添加到此文件,并且在你的版本控制系统中检查这个配置。
设置Java虚拟机选项的另一种机制是通过 ES_JAVA_OPTS
环境变量。例如:
export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
./bin/elasticsearch
使用RPM或Debian软件包时,ES_JAVA_OPTS
可以在系统配置文件中指定 。
JVM具有用于观察JAVA_TOOL_OPTIONS
环境变量的内置机制。我们有意在打包脚本中忽略此环境变量。这样做的主要原因是,在某些操作系统(例如Ubuntu)上,默认情况下通过此环境变量安装了代理,我们不希望它们干扰Elasticsearch。
此外,其他一些Java程序也支持JAVA_OPTS
环境变量。这不是 JVM内置的机制,而是生态系统中的约定。但是,我们不支持该环境变量,而是通过上述jvm.options
文件或环境变量来支持设置JVM ES_JAVA_OPTS
选项。
某些设置是敏感的,仅依靠文件系统权限来保护其值是不够的。对于此用例,Elasticsearch提供了密钥库和elasticsearch-keystore
用于管理密钥库设置的工具。
注意:此处的所有命令都应以运行Elasticsearch的用户身份运行。
重要:设计仅从密钥库中读取一些设置。但是,密钥库没有验证来阻止不支持的设置。将不支持的设置添加到密钥库将导致Elasticsearch无法启动。请参阅每个设置的文档,以了解是否将其作为密钥库的一部分来支持。
注意:仅在重新启动Elasticsearch之后,对密钥库的所有修改才会生效。
注意:elasticsearch密钥库当前仅提供混淆。将来将添加密码保护
就像elasticsearch.yml
配置文件中的常规设置一样,需要在集群的每个节点上指定这些设置。当前,所有安全设置都是特定于节点的设置,在每个节点上必须具有相同的值。
要创建elasticsearch.keystore
,请使用以下create
命令:
bin/elasticsearch-keystore create
该文件elasticsearch.keystore
将与elasticsearch.yml
一起创建。
密钥库中的设置列表可通过以下list
命令获得:
bin/elasticsearch-keystore list
可以使用以下add
命令来添加敏感的字符串设置,例如cloud 插件的身份验证凭据:
bin/elasticsearch-keystore add the.setting.name.to.set
该工具将提示您输入设置值。要通过stdin传递值,请使用--stdin
标志:
cat /file/containing/setting/value | bin/elasticsearch-keystore add --stdin the.setting.name.to.set
您可以使用以下add-file
命令添加敏感文件,例如cloud插件的身份验证密钥文件。确保将文件路径作为参数包含在设置名称之后。
bin/elasticsearch-keystore add-file the.setting.name.to.set /path/example-file.json
要从密钥库中删除设置,请使用以下remove
命令:
bin/elasticsearch-keystore remove the.setting.name.to.remove
有时,密钥库的内部格式会更改。从程序包管理器安装Elasticsearch时,将在程序包升级期间将磁盘上的密钥库升级到新格式。在其他情况下,Elasticsearch将在节点启动期间执行此类升级。这要求Elasticsearch对包含密钥库的目录具有写权限。或者,您可以使用以下upgrade
命令手动执行此类升级:
bin/elasticsearch-keystore upgrade
就像elasticsearch.yml
中的设置值一样,对密钥库内容的更改不会自动应用于正在运行的elasticsearch节点。重新读取设置需要重新启动节点。但是,某些安全设置被标记为可重载。可以重新读取此类设置并将其应用到正在运行的节点上。
所有安全设置(可重新加载或不可重新加载)的值在所有群集节点上必须相同。进行所需的安全设置更改后,使用以下bin/elasticsearch-keystore add
命令,调用:
POST _nodes/reload_secure_settings
该API将在每个群集节点上解密并重新读取整个密钥库,但是将仅应用可重载的安全设置。直到下次重新启动,对其他设置的更改才会生效。调用返回后,重新加载已完成,这意味着依赖于这些设置的所有内部数据结构均已更改。从头开始,所有设置看起来都应该具有新值。
更改多个可重新加载的安全设置时,请在每个群集节点上修改所有这些设置,然后发出reload_secure_settings
呼叫,而不是在每次修改后重新加载。
有以下可重新加载的安全设置:
Elasticsearch使用Log4j2进行日志记录。可以使用log4j2.properties文件配置Log4j2。Elasticsearch公开三个属性${sys:es.logs.base_path}
, ${sys:es.logs.cluster_name}
以及${sys:es.logs.node_name}
可以在配置文件中引用,以确定日志文件的位置。该属性${sys:es.logs.base_path}
将解析为日志目录, ${sys:es.logs.cluster_name}
将解析为群集名称(在默认配置中用作日志文件名的前缀), ${sys:es.logs.node_name}
并将解析为节点名称(如果显式设置了节点名称)。
例如,如果你的日志(path.logs
)的目录是/var/log/elasticsearch
,您的群集名为production,
${sys:es.logs.base_path}
将解析为/var/log/elasticsearch
, ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log
将解析为/var/log/elasticsearch/production.log
。
######## Server JSON ############################
appender.rolling.type = RollingFile #1
appender.rolling.name = rolling
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json #2
appender.rolling.layout.type = ESJsonLayout #3
appender.rolling.layout.type_name = server #4
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.json.gz #5
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy #6
appender.rolling.policies.time.interval = 1 #7
appender.rolling.policies.time.modulate = true #8
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy #9
appender.rolling.policies.size.size = 256MB #10
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.fileIndex = nomax
appender.rolling.strategy.action.type = Delete #11
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
appender.rolling.strategy.action.condition.type = IfFileName #12
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-* #13
appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize #14
appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB #15
################################################
#1 配置RollingFile附加器
#2 日志记录到 /var/log/elasticsearch/production_server.json
#3 使用JSON布局。
#4 type_name是填充type字段中的标志ESJsonLayout。解析日志时,可以更轻松地区分不同类型的日志。
#5 将日志滚动到/var/log/elasticsearch/production-yyyy-MM-dd-i.json; 日志将在每卷上压缩,i递增。
#6 使用基于时间的滚动策略
#7 每天滚动日志
#8 在日期边界上对齐滚动(而不是每24小时滚动一次)
#9 使用基于大小的滚动策略
#10 256 MB后滚动日志
#11 滚动日志时使用删除操作
#12 仅删除与文件模式匹配的日志
#13 模式是仅删除主日志
#14 仅当我们累积了太多压缩日志时才删除
#15 压缩日志的大小条件为2 GB
######## Server - old style pattern ###########
appender.rolling_old.type = RollingFile
appender.rolling_old.name = rolling_old
appender.rolling_old.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.log #1
appender.rolling_old.layout.type = PatternLayout
appender.rolling_old.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n
appender.rolling_old.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.old_log.gz
#1
old style
模式追加器的配置。这些日志将保存在*.log
文件中,如果存档则将保存在文件中* .log.gz
。请注意,应将其视为已弃用,并将在将来删除。
注意:Log4j的配置解析将会被任何多余的空白所迷惑;如果您在此页面上复制并粘贴任何Log4j设置,或通常输入任何Log4j配置,请确保修剪所有前导和尾随空格
请注意,您可以在appender.rolling.filePattern
替换.gz
为.zip
以使用zip格式压缩滚动日志。如果删除.gz
扩展名,则日志在滚动时将不会被压缩。
如果要在指定时间段内保留日志文件,则可以将过渡策略与删除操作一起使用。
appender.rolling.strategy.type = DefaultRolloverStrategy #1
appender.rolling.strategy.action.type = Delete #2
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path} #3
appender.rolling.strategy.action.condition.type = IfFileName #4
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-* #5
appender.rolling.strategy.action.condition.nested_condition.type = IfLastModified #6
appender.rolling.strategy.action.condition.nested_condition.age = 7D #7
#1 配置 DefaultRolloverStrategy
#2 配置Delete用于处理翻转的操作
#3 Elasticsearch日志的基本路径
#4 处理过渡时适用的条件
#5 从与glob匹配的基本路径中删除文件 ${sys:es.logs.cluster_name}-*; 这是日志文件滚动到的位置;仅删除滚动的Elasticsearch日志,而不删除过时和慢速日志,这是必需的
#6 嵌套条件适用于与glob匹配的文件
#7 保留日志七天
可以加载多个配置文件(在这种情况下,它们将被合并),只要它们被命名log4j2.properties
并以Elasticsearch config目录作为祖先即可。这对于暴露其他日志器的插件很有用。日志器部分包含Java软件包及其相应的日志级别。附加程序部分包含日志的目标。可以在Log4j文档中找到有关如何自定义日志记录和所有受支持的附加程序的广泛信息 。
有四种配置日志记录级别的方法,每种方法都有适合使用的场景。
-E =
(例如, -E logger.org.elasticsearch.transport=trace
)。当您在单个节点上临时调试问题(例如,启动问题或开发过程中)时,这是最合适的。elasticsearch.yml
::
(例如, logger.org.elasticsearch.transport: trace
)。当您临时调试问题但未通过命令行(例如,通过服务)启动Elasticsearch或希望更永久地调整日志记录级别时,这是最合适的。通过集群设置:
PUT /_cluster/settings
{
"transient": {
"": ""
}
}
例如:
PUT /_cluster/settings
{
"transient": {
"logger.org.elasticsearch.transport": "trace"
}
}
当您需要动态调整正在运行的群集上的日志记录级别时,这是最合适的。
4. 通过log4j2.properties
:
logger..name =
logger..level =
例如:
logger.transport.name = org.elasticsearch.transport
logger.transport.level = trace
当您需要对日志进行细粒度控制时(例如,要将日志发送到另一个文件,或以其他方式管理日志;这是一种罕见的用例),这是最合适的。
除了常规日志记录外,Elasticsearch还允许您启用不赞成使用的操作日志记录。例如,这使您可以及早确定是否将来需要迁移某些功能。默认情况下,在WARN级别启用弃用日志记录,该级别将发出所有弃用日志消息。
logger.deprecation.level = warn
这将在您的日志目录中创建每日滚动弃用日志文件。定期检查此文件,尤其是在您打算升级到新的主要版本时。
默认的日志记录配置已将弃用日志的滚动策略设置为在1 GB之后滚动和压缩,并最多保留五个日志文件(四个滚动日志和活动日志)。
您可以弃用日志级别在config/log4j2.properties
文件通过以下方式设置为error
弃用它:
logger.deprecation.name = org.elasticsearch.deprecation
logger.deprecation.level = error
您可以通过HTTP头的部X-Opaque-Id
识别是否触发过时功能,在弃用JSON日志的字段中用户ID包含X-Opaque-ID
。
{
"type": "deprecation",
"timestamp": "2019-08-30T12:07:07,126+02:00",
"level": "WARN",
"component": "o.e.d.r.a.a.i.RestCreateIndexAction",
"cluster.name": "distribution_run",
"node.name": "node-0",
"message": "[types removal] Using include_type_name in create index requests is deprecated. The parameter will be removed in the next major version.",
"x-opaque-id": "MY_USER_ID",
"cluster.uuid": "Aq-c-PAeQiK3tfBYtig9Bw",
"node.id": "D7fUYfnfTLa2D7y-xw6tZg"
}
为了简化对Elasticsearch日志的解析,现在以JSON格式打印日志。这由Log4J布局属性配置appender.rolling.layout.type = ESJsonLayout
。此布局需要type_name
设置一个属性,该属性用于在解析时区分日志流。
appender.rolling.layout.type = ESJsonLayout
appender.rolling.layout.type_name = server
每行包含一个JSON文档,其属性在ESJsonLayout
中配置。有关更多详细信息,请参见此类javadoc。但是,如果JSON文档包含异常,它将被打印在多行上。第一行将包含常规属性,随后的行将包含格式为JSON数组的stacktrace。
您仍然可以使用自己的自定义布局。为此,请使用其他布局替换appender.rolling.layout.type
行 。请参阅以下示例:
appender.rolling.type = RollingFile
appender.rolling.name = rolling
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %.-10000m%n
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.log.gz
您可以在群集中每个节点上的配置文件elasticsearch.yml
中配置安全审核设置。有关更多信息,请参阅启用审核日志记录。
xpack.security.audit.enabled
设置为true,
在节点上启用审核。默认值为false
。这会将审核事件放在每个节点上名为
可以使用以下设置来控制事件和有关日志内容的其他信息:
xpack.security.audit.logfile.events.include
指定要包含在审核输出中的事件。默认值为: access_denied, access_granted, anonymous_access_denied, authentication_failed, connection_denied, tampered_request, run_as_denied, run_as_granted
。
xpack.security.audit.logfile.events.exclude
从输出中排除指定的事件。默认情况下,不排除任何事件。
xpack.security.audit.logfile.events.emit_request_body
指定是否在某些事件类型(如authentication_failed)上包含来自REST请求的请求正文。默认值为false。。
影响:审核时不执行任何筛选,因此当将请求正文包含在审核事件中时,敏感数据可以纯文本格式审核。
xpack.security.audit.logfile.emit_node_name
指定是否在每个审核事件中将节点名称作为字段包括在内。默认值为true
。
xpack.security.audit.logfile.emit_node_host_address
指定是否在每个审核事件中将节点的IP地址作为字段包括在内。默认值为false
。
xpack.security.audit.logfile.emit_node_host_name
指定是否在每个审核事件中将节点的主机名作为字段包括在内。默认值为false
。
xpack.security.audit.logfile.emit_node_id
指定是否在每个审核事件中将节点标识作为字段包括在内。这仅适用于新格式。也就是说,该信息在
文件中不存在。与节点名不同,如果管理员更改配置文件中的设置,节点名的值可能会更改,但节点ID将在群集重新启动后保持不变,并且管理员无法更改它。默认值为true
。
这些设置会影响忽略策略 ,这些策略可实现对将哪些审核事件打印到日志文件的精细控制。具有相同策略名称的所有设置将合并形成一个策略。如果事件符合特定策略的所有条件,则将其忽略并且不打印。
xpack.security.audit.logfile.events.ignore_filters.
用户名或通配符列表。指定的策略将不会为与这些值匹配的用户打印审核事件。
xpack.security.audit.logfile.events.ignore_filters.
身份验证领域名称或通配符的列表。指定的策略将不会为这些领域中的用户打印审核事件。
xpack.security.audit.logfile.events.ignore_filters.
角色名称或通配符列表。指定的策略将不会为具有这些角色的用户打印审核事件。如果用户具有多个角色,其中一些角色未包含在策略中,则该策略将 不包含此事件。
xpack.security.audit.logfile.events.ignore_filters.
索引名称或通配符的列表。当事件中的所有索引与这些值匹配时,指定的策略将不会打印审计事件。如果事件涉及多个索引,其中一些索引 未包含在策略中,则该策略将不覆盖此事件。
可以使用集群更新设置API在活动集群上动态更新这些跨集群复制设置 。
以下设置可用于对远程恢复期间传输的数据进行速率限制 :
ccr.indices.recovery.max_bytes_per_sec
(动态)
限制每个节点上的总入站和出站远程恢复流量。由于此限制适用于每个节点,但是可能有许多节点同时执行远程恢复,因此远程恢复字节的总数可能远高于此限制。如果将此限制设置得太高,则存在正在进行的远程恢复将消耗过多带宽(或其他资源)的风险,这可能会破坏群集的稳定性。leader 和follower 集群均使用此设置。例如,如果leader 将其设置为20mb
,则leader 将仅发送20mb/s
给follower ,即使follower 正在请求并可以接受60mb/s
。默认为40mb
。
可以设置以下 expert设置来管理远程恢复所消耗的资源:
ccr.indices.recovery.max_concurrent_file_chunks
(动态)
控制每次恢复可以并行发送的文件块请求的数量。由于可能已经并行运行了多个远程恢复,因此增加此 expert级别的设置可能仅在单个碎片的远程恢复未达到所配置的总入站和出站远程恢复流量的情况下ccr.indices.recovery.max_bytes_per_sec
才有用。默认为5
。允许的最大值为10
。
ccr.indices.recovery.chunk_size
(动态)
控制文件传输期间follower 请求的块大小。默认为 1mb
。
ccr.indices.recovery.recovery_activity_timeout
(动态)
控制恢复活动的超时。此超时主要适用于leader 集群。leader 集群必须在内存中打开资源,以便在恢复过程中向跟随者提供数据。如果leader 在这段时间内没有收到follower 的恢复请求,它将关闭资源。默认为60秒。
ccr.indices.recovery.internal_action_timeout
(动态)
在远程恢复过程中控制单个网络请求的超时。单个操作超时可能会使恢复失败。默认为60秒。
您无需配置任何设置即可使用转换。默认情况下启用。
所有这些设置都可以添加到elasticsearch.yml
配置文件中。还可以使用集群更新设置API在整个 集群中更新动态设置。
提示:动态设置优先于elasticsearch.yml
文件中的设置。
xpack.transform.enabled
设置为true
(默认值),在节点上启用转换。
如果elasticsearch.yml
设置为false
,则在节点上禁用转换API。因此,节点无法启动或管理转换或接收与转换API相关的传输(内部)通信请求。
重要:如果要在群集中使用转换功能,则必须在所有符合主机资格的节点上都将其xpack.transform.enabled
设置为true
。这是默认行为。
xpack.transform.num_transform_failure_retries
(动态)
转换遇到非致命错误时重试的次数。重试次数用完后,转换任务将标记为failed
。默认值为10
有效的最小值0
和最大值100
。如果转换已经在运行,则必须重新启动以应用设置。
这些是可用于配置索引生命周期管理的设置
xpack.ilm.enabled
无论ILM是启用还是禁用,将其设置为false都会禁用任何ILM REST API端点和功能。默认为true。
indices.lifecycle.poll_interval
(时间单位)索引生命周期管理检查符合策略标准索引的频率。默认为10m
。
这些索引级别的ILM设置通常是通过索引模板配置的。有关更多信息,请参阅设置策略。
index.lifecycle.name
用于管理索引的策略的名称。
index.lifecycle.rollover_alias
索引翻转时要更新的索引别名。在使用包含过渡操作的策略时指定。当索引翻转时,别名将更新以反映该索引不再是写索引。有关过渡的更多信息,请参阅《使用策略管理索引过渡》。
index.lifecycle.parse_origination_date
当配置为true时,将从索引名中分析起始日期。索引格式必须与模式^.*-{date_format}-\\d+
匹配,其中date_format为
yyyy.MM.dd
和结尾数字是可选的(经过翻转的索引通常会与完整格式匹配,例如 logs-2016.10.31-000002
)。如果索引名称与模式不匹配,则索引将创建失败。
index.lifecycle.origination_date
将用于计算其阶段索引期限的时间戳。这允许用户创建包含旧数据的索引,并使用旧数据的原始创建日期来计算索引期限。
您可以在elasticsearch.yml
文件中配置此License设置。有关更多信息,请参阅 许可管理。
xpack.license.self_generated.type
设置为basic
(默认)以启用基本X-Pack功能。
如果设置为trial
,则自动生成的许可证仅允许30天访问x-pack的所有功能。以后可以根据需要将群集降级为基本许可证。
您无需配置任何设置即可使用机器学习。默认情况下启用。
重要:机器学习使用SSE4.2指令,因此仅适用于CPU 支持 SSE4.2的机器。如果您在较旧的硬件上运行Elasticsearch,则必须禁用机器学习(将设置xpack.ml.enabled
为false
)。
所有这些设置都可以添加到elasticsearch.yml
配置文件中。还可以使用集群更新设置API在整个 集群中更新动态设置。
提示:动态设置优先于elasticsearch.yml
文件中的设置。
node.ml
设置为true
(默认)以将节点标识为机器学习节点。
如果elasticsearch.yml中
设置为false
,则节点无法运行作业。如果设置为, true
但xpack.ml.enabled
设置为false
,则node.ml
设置将被忽略,并且节点无法运行作业。如果要运行作业,集群中必须至少有一个机器学习节点。
重要:在专用协调节点或专用主节点上,禁用node.ml
角色。
xpack.ml.enabled
设置为true
(默认值)以在节点上启用机器学习。
如果elasticsearch.yml中
设置为false
,则在节点上禁用机器学习API。因此,该节点无法打开作业,启动数据馈送或接收与机器学习API相关的传输(内部)通信请求。它还会影响所有连接到该Elasticsearch实例的Kibana实例;您无需在这些kibana.yml
文件中禁用机器学习 。有关在特定Kibana实例中禁用机器学习的更多信息,请参阅 Kibana机器学习设置。
重要如果要在群集中使用机器学习功能,则必须在所有符合主机资格的节点上都将其xpack.ml.enabled
设置为true
。这是默认行为。
xpack.ml.max_machine_memory_percent
(动态)
机器学习可用于运行分析过程的机器内存的最大百分比。(这些过程与Elasticsearch JVM分开。)默认为 30
%。该限制基于计算机的总内存,而不是当前的可用内存。作业不会分配给节点,如果这样做会导致机器学习作业的估计内存使用量超过限制。
xpack.ml.max_model_memory_limit
(动态)
可以为此节点上的任何作业设置model_memory_limit
的最大属性值。如果尝试创建一个model_memory_limit
属性值大于此设置值的作业,则会发生错误。当您更新此设置时,现有作业不会受到影响。有关该model_memory_limit
属性的更多信息 ,请参见分析限制。
xpack.ml.max_open_jobs
(动态)
一个节点上可以同时运行的最大作业数。默认为 20
。在这种情况下,作业包括异常检测作业和数据帧分析作业。作业的最大数量也受内存使用量的限制。因此,如果作业的估计内存使用量将高于允许的内存使用量,则在节点上运行的作业将更少。在7.1版之前,此设置是每个节点的非动态设置。它在7.1版中成为群集范围内的动态设置。因此,只有在集群中的每个节点都运行7.1或更高版本时,才使用节点启动后对其值的更改。允许的最大值为512
。
xpack.ml.node_concurrent_job_allocations
(动态)
可以同时在每个节点的opening状态中的最大作业数。通常,作业在转移到open
状态之前会在此状态下花费少量时间。刚打开时必须还原大型模型的作业会在该opening
状态上花费更多时间。默认为2
。
这些设置用于高级用例。默认值通常就足够了:
xpack.ml.enable_config_migration
(动态)
保留。
xpack.ml.max_anomaly_records
(动态)
每个存储桶输出的最大记录数。默认值为 500
。
xpack.ml.max_lazy_ml_nodes
(动态)
延迟旋转的机器学习节点的数量。在打开第一个机器学习作业之前不需要ML节点的情况下很有用。预设为0
,并且最大可接受值为3
。如果ML节点的当前数量>=
大于此设置,则假定没有更多的惰性节点可用,因为已经提供了所需的节点数量。在设置了此设置的情况下打开作业,>0
并且没有节点可以接受该作业时,该作业将保持该OPENING
状态,直到将新的ML节点添加到群集并将该作业分配为在该节点上运行。
重要:此设置假定某些外部过程能够将ML节点添加到群集。仅当与此类外部过程结合使用时,此设置才有用。
xpack.ml.process_connect_timeout
(动态)
与Elasticsearch JVM分开运行的机器学习过程的连接超时。默认为10s
。一些机器学习处理是由与Elasticsearch JVM分开运行的进程完成的。启动此类进程时,它们必须连接到Elasticsearch JVM。如果该进程在此设置指定的时间段内未连接,则认为该进程已失败。默认为10s
。此设置的最小值为5s
。
默认情况下,启用监视,但禁用数据收集。要启用数据收集,请使用xpack.monitoring.collection.enabled
进行设置。
您可以在elasticsearch.yml
文件中配置这些监视设置。您还可以使用集群更新设置API动态设置其中一些 设置。
群集设置优先于elasticsearch.yml
文件中的设置。
要调整如何监控数据显示在监控界面,在kibana.yml中
配置 xpack.monitoring
设置。要控制如何从Logstash收集监控数据,在logstash.yml
配置 xpack.monitoring
设置 。
有关更多信息,请参阅监视集群。
xpack.monitoring.enabled
设置为true
(默认值)以对节点上的Elasticsearch启用Elasticsearch X-Pack监视。
注意:要启用数据收集,还必须将设置
xpack.monitoring.collection.enabled
为true
。默认值为false
。
xpack.monitoring.collection
设置控制如何从Elasticsearch节点收集数据。您可以使用群集更新设置API动态更改所有监控收集设置。
xpack.monitoring.collection.enabled
(动态)
[ 6.3.0 ] 在6.3.0中添加。设置为true
启用监控数据收集。当此设置为false
默认值时,将不会收集Elasticsearch监控数据,并且会忽略来自其他来源(如Kibana,Beats和Logstash)的所有监控数据。
xpack.monitoring.collection.interval
(动态)
设置为-1
禁用数据收集,从7.0.0开始,不再支持。 [ 6.3.0 ]在6.3.0中弃用。使用xpack.monitoring.collection.enabled
设置为false
。
控制收集数据样本的频率。默认为10s
。如果您修改收集间隔,则将kibana.yml中的
xpack.monitoring.min_interval_seconds
选项设置为相同的值。
xpack.monitoring.elasticsearch.collection.enabled
(动态)
控制是否应收集有关Elasticsearch集群的统计信息。默认为true
。这与xpack.monitoring.collection.enabled不同,后者允许您启用或禁用所有监视收集。但是,此设置只是禁用了Elasticsearch数据的收集,同时仍然允许其他数据(例如,Kibana,Logstash,Beats或APM Server监视数据)通过此群集。
xpack.monitoring.collection.cluster.stats.timeout
(动态)
(时间值)用于收集集群统计信息的超时。默认为10s
。
xpack.monitoring.collection.node.stats.timeout
(动态)
(时间值)收集节点统计信息的超时时间。默认为10s
。
xpack.monitoring.collection.indices
(动态)
控制监控从哪个索引收集数据。默认为所有索引。将索引名称指定为以逗号分隔的列表,例如test1,test2,test3
。名称可以包括通配符,例如test*
。您可以在前缀前明确排除索引“-”
。例如test*,-test3
将监测,与开始的所有索引test
除外test3
。系统索引(例如.security *或.kibana *)始终以“.
”开头,通常应对其进行监视。考虑添加.*
到索引列表中,以确保监视系统索引。例如.*,test*,-test3
xpack.monitoring.collection.index.stats.timeout
(动态)
(时间值)用于收集索引统计信息的超时。默认为10s
。
xpack.monitoring.collection.index.recovery.active_only
(动态)
控制是否收集所有回收率。设置为true
仅收集活动的恢复。默认为false
。
xpack.monitoring.collection.index.recovery.timeout
(动态)
(时间值)用于收集恢复信息的超时。默认为10s
。
xpack.monitoring.history.duration
(动态)
(时间值)保留期限,超过该期限后,将自动删除监视导出器创建的索引。默认为7d
(7天)。
此设置的最小值1d
(1天)以确保正在监视某些内容,并且不能将其禁用。
重要:此设置当前仅影响local
类型导出器。使用http
导出器创建的索引不会自动删除。
xpack.monitoring.exporters
配置代理在何处存储监视数据。默认情况下,代理使用本地导出程序,该导出程序为安装了该群集的群集上的监视数据编制索引。使用HTTP导出器将数据发送到单独的监视群集。有关更多信息,请参阅本地导出器设置, HTTP导出器设置及其 工作方式。
local
导出器设置local
导出器是监视使用的默认导出器。顾名思义,它将数据导出到本地集群,这意味着不需要太多配置。
如果不提供任何导出器,则监视将自动为您创建一个导出器。如果提供了任何导出器,则不添加默认值。
xpack.monitoring.exporters.my_local:
type: local
type
本地导出器的值,必须始终为local,
并且是必需的。
use_ingest
是否在每个批量请求中向集群和管道处理器提供占位符管道。默认值为true
。如果被禁用,则意味着它将不使用管道,这意味着将来的发行版无法将批量请求自动升级为可用于将来的请求。
cluster_alerts.management.enabled
是否为此集群创建集群警报。默认值为true
。要使用此功能,必须启用Watcher。如果您具有基本许可证,则不会显示群集警报。
以下列出了http
导出器可以提供的设置。所有设置均显示在您为导出器选择的名称后面:
xpack.monitoring.exporters.my_remote:
type: http
host: ["host:port", ...]
type
HTTP导出程序的值,必须始终为http,
并且是必需的。
host
主机支持多种格式,既可以是数组,也可以是单个值。支持的格式包括 hostname
,hostname:port,
http://hostname
,http://hostname:port
,https://hostname
,和 https://hostname:port
。主机不能猜测。默认方案始终是http,如果未作为主机字符串的一部分提供,则默认端口始终是9200。
xpack.monitoring.exporters:
example1:
type: http
host: "10.1.2.3"
example2:
type: http
host: ["http://10.1.2.4"]
example3:
type: http
host: ["10.1.2.5", "10.1.2.6"]
example4:
type: http
host: ["https://10.1.2.3:9200"]
auth.username
如果提供auth.password,则需要用户名。
auth.password
auth.username
的密码。
connection.timeout
(时间值)HTTP连接应该等待套接字打开以请求的时间。默认值为6s
。
connection.read_timeout
(时间值)HTTP连接应该等待套接字发送回响应的时间。默认值为10 * connection.timeout
(如果未设置为60s
)。
ssl
每个HTTP导出器都可以定义自己的TLS / SSL设置或继承它们。请参阅下面的“ TLS / SSL”部分。
proxy.base_path
前缀任何传出请求的基本路径,例如/base/path
(例如,批量请求将作为发送/base/path/_bulk
)。没有默认值。
headers
添加到每个请求的可选标头,可以帮助通过代理路由请求。
xpack.monitoring.exporters.my_remote:
headers:
X-My-Array: [abc, def, xyz]
X-My-Header: abc123
基于数组的头被发送n次,其中n是数组的大小。无法设置内容类型Content-Type
和内容长度Content-Length
。监视代理创建的任何头都将覆盖此处定义的任何内容。
index.name.time_format
默认情况下,更改每日监视索引的默认日期后缀的机制。默认值为YYYY.MM.DD,这就是每天创建索引的原因。
use_ingest
是否为每个批量请求向监视群集和管道处理器提供占位符管道。默认值为true。如果禁用,则意味着它将不使用管道,这意味着将来的版本无法自动将批量请求升级为将来可以证明的请求。
cluster_alerts.management.enabled
是否为此集群创建集群警报。默认值为true
。要使用此功能,必须启用Watcher。如果您具有基本许可证,则不会显示群集警报。
cluster_alerts.management.blacklist
阻止创建特定的群集警报。它还会删除当前群集中已经存在的所有适用监视。
您可以将以下任何监视标识符添加到黑名单:
elasticsearch_cluster_status
elasticsearch_version_mismatch
elasticsearch_nodes
kibana_version_mismatch
logstash_version_mismatch
xpack_license_expiration
例如:["elasticsearch_version_mismatch","xpack_license_expiration"]
。
您可以配置以下TLS / SSL设置。如果未配置设置, 则使用默认TLS / SSL设置。
xpack.monitoring.exporters.$NAME.ssl.supported_protocols
支持版本的协议。有效协议:SSLv2Hello、SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3。如果JVM支持TLSv1.3,则默认为TLSv1.3、TLSv1.2、TLSv1.1,否则为TLSv1.2、TLSv1.1。
xpack.monitoring.exporters.$NAME.ssl.verification_mode
控制证书的验证。有效值是none
, certificate
和full
。默认为full
。
xpack.monitoring.exporters.$NAME.ssl.cipher_suites
支持的密码套件可以在Oracle的 Java密码体系结构文档中找到。默认为``。
以下设置用于指定通过SSL / TLS连接进行通信时应使用的私钥,证书和受信任证书。私钥和证书是可选的,如果服务器要求客户端认证进行PKI认证,则将使用私钥和证书。如果未指定以下任何设置,则使用默认TLS / SSL设置。
使用PEM编码的文件时,请使用以下设置:
xpack.monitoring.exporters.$NAME.ssl.key
包含私钥的PEM编码文件的路径。
xpack.monitoring.exporters.$NAME.ssl.key_passphrase
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
xpack.monitoring.exporters.$NAME.ssl.secure_key_passphrase
(安全)
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
xpack.monitoring.exporters.$NAME.ssl.certificate
包含在请求时将显示的证书(或证书链)的PEM编码文件的路径。
xpack.monitoring.exporters.$NAME.ssl.certificate_authorities
应信任的PEM编码证书文件的路径列表。
使用包含私钥,证书和应信任的证书的Java密钥库文件(JKS)时,请使用以下设置:
xpack.monitoring.exporters.$NAME.ssl.keystore.path
存放私钥和证书的密钥库的路径。
xpack.monitoring.exporters.$NAME.ssl.keystore.password
密钥库的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_password
(安全)
密钥库的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.key_password
密钥库中私钥的密码。默认值与xpack.monitoring.exporters.$NAME.ssl.keystore.password
相同。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_key_password
(安全)
密钥库中私钥的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.path
信任库文件的路径。
xpack.monitoring.exporters.$NAME.ssl.truststore.password
信任库的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password
(安全)
信任库的密码。
Elasticsearch可以配置为使用PKCS#12容器文件(.p12或.pfx文件),这些文件包含应信任的私钥、证书和证书。
PKCS#12文件的配置方式与Java密钥库文件相同:
xpack.monitoring.exporters.$NAME.ssl.keystore.path
保存私钥和证书的PKCS#12文件的路径。
xpack.monitoring.exporters.$NAME.ssl.keystore.type
将此设置为PKCS12以指示密钥库是PKCS#12文件。
xpack.monitoring.exporters.$NAME.ssl.keystore.password
PKCS#12文件的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_password
(安全)
PKCS#12文件的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.key_password
存储在PKCS#12文件中的私钥的密码。默认值与xpack.monitoring.exporters.$NAME.ssl.keystore.password相同。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_key_password
(安全)
存储在PKCS#12文件中的私钥的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.path
保存要信任的证书的PKCS#12文件的路径。
xpack.monitoring.exporters.$NAME.ssl.truststore.type
将此设置为PKCS12以指示信任库是PKCS#12文件。
xpack.monitoring.exporters.$NAME.ssl.truststore.password
PKCS#12文件的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password
(安全)
PKCS#12文件的密码。
可以将Elasticsearch配置为使用PKCS#11令牌,该令牌包含私钥,证书和应信任的证书。
PKCS#11令牌需要在JVM级别进行其他配置,并且可以通过以下设置启用:
xpack.monitoring.exporters.$NAME.keystore.type
将此设置为PKCS11以指示PKCS#11令牌应用作密钥库。
xpack.monitoring.exporters.$NAME.truststore.type
将此设置为PKCS11以指示PKCS#11令牌应用作信任库。
注意:在配置JVM配置为用作Elasticsearch的密钥库或信任库的PKCS#11令牌时,可以通过在配置的上下文中将适当的值设置ssl.truststore.password
或ssl.truststore.secure_password
来配置令牌的PIN。由于只能配置一个PKCS#11令牌,因此只有一个密钥库和信任库可用于Elasticsearch中的配置。这又意味着在传输层和http层中,TLS只能使用一个证书。
默认情况下,拥有基本或试用许可证时,Elasticsearch安全功能被禁用。要启用安全功能,请使用xpack.security.enabled
设置。
您可以配置xpack.security
设置以 启用匿名访问 和执行消息身份验证, 设置文档和字段级安全性, 配置领域, 使用SSL加密通信以及 审核安全事件。
除了安全设置(您已将其添加到Elasticsearch密钥库)外,所有这些设置都可以添加到配置文件elasticsearch.yml
中。有关创建和更新Elasticsearch密钥库的更多信息,请参阅“ 安全设置”。
xpack.security.enabled
设置为true,
在节点上启用Elasticsearch安全功能。
如果设置为false
,这是基本许可证和试用版许可证的默认值,则会禁用安全功能。它还会影响所有连接到该Elasticsearch实例的Kibana实例;您无需在这些kibana.yml
文件中禁用安全功能。有关在特定Kibana实例中禁用安全功能的更多信息,请参阅 Kibana安全设置。
提示: 如果您具有金牌或更高级别的许可证,则默认值为
true
;。我们建议您显式添加此设置以避免混淆。
xpack.security.hide_settings
以逗号分隔的设置列表,该列表从集群节点info API的结果中省略 。您可以使用通配符在列表中包括多个设置。例如,以下值将隐藏ad1 active_directory领域的所有设置: 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.authc.password_hashing.algorithm
指定用于安全用户凭据存储的哈希算法。请参阅表2,“密码哈希算法”。默认为bcrypt
。
您可以在中配置以下匿名访问设置 elasticsearch.yml
。有关更多信息,请参阅启用匿名访问。
xpack.security.authc.anonymous.username
匿名用户的用户名(主要)。默认为_es_anonymous_user
。
xpack.security.authc.anonymous.roles
与匿名用户关联的角色。需要。
xpack.security.authc.anonymous.authz_exception
当true
为时,如果匿名用户没有所请求操作的适当权限,则返回HTTP 403响应。不提示用户提供凭据以访问所请求的资源。设置false
为时,将返回HTTP 401响应,并且用户可以为凭据提供具有适当权限的访问权限。默认为true
。
在安全功能接受通配符模式的位置(例如,角色中的索引模式,角色映射API中的组匹配),每个模式都被编译成一个自动机。可以使用以下设置来控制此行为。
xpack.security.automata.max_determinized_states
单个模式可以创建多少个自动机状态的上限。这可以防止过于困难(例如,指数级)模式。默认为100,000
。
xpack.security.automata.cache.enabled
是否缓存已编译的自动机。编译自动机可能会占用大量CPU,并且可能会使某些操作变慢。缓存减少了自动机需要编译的频率。默认为true
。
xpack.security.automata.cache.size
自动机缓存中保留的最大项目数。默认为10,000
。
xpack.security.automata.cache.ttl
保留在自动机缓存中的项目中的时间长度(基于最近的使用情况)。默认为48h
(48小时)。
您可以在elasticsearch.yml
中设置以下文档和字段级别的安全设置。有关更多信息,请参阅 设置字段和文档级别的安全性。
xpack.security.dls_fls.enabled
设置为false
防止配置文档和字段级别的安全性。默认为true
。
xpack.security.dls.bitset.cache.ttl
用于文档级安全性BitSet
缓存条目的生存时间。文档级安全性查询可能取决于Lucene BitSet对象,并且这些对象会自动缓存以提高性能。默认情况下将过期168h
(7天)内未使用的条目过期。
xpack.security.dls.bitset.cache.size
用于文档级安全性BitSet
缓存条目的最大内存使用量。文档级安全性查询可能取决于Lucene BitSet对象,并且这些对象会自动缓存以提高性能。默认值为50mb
,之后将清除最近最少使用的条目。
您可以在elasticsearch.yml
中设置以下令牌服务设置 。
xpack.security.authc.token.enabled
设置为false
禁用内置令牌服务。除非xpack.security.http.ssl.enabled设置为
true
,否则默认为false
。这样可以防止从纯HTTP连接嗅探令牌。
xpack.security.authc.token.timeout
令牌有效的时间长度。默认情况下,此值为20m或
20分钟。最大值为1小时。
您可以在 elasticsearch.yml
中设置以下API密钥服务设置。
xpack.security.authc.api_key.enabled
设置为false
禁用内置API密钥服务。除非xpack.security.http.ssl.enabled设置为
true
,否则默认为false
。这样可以防止通过纯http连接嗅探API密钥。
xpack.security.authc.api_key.hashing.algorithm
指定用于保护API密钥凭据的哈希算法。请参阅表2,“密码哈希算法”。默认为pbkdf2
。
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
。
在elasticsearch.yml的xpack.security.authc.realms命名空间中配置域(Realm)设置。例如:
xpack.security.authc.realms:
native.realm1: #1
order: 0
...
ldap.realm2:
order: 1
...
active_directory.realm3:
order: 2
#1 指定域(Realm)的类型(例如,native
,ldap
, active_directory
,pki
,file
,kerberos
,saml
)和域(Realm)名称。必须提供此信息。
有效设置因域(Realm)类型而异。有关更多信息,请参阅用户认证。
order
域(Realm)链中域(Realm)的优先级。首先查询低级域(Realm)。尽管不是必需的,但在配置多个域(Realm)时,强烈建议使用此设置。默认为Integer.MAX_VALUE
。
enabled
指示是否启用域(Realm)。您可以使用此设置禁用域(Realm)而不删除其配置信息。默认为true
。
对于本机域(Realm),type
必须将设置为native
。除了对所有域(Realm)都有效的设置之外 ,您还可以指定以下可选设置:
cache.ttl
缓存的用户条目的生存时间。在此时间段内,将缓存用户及其凭据的哈希。使用标准Elasticsearch 时间单位指定时间段。默认为20m
。
cache.max_users
在任何给定时间可以存在于高速缓存中的最大用户条目数。默认值为100,000。
cache.hash_algo
(专家设置)用于内存中缓存的用户凭据的哈希算法。有关可能的值,请参见表1,“高速缓存哈希算法”。默认为ssha256
。
authentication.enabled
如果设置为false
,则禁用此域(Realm)的身份验证支持,因此它仅支持用户查找。(请参阅运行方式和 授权域(Realm)功能)。默认为true
。
该type
设置必须设置为file
。除了适用于所有域(Realm)的设置之外 ,您还可以指定以下设置:
cache.ttl
缓存的用户条目的生存时间。在此配置的时间段内,将缓存用户及其凭据的哈希。默认为20m
。使用标准Elasticsearch 时间单位指定值。默认为20m
。
cache.max_users
在给定时间可以存在于高速缓存中的最大用户条目数。默认值为100,000。
cache.hash_algo
(专家设置)用于内存中缓存的用户凭据的哈希算法。请参见表1,“高速缓存哈希算法”。默认为ssha256
。
authentication.enabled
如果设置为false
,则禁用此域(Realm)的身份验证支持,因此它仅支持用户查找。(请参阅运行方式和 授权域(Realm)功能)。默认为true
。
该type
设置必须设置为ldap
。除了适用于所有域(Realm)的 设置外,您还可以指定以下设置:
url
LDAP格式的一个或多个ldap[s]://
。
要提供多个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。仅适用于用户搜索模式。如果未指定,则尝试进行匿名绑定。默认为空。由于其潜在的安全影响,因此不会通过node info API公开bind_dn
。
bind_password
[ 6.3 ] 在6.3中弃用。使用secure_bind_password
代替。用于绑定到LDAP目录的用户的密码。默认为空。由于其潜在的安全影响,因此不会通过node info API公开bind_password
。
secure_bind_password
(安全)
用于绑定到LDAP目录的用户的密码。默认为空。
user_dn_templates
使用字符串替换用户名的DN模板{0}
。此设置是多值的;您可以指定多个用户上下文。需要以用户模板模式运行。如果指定为user_search.base_dn
,则此设置无效。有关不同模式的更多信息,请参阅LDAP用户认证。
authorization_realms
委托授权应咨询的域(Realm)名称。如果使用此设置,则LDAP域不执行角色映射,而是从列出的域中加载用户。将按照在此列表中定义的顺序查阅所引用的域。请参阅将授权委派到另一个域。
提示:如果指定了任何以user_search
开头的设置,则user_dn_templates
设置将被忽略。
user_group_attribute
指定要在用户上检查的组成员资格属性。如果group_search
指定了任何设置,则此置无效。默认为memberOf
。
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
指定用于查找组的过滤器。 未设置时,域将搜索具有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,这些URL将用于继续LDAP操作(例如,搜索)。默认为true
。
metadata
应从LDAP服务器加载并存储在已验证用户的元数据字段中的其他LDAP属性的列表。
timeout.tcp_connect
建立LDAP连接的TCP连接超时时间。s
结尾指秒,ms
表示毫秒。默认为5s
(5秒)。
timeout.tcp_read
建立LDAP连接后的TCP读取超时时间。s
结尾指秒,ms
表示毫秒。默认为5s
(5秒)。
timeout.ldap_search
LDAP服务器对LDAP搜索强制执行超时期限。s
结尾指秒,ms
表示毫秒。默认为5s
(5秒)。
ssl.key
包含私钥的PEM编码文件的路径,如果LDAP服务器需要客户端身份验证,则使用该路径。ssl.key和
ssl.keystore.path
不能同时使用。
ssl.key_passphrase
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
ssl.secure_key_passphrase
(安全)
用于解密私钥的密码。
ssl.certificate
指向PEM编码文件的路径,该文件包含将在客户端连接时呈现给客户端的证书(或证书链)。
ssl.certificate_authorities
应当信任的PEM编码证书文件的路径列表。 ssl.certificate_authorities与ssl.truststore.path
不能同时使用。
ssl.keystore.path
包含私钥和证书的Java Keystore文件的路径。 ssl.key与ssl.keystore.path
可能无法同时使用。
ssl.keystore.type
密钥库文件的格式。应当是:jks以使用Java密钥库格式,PKCS12以使用PKCS#12文件,或者PKCS11以使用PKCS#11令牌。默认为jks。
ssl.keystore.password
密钥库的密码。
ssl.keystore.secure_password
(安全)
密钥库的密码。
ssl.keystore.key_password
密钥库中密钥的密码。默认为密钥库密码。
ssl.keystore.secure_key_password
密钥库中密钥的密码。默认为密钥库密码。
ssl.truststore.path
包含要信任的证书的Java Keystore文件的路径。 ssl.certificate_authorities与
ssl.truststore.path
不能同时使用。
ssl.truststore.password
信任库的密码。
ssl.truststore.secure_password
(安全)
信任库的密码。
ssl.truststore.type
密钥库文件的格式。应当是:jks以使用Java密钥库格式,PKCS12以使用PKCS#12文件,或者PKCS11以使用PKCS#11令牌。默认为jks。
ssl.verification_mode
指示ldaps
用于防止中间攻击和证书伪造中的人时使用的验证类型。值是none
,certificate
和full
。默认为full
。
有关ssl.verification_mode
这些值的说明,请参见。
ssl.supported_protocols
TLS/SSL支持的协议(带版本)。如果JVM支持TLSv1.3,则默认为TLSv1.3、TLSv1.2、TLSv1.1,否则为TLSv1.2、TLSv1.1。
ssl.cipher_suites
指定与LDAP服务器通信时应支持的密码套件。支持的密码套件可以在Oracle的 Java密码体系结构文档中找到。请参阅ssl.cipher_suites
以获取默认值。
cache.ttl
指定缓存的用户条目的生存时间。在此时间段内,将缓存用户及其凭据的哈希。使用标准的Elasticsearch 时间单位。默认为 20m
。
cache.max_users
指定高速缓存可以包含的最大用户条目数。默认为100000
。
cache.hash_algo
(专家设置)指定用于内存中缓存的用户凭据的哈希算法。请参见表1,“高速缓存哈希算法”。默认为ssha256
。
authentication.enabled
如果设置为false
,则禁用此域的身份验证支持,因此它仅支持用户查找。(请参阅运行方式和 授权域功能)。默认为true
。
type
设置必须设置为active_directory
。除了适用于所有域的设置之外 ,您还可以指定以下设置:
url
格式为ldap[s]://
的一个或多个LDAP URL 。默认为 ldap://
。使用SSL / TLS进行连接或使用自定义端口时,此设置是必需的。
要提供多个URL,请使用YAML数组(["ldap://server1:636", "ldap://server2:636"]
)或以逗号分隔的字符串("ldap://server1:636, ldap://server2:636"
)。
虽然两者都受支持,但是您不能混合使用ldap
和ldaps
协议。
如果没有提供URL,Elasticsearch将使用默认值ldap://
。此默认值使用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_dn
设置,则群集可以从此设置派生这些值。必需项。
bind_dn
用于绑定到Active Directory并执行搜索的用户的DN。默认为空。由于其潜在的安全影响,因此不会通过node info API公开bind_dn
。
bind_password
[ 6.3 ] 在6.3中弃用。使用secure_bind_password
代替。用于绑定到Active Directory的用户的密码。默认为空。由于其潜在的安全影响,因此不会通过node info API公开 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查找用户对象。如果指定,则必须是有效的LDAP用户搜索筛选器。例如,(&(objectClass=user)(userPrincipalName={1}))
。{1}
是用户提供的完整用户主体名称。有关更多信息,请参见 搜索过滤器语法。
user_search.down_level_filter
指定用于查找给定下层登录名(域\用户)的用户的筛选器。默认筛选器在提供的域中查找具有匹配的sAMAccountName的用户对象。如果指定,则必须是有效的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
建立LDAP连接后的TCP读取超时时间。s
结端指秒,ms
表示毫秒。默认为5s
(5秒)。
timeout.ldap_search
LDAP服务器对LDAP搜索强制执行超时期限。s
结端指秒,ms
表示毫秒。默认为5s
(5秒)。
ssl.certificate
包含证书(或证书链)的PEM编码文件的路径,当客户端连接时将显示给它们。
ssl.certificate_authorities
应当信任的PEM编码证书文件的路径列表。 ssl.certificate_authorities与
ssl.truststore.path
不能同时使用。
ssl.key
包含私钥的PEM编码文件的路径,当Active Directory服务器需要客户端身份验证时使用该路径。ssl.key与
ssl.keystore.path
不能同时使用。
ssl.key_passphrase
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
ssl.secure_key_passphrase
(安全)
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
ssl.keystore.key_password
密钥库中密钥的密码。默认为密钥库密码。
ssl.keystore.secure_key_password
(安全)
密钥库中密钥的密码。默认为密钥库密码。
ssl.keystore.password
密钥库的密码。
ssl.secure_keystore.password
(安全)
密钥库的密码。
ssl.keystore.path
包含私钥和证书的Java Keystore文件的路径。 ssl.key与
ssl.keystore.path
不能同时使用。
ssl.keystore.type
密钥库文件的格式。应该是:jks以使用Java密钥库格式,PKCS12以使用PKCS#12文件,或者PKCS11以使用PKCS#11令牌。默认为jks。
ssl.truststore.password
信任库的密码。
ssl.truststore.secure_password
(安全)
信任库的密码。
ssl.truststore.path
包含要信任的证书的Java Keystore文件的路径。 ssl.certificate_authorities与
ssl.truststore.path
不能同时使用。
ssl.truststore.type
信任库文件的格式。应该是:jks以使用Java密钥库格式,PKCS12以使用PKCS#12文件,或者PKCS11以使用PKCS#11令牌。默认为jks。
ssl.verification_mode
指示使用ldaps防止中间人攻击和证书伪造时的验证类型。值为none、certificate和full。默认为full
。
有关ssl.verification_mode
这些值的说明,请参见。
ssl.supported_protocols
TLS/SSL支持的协议(带版本)。如果JVM支持TLSv1.3,则默认为TLSv1.3、TLSv1.2、TLSv1.1,否则为TLSv1.2、TLSv1.1。
ssl.cipher_suites
指定与Active Directory服务器通信时应支持的密码套件。支持的密码套件可以在Oracle的 Java密码体系结构文档中找到。请参阅ssl.cipher_suites
以获取默认值。
cache.ttl
指定缓存用户项的生存时间。在此配置的时间段内,将缓存用户及其凭据的哈希值。使用标准的Elasticsearch 时间单位。默认为20m
。
cache.max_users
指定高速缓存可以包含的最大用户条目数。默认为100000
。
cache.hash_algo
(专家设置)指定用于内存中缓存的用户凭据的哈希算法。请参见表1,“高速缓存哈希算法”。默认为ssha256
。
authentication.enabled
如果设置为false
,则禁用此域的身份验证支持,因此它仅支持用户查找。(请参阅运行方式和 授权域功能)。默认为true
。
follow_referrals
如果设置为true
,则Elasticsearch遵循LDAP服务器返回的引用。引荐是服务器返回的URL,这些URL将用于继续LDAP操作(例如search
)。默认为true
。
type
设置必须设置为pki
。除了适用于所有域的设置之外 ,您还可以指定以下设置:
username_pattern
用于从证书DN中提取用户名的正则表达式模式。第一个匹配组用作用户名。默认为CN=(.*?)(?:,\|$)
。
certificate_authorities
应用于验证用户证书是否可信的PEM证书文件的路径列表。默认为为SSL配置的受信任证书。此设置不能与truststore.path一起使用。
truststore.algorithm
信任库的算法。默认为SunX509
。
truststore.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域配置身份验证委派。
type
设置必须设置为saml
。除了适用于所有域的设置之外 ,您还可以指定以下设置:
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,则它必须是文件URL或https URL。Elasticsearch会自动轮询此元数据资源,并在检测到更改时重新加载IdP配置。基于文件的资源的轮询频率由全局Elasticsearch resource.reload.interval.high设置确定,该设置默认为5秒。https资源的轮询频率由领域的idp.metadata.http.refresh设置确定。
idp.metadata.http.refresh
控制https
检查元数据更改的频率。默认为1h
(1小时)。
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 / v1 / saml”端点。例如, https://kibana.example.com/api/security/v1/saml
。
sp.logout
Kibana中的“单一注销”服务的URL。通常,这是您的Kibana服务器的“注销”端点。例如, 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
在应用于用户的主体属性之前,与attribute s.pattern指定的SAML属性匹配的Java正则表达式。属性值必须与模式匹配,并且第一个捕获组的值用作主体。例如,^([^@]+)@example\\.com$
匹配来自“example.com”域的电子邮件地址,并使用本地部分作为主体。
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属性。
nameid_format
请求IdP验证当前用户时应请求的NameID格式。默认为请求临时名称(urn:oasis:names:tc:SAML:2.0:nameid-format:transient
)。
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对当前用户进行身份验证时,将在请求的身份验证上下文中包含以逗号分隔的身份验证上下文类参考值列表。相应身份验证响应的身份验证上下文应包含至少一个请求的值。
有关更多信息,请参见 请求特定的身份验证方法。
如果配置了签名密钥(即设置了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 Keystore(jks)或PKCS#12文件。 signing.key与
signing.keystore.path
不能同时使用。
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.path。
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
指定用于HTTP客户端身份验证的PEM编码的私钥的路径(如果需要)。ssl.key与
ssl.keystore.path
不能同时使用。
ssl.key_passphrase
指定密码短语,以便在加密PEM编码的私钥(ssl.key)时对其进行解密。不能与ssl.secure_key_passphrase一起使用。
ssl.secure_key_passphrase
(安全)
指定密码短语,以便在加密PEM编码的私钥(ssl.key)时对其进行解密。不能与ssl.key_passphrase
一起使用。
ssl.certificate
指定与密钥(ssl.key)关联的PEM编码证书(或证书链)的路径。仅当设置了ssl.key时才能使用此设置。
ssl.certificate_authorities
指定应信任的PEM编码证书颁发机构证书的路径。不能同时使用ssl.certificate_authorities
和ssl.truststore.path
。
ssl.keystore.path
指定包含私钥和证书的密钥库的路径。必须是Java Keystore(jks)或PKCS#12文件。 ssl.key与
ssl.keystore.path
不能同时使用。
ssl.keystore.type
密钥库的类型(ssl.keystore.path)。必须是jks或PKCS12。如果密钥库路径以“.p12”、“.pfx”或“pkcs12”结尾,则此设置默认为pkcs12。否则,默认为jks。
ssl.keystore.password
密钥库的密码(ssl.keystore.path)。此设置不能与ssl.keystore.secure_password
一起使用。
ssl.keystore.secure_password
(安全)
密钥库的密码(ssl.keystore.path)。此设置不能与ssl.keystore.password一起使用。
ssl.keystore.key_password
密钥库中密钥的密码(ssl.keystore.path)。默认为密钥库密码。此设置不能与ssl.keystore.secure_key_password
一起使用。
ssl.keystore.secure_key_password
(安全)
密钥库中密钥的密码(ssl.keystore.path)。默认为密钥库密码。此设置不能与ssl.keystore.key_password
一起使用。
ssl.truststore.path
包含要信任的证书的密钥库的路径。必须是Java密钥库(jks)或PKCS#12文件。不能同时使用ssl.certificate_authorities
和ssl.truststore.path
。
ssl.truststore.type
信任库的类型(ssl.truststore.path
)。必须为jks
或 PKCS12
。如果密钥库路径以“ .p12”,“.pfx”或“ pkcs12”结尾,则此设置默认为PKCS12
。否则,默认为jks
。
ssl.truststore.password
信任库的密码(ssl.truststore.path)。此设置不能与ssl.truststore.secure_password
一起使用。
ssl.truststore.secure_password
(安全)
信任库的密码(ssl.truststore.path
)。此设置不能与ssl.truststore.password
一起使用。
ssl.verification_mode
其中一个是full(验证主机名和证书路径)、certificate(验证证书路径,但不验证主机名)或none(不执行验证)。默认为full
。
有关这些值的详细说明,请参见ssl.verification_mode
。
ssl.supported_protocols
指定TLS/SSL支持的协议。如果JVM支持TLSv1.3,则默认为TLSv1.3、TLSv1.2、TLSv1.1,否则为TLSv1.2、TLSv1.1。
ssl.cipher_suites
指定应支持的密码套件。
对于Kerberos领域,type
必须设置为kerberos
。除了适用于所有域的设置之外 ,您还可以指定以下设置:
keytab.path
指定Kerberos keytab文件的路径,该文件包含此Elasticsearch节点使用的服务主体。这必须是Elasticsearch配置目录中的一个位置,并且该文件必须具有读取权限。必需的。
remove_realm_name
设置为true可删除主体名称的领域部分。Kerberos中的主体名称的格式为user/instance@REALM
。如果此选项为true,则域部分(@REALM
)将不包含在用户名中。默认为false。
krb.debug
设置为true
启用Java登录模块的调试日志,该模块提供对Kerberos身份验证的支持。默认为false
。
cache.ttl
缓存的用户条目的生存时间。用户在此时间段内被缓存。使用标准Elasticsearch 时间单位指定时间段 。默认为20m
。
cache.max_users
在任何给定时间可以存在于高速缓存中的最大用户条目数。默认值为100,000。
authorization_realms
委托授权应咨询的域名称。如果使用此设置,则Kerberos域不执行角色映射,而是从列出的域中加载用户。请参阅将授权委派到另一个域。
除了适用于所有域的设置之外,您还可以指定以下设置:
op.issuer
OpenID连接提供程序的可验证标识符。颁发者标识符通常是使用https方案的区分大小写的URL,该方案包含方案、主机和可选的端口号和路径组件,而不包含查询或片段组件。此设置的值应由OpenID Connect提供程序提供。
op.authorization_endpoint
OpenID连接提供程序中授权终结点的URL。此设置的值应由OpenID Connect提供程序提供。
op.token_endpoint
OpenID连接提供程序中令牌终结点的URL。此设置的值应由OpenID Connect提供程序提供。
op.userinfo_endpoint
OpenID连接提供程序中用户信息终结点的URL。此设置的值应由OpenID Connect提供程序提供。
op.endsession_endpoint
OpenID连接提供程序中结束会话终结点的URL。此设置的值应由OpenID Connect提供程序提供。
op.jwkset_path
JSON Web密钥集的路径或URL,其中包含OpenID连接提供程序用于签名令牌和声明响应的密钥材料。如果提供了路径,则会相对于Elasticsearch配置目录解析该路径。如果提供了URL,则它必须是文件URL或https URL。Elasticsearch会自动缓存检索到的JWK集,以避免不必要的HTTP请求,但会在签名验证失败时尝试刷新JWK,因为这可能表示OpenID连接提供程序已旋转签名密钥。
基于文件的资源的轮询频率由全局Elasticsearch resource.reload.interval.high设置确定,该设置默认为5秒。
rp.client_id
在OpenID连接提供程序注册期间分配给Elasticsearch的OAuth 2.0客户端标识符
rp.client_secret
(安全)
在OpenID连接提供程序注册期间分配给Elasticsearch的OAuth 2.0客户端secret
rp.redirect_uri
Kibana中的重定向URI。如果要使用授权代码流,这是Kibana服务器的“api/security/v1/oidc”端点。如果要使用隐式流,它是“api/security/v1/oidc/implicit”端点。例如,https://kibana.example.com/api/security/v1/oidc。
rp.response_type
确定要使用的授权处理流的OAuth 2.0响应类型值。可以是授权代码授予流的代码,也可以是隐式流的id_token、id_token token之一。
rp.signature_algorithm
Elasticsearch将使用的签名算法,以验证它将从OpenID连接提供程序接收的id令牌的签名。默认为RSA256
rp.requested_scopes
作为身份验证请求的一部分,OpenID连接提供程序将请求的作用域值。可选,默认为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
在应用于用户的主体属性之前,与claim s.principal指定的OpenID Connect声明匹配的Java正则表达式。属性值必须与模式匹配,并且第一个捕获组的值用作主体。例如,^([^@]+)@example\\.com$
匹配来自“example.com”域的电子邮件地址,并使用本地部分作为主体。
claim_patterns.groups
按照claim_patterns.principal
,但用于groups
属性。
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令牌的创建和过期时间时,应考虑允许的最大时钟偏斜。
populate_user_metadata
指定是否使用OpenID Connect声明提供的值填充Elasticsearch用户的元数据。默认为true
。
http.connect_timeout
控制用于与OpenID Connect Provider端点进行反向通道通信的http客户端的行为。指定在建立连接之前的超时。零值表示不使用超时。默认为5s
http.connection_read_timeout
控制用于与OpenID Connect Provider端点进行反向通道通信的http客户端的行为。指定从连接管理器请求连接时使用的超时。默认为5s
http.socket_timeout
控制用于到OpenID连接提供程序终结点的反向通道通信的http客户端的行为。指定套接字超时(SOYTimeOUT)以毫秒为单位,这是等待数据的超时,或者不同的是,两个连续数据包之间的最大周期不活动。默认为5s
http.max_connections
控制用于到OpenID连接提供程序终结点的反向通道通信的http客户端的行为。指定在所有端点允许的最大连接数。
http.max_endpoint_connections
控制用于到OpenID连接提供程序终结点的反向通道通信的http客户端的行为。指定每个端点允许的最大连接数。
以下设置可用于为与OpenID Connect Provider端点的所有传出http连接配置SSL。
这些设置仅用于Elasticsearch和OpenID Connect Provider之间的反向通道通信
ssl.key
指定用于HTTP客户端身份验证的PEM编码的私钥的路径(如果需要)。ssl.key与
ssl.keystore.path
不能同时使用。
ssl.key_passphrase
指定密码短语,以便在加密PEM编码的私钥(ssl.key)时对其进行解密。不能与ssl.secure_key_passphrase一起使用。
ssl.secure_key_passphrase
(安全)
指定密码短语,以便在加密PEM编码的私钥(ssl.key)时对其进行解密。不能与ssl.key_passphrase
一起使用。
ssl.certificate
指定与密钥(ssl.key)关联的PEM编码证书(或证书链)的路径。仅当设置了ssl.key时才能使用此设置。
ssl.certificate_authorities
指定应信任的PEM编码证书颁发机构证书的路径。不能同时使用ssl.certificate_authorities与
ssl.truststore.path
。
ssl.keystore.path
指定包含私钥和证书的密钥库的路径。必须是Java密钥库(jks)或PKCS#12文件。不能同时使用ssl.key和ssl.keystore.path。
ssl.keystore.type
密钥库的类型(ssl.keystore.path)。必须是jks或PKCS12。如果密钥库路径以“.p12”、“.pfx”或“pkcs12”结尾,则此设置默认为pkcs12。否则,默认为jks。
ssl.keystore.password
密钥库的密码(ssl.keystore.path)。此设置不能与ssl.keystore.secure_password一起使用。
。
ssl.keystore.secure_password
(安全)
密钥库的密码(ssl.keystore.path)。此设置不能与ssl.keystore.password一起使用。
ssl.keystore.key_password
密钥库中密钥的密码(ssl.keystore.path)。默认为密钥库密码。此设置不能与ssl.keystore.secure_key_密码一起使用。
ssl.keystore.secure_key_password
(安全)
密钥库中密钥的密码(ssl.keystore.path)。默认为密钥库密码。此设置不能与ssl.keystore.key_password一起使用。
ssl.truststore.path
包含要信任的证书的密钥库的路径。必须是Java密钥库(jks)或PKCS#12文件。不能同时使用ssl.certificate\u authorities和ssl.truststore.path。
ssl.truststore.type
信任库的类型(ssl.truststore.path)。必须是jks或PKCS12。如果密钥库路径以“.p12”、“.pfx”或“pkcs12”结尾,则此设置默认为pkcs12。否则,默认为jks。
ssl.truststore.password
信任库的密码(ssl.truststore.path)。此设置不能与ssl.truststore.secure_password一起使用。
ssl.truststore.secure_password
(安全)
信任库的密码(ssl.truststore.path)。此设置不能与ssl.truststore.password一起使用。
ssl.verification_mode
其中一个是full(验证主机名和证书路径)、certificate(验证证书路径,但不验证主机名)或none(不执行验证)。默认为full
。
请参阅ssl.verification_mode
以获取有关这些值的更详细说明。
ssl.supported_protocols
指定TLS/SSL支持的协议。如果JVM支持TLSv1.3,则默认为TLSv1.3、TLSv1.2、TLSv1.1,否则为TLSv1.2、TLSv1.1。
ssl.cipher_suites
指定应支持的密码套件。
load_balance.type
设置可以具有以下值:
failover
:按指定的顺序使用指定的URL。可连接到的第一台服务器将用于所有后续连接。如果到该服务器的连接失败,则可以建立连接的下一个服务器将用于后续连接。dns_failover
:在此操作模式下,只能指定一个URL。此URL必须包含DNS名称。系统将查询与此DNS名称对应的所有IP地址。与Active Directory或LDAP服务器的连接将始终按照检索顺序进行尝试。这与故障转移不同,因为列表没有重新排序,并且如果服务器在列表的开头出现故障,则仍将对每个后续连接进行尝试。round_robin
:连接将连续迭代提供的url列表。如果服务器不可用,则将继续遍历URL列表,直到建立成功的连接。dns_round_robin
:在此操作模式下,只能指定一个URL。此URL必须包含DNS名称。系统将查询与此DNS名称对应的所有IP地址。连接将连续迭代地址列表。如果服务器不可用,则将继续遍历URL列表,直到建立成功的连接。通常,以下值代表各种TLS设置的默认值。这些设置的前缀基于使用它们的上下文(例如xpack.security.authc.realms.ldap.corp_ldap.ssl.verification_mode
或xpack.security.transport.ssl.supported_protocols
)。
有关更多信息,请参见 加密通信。
*.ssl.supported_protocols
支持版本的协议。有效协议:SSLv2Hello、SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3。如果JVM支持TLSv1.3,则默认为TLSv1.3、TLSv1.2、TLSv1.1,否则为TLSv1.2、TLSv1.1。
如果xpack.security.fips_mode.enabled为true,则不能使用SSLv2Hello或SSLv3。参见FIPS 140-2。
*.ssl.client_authentication
控制服务器从客户端连接请求证书方面的行为。有效值是required
,optional
和none
。 required
强制客户端出示证书,而optional
请求客户端证书,但不需要客户端出示证书。默认为required
,默认none的
HTTP除外。请参阅 HTTP TLS / SSL设置。
*.ssl.verification_mode
控制证书的验证。有效值为:
full
,它验证提供的证书是否由受信任的权威(CA)签名,并且还验证服务器的主机名(或IP地址)是否与证书中标识的名称匹配。certificate
,它验证提供的证书是否由受信任的权威(CA)签名,但不执行任何主机名验证。none
,不对服务器证书进行任何验证。此模式禁用了SSL / TLS的许多安全性优点,只有在仔细考虑后才能使用。尝试解决TLS错误时,它主要是作为一种临时诊断机制,强烈建议不要在生产集群上使用它。
默认值为full
。
*.ssl.cipher_suites
支持的密码套件可以在Oracle的 Java密码体系结构文档中找到。
默认为TLS_AES_256_GCM_SHA384
,TLS_AES_128_GCM_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_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
。
上面的默认密码套件列表包括TLSv1.3密码和需要Java Cryptography Extension(JCE)无限强度管辖权策略文件用于256位AES加密的密码。如果TLSv1.3不可用,则TLSv1.3密码TLS_AES_256_GCM_SHA384`、TLS_AES_128_GCM_SHA256将不包括在默认列表中。如果256位AES不可用,则名称中包含AES_256的密码将不包含在默认列表中。最后,AES GCM在11之前的Java版本中存在已知的性能问题,并且只有在使用Java 11或更高版本时才会包含在默认列表中。
以下设置用于指定在通过SSL/TLS连接进行通信时应使用的私钥、证书和受信任证书。如果未配置受信任证书,则JVM信任的默认证书将与同一上下文中的密钥关联的证书一起受信任。对于需要客户端身份验证的连接或作为启用SSL的服务器时,密钥和证书必须就位。
尽管支持将证书存储在PKCS#12文件中,但实际上并不常见。该
elasticsearch-certutil
工具以及Javakeytool
均被设计为生成可以用作密钥库和信任库的PKCS#12文件,但是使用其他工具创建的容器文件可能并非如此。通常,PKCS#12文件仅包含秘密和私有条目。以确认PKCS#12容器包括受信任的证书(“锚”)条目寻找2.16.840.1.113894.746875.1.1:
在openssl pkcs12 -info
输出,或trustedCertEntry
在keytool -list
输出。
您可以配置以下TLS / SSL设置。如果未配置设置, 则使用默认TLS / SSL设置。
xpack.security.http.ssl.enabled
用于启用或禁用TLS / SSL。默认值为false
。
xpack.security.http.ssl.supported_protocols
支持版本的协议。有效协议:SSLv2Hello、SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3。如果JVM支持TLSv1.3,则默认为TLSv1.3、TLSv1.2、TLSv1.1,否则为TLSv1.2、TLSv1.1。
xpack.security.http.ssl.client_authentication
控制服务器从客户端连接请求证书方面的行为。有效值是required
,optional
和none
。 required
强制客户端出示证书,而optional
请求客户端证书,但不需要客户端出示证书。默认为none
。
xpack.security.http.ssl.cipher_suites
支持的密码套件可以在Oracle的 Java密码体系结构文档中找到。默认为``。
以下设置用于指定通过SSL / TLS连接进行通信时应使用的私钥,证书和受信任证书。必须配置私钥和证书。如果未指定以下任何设置,则使用默认TLS / SSL设置。
使用PEM编码的文件时,请使用以下设置:
xpack.security.http.ssl.key
包含私钥的PEM编码文件的路径。
xpack.security.http.ssl.key_passphrase
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
xpack.security.http.ssl.secure_key_passphrase
(安全)
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
xpack.security.http.ssl.certificate
包含将在出现请求时显示的证书(或证书链)的PEM编码文件的路径。
xpack.security.http.ssl.certificate_authorities
应当信任的PEM编码证书文件的路径列表。
使用包含私钥,证书和应信任的证书的Java密钥库文件(JKS)时,请使用以下设置:
xpack.security.http.ssl.keystore.path
存放私钥和证书的密钥库的路径。
xpack.security.http.ssl.keystore.password
密钥库的密码。
xpack.security.http.ssl.keystore.secure_password
(安全)
密钥库的密码。
xpack.security.http.ssl.keystore.key_password
密钥库中私钥的密码。默认值与xpack.security.http.ssl.keystore.password
相同。
xpack.security.http.ssl.keystore.secure_key_password
(安全)
密钥库中私钥的密码。
xpack.security.http.ssl.truststore.path
信任库文件的路径。
xpack.security.http.ssl.truststore.password
信任库的密码。
xpack.security.http.ssl.truststore.secure_password
(安全)
信任库的密码。
可以将Elasticsearch配置为使用包含私有密钥,证书和应受信任的证书的PKCS#12容器文件(.p12
或多个.pfx
文件)。
PKCS#12文件的配置方式与Java密钥库文件相同:
xpack.security.http.ssl.keystore.path
包含私钥和证书的PKCS#12文件的路径。
xpack.security.http.ssl.keystore.type
进行设置PKCS12
以指示密钥库是PKCS#12文件。
xpack.security.http.ssl.keystore.password
PKCS#12文件的密码。
xpack.security.http.ssl.keystore.secure_password
(安全)
PKCS#12文件的密码。
xpack.security.http.ssl.keystore.key_password
存储在PKCS#12文件中的私钥的密码。默认值与xpack.security.http.ssl.keystore.password
相同。
xpack.security.http.ssl.keystore.secure_key_password
(安全)
存储在PKCS#12文件中的私钥的密码。
xpack.security.http.ssl.truststore.path
包含要信任的证书的PKCS#12文件的路径。
xpack.security.http.ssl.truststore.type
进行设置PKCS12
以指示信任库是PKCS#12文件。
xpack.security.http.ssl.truststore.password
PKCS#12文件的密码。
xpack.security.http.ssl.truststore.secure_password
(安全)
PKCS#12文件的密码。
可以将Elasticsearch配置为使用PKCS#11令牌,该令牌包含私钥,证书和应信任的证书。
PKCS#11令牌需要在JVM级别进行其他配置,并且可以通过以下设置启用:
xpack.security.http.keystore.type
进行设置PKCS11
以指示应将PKCS#11令牌用作密钥库。
xpack.security.http.truststore.type
进行设置PKCS11
以指示应将PKCS#11令牌用作信任库。
ssl.truststore.password
或ssl.truststore.secure_password
来配置令牌的PIN。由于只能配置一个PKCS#11令牌,因此只有一个密钥库和信任库可用于Elasticsearch中的配置。这又意味着在传输层和http层中,TLS只能使用一个证书。
您可以配置以下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支持TLSv1.3,则默认为TLSv1.3、TLSv1.2、TLSv1.1,否则为TLSv1.2、TLSv1.1。
xpack.security.transport.ssl.client_authentication
控制服务器从客户端连接请求证书方面的行为。有效值是required
,optional
和none
。 required
强制客户端出示证书,而optional
请求客户端证书,但不需要客户端出示证书。默认为none`
。
xpack.security.transport.ssl.verification_mode
控制证书的验证。有效值是none
, certificate
和full
。默认为full
。
xpack.security.transport.ssl.cipher_suites
支持的密码套件可以在Oracle的 Java密码体系结构文档中找到。默认为``。
以下设置用于指定通过SSL / TLS连接进行通信时应使用的私钥,证书和受信任证书。必须配置私钥和证书。如果未指定以下任何设置,则使用默认TLS / SSL设置。
使用PEM编码的文件时,请使用以下设置:
xpack.security.transport.ssl.key
包含私钥的PEM编码文件的路径。
xpack.security.transport.ssl.key_passphrase
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
xpack.security.transport.ssl.secure_key_passphrase
(安全)
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
xpack.security.transport.ssl.certificate
包含将在出现请求时显示的证书(或证书链)的PEM编码文件的路径。
xpack.security.transport.ssl.certificate_authorities
应当信任的PEM编码证书文件的路径列表。
使用包含私钥,证书和应信任的证书的Java密钥库文件(JKS)时,请使用以下设置:
xpack.security.transport.ssl.keystore.path
存放私钥和证书的密钥库的路径。
xpack.security.transport.ssl.keystore.password
密钥库的密码。
xpack.security.transport.ssl.keystore.secure_password
(安全)
密钥库的密码。
xpack.security.transport.ssl.keystore.key_password
密钥库中私钥的密码。默认值与相同xpack.security.transport.ssl.keystore.password
。
xpack.security.transport.ssl.keystore.secure_key_password
(安全)
密钥库中私钥的密码。
xpack.security.transport.ssl.truststore.path
信任库文件的路径。
xpack.security.transport.ssl.truststore.password
信任库的密码。
xpack.security.transport.ssl.truststore.secure_password
(安全)
信任库的密码。
Elasticsearch可以配置为使用PKCS#12容器文件(.p12或.pfx文件),这些文件包含应信任的私钥、证书和证书。
PKCS#12文件的配置方式与Java密钥库文件相同:
xpack.security.transport.ssl.keystore.path
包含私钥和证书的PKCS#12文件的路径。
xpack.security.transport.ssl.keystore.type
进行设置PKCS12
以指示密钥库是PKCS#12文件。
xpack.security.transport.ssl.keystore.password
PKCS#12文件的密码。
xpack.security.transport.ssl.keystore.secure_password
(安全)
PKCS#12文件的密码。
xpack.security.transport.ssl.keystore.key_password
存储在PKCS#12文件中的私钥的密码。默认值与xpack.security.transport.ssl.keystore.password
相同。
xpack.security.transport.ssl.keystore.secure_key_password
(安全)
存储在PKCS#12文件中的私钥的密码。
xpack.security.transport.ssl.truststore.path
包含要信任的证书的PKCS#12文件的路径。
xpack.security.transport.ssl.truststore.type
进行设置PKCS12
以指示信任库是PKCS#12文件。
xpack.security.transport.ssl.truststore.password
PKCS#12文件的密码。
xpack.security.transport.ssl.truststore.secure_password
(安全)
PKCS#12文件的密码。
可以将Elasticsearch配置为使用PKCS#11令牌,该令牌包含私钥,证书和应信任的证书。
PKCS#11令牌需要在JVM级别进行其他配置,并且可以通过以下设置启用:
xpack.security.transport.keystore.type
进行设置PKCS11
以指示应将PKCS#11令牌用作密钥库。
xpack.security.transport.truststore.type
进行设置PKCS11
以指示应将PKCS#11令牌用作信任库。
在配置JVM配置为用作Elasticsearch的密钥库或信任库的PKCS#11令牌时,可以通过在配置的上下文中将适当的值设置为ssl.truststore.password
或ssl.truststore.secure_password
来配置令牌的PIN。由于只能配置一个PKCS#11令牌,因此只有一个密钥库和信任库可用于Elasticsearch中的配置。这又意味着在传输层和http层中,TLS只能使用一个证书。
默认传输可用的相同设置也可用于每个传输配置文件。默认情况下,传输配置文件的设置将与默认传输相同,除非指定了这些设置。
例如,让我们看看关键点设置。对于默认传输,这是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地址列表。
某些领域将用户凭据存储在内存中。为了限制凭证被盗的风险并减少凭证泄漏,缓存只在内存中存储用户凭证的哈希版本。默认情况下,用户缓存使用salted sha-256散列算法进行散列。通过将cache.hash_algo域设置设置为以下任何值,可以使用不同的哈希算法:
表1.高速缓存哈希算法
算法 |
|
描述 |
|
|
|
使用加盐 |
|
|
|
使用 |
|
|
|
使用 |
|
|
|
使用bcrypt 算法,在1024轮产生盐。 |
|
|
|
使用bcrypt 算法,在16轮产生盐。 |
|
|
|
使用bcrypt 算法,在32轮产生盐。 |
|
|
|
使用bcrypt 算法,在64轮产生盐。 |
|
|
|
使用bcrypt 算法,在128轮产生盐。 |
|
|
|
使用 |
|
|
|
使用bcrypt 算法,在512轮产生盐。 |
|
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用10000次迭代。 | |
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用1000次迭代。 | |
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用10000次迭代。 | |
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用50000次迭代。 | |
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用100000次迭代。 | |
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用500000次迭代。 | |
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用1000000次迭代。 | |
|
|
不会散列凭据并将其保存在内存中的明文中。警告:保持明文被认为是不安全的,并且在操作系统级别可能会受到损害(例如通过内存转储和使用ptrace)。 |
同样,存储密码的领域使用加密强和特定于密码的salt值散列它们。您可以通过将xpack.security.authc.password_hashing.algorithm
设置设置为以下之一来配置密码哈希算法:
表2.密码哈希算法
算法 | 描述 | ||
---|---|---|---|
|
|
|
使用 |
|
|
|
使用bcrypt 算法,在16轮产生盐。 |
|
|
|
使用bcrypt 算法,在32轮产生盐。 |
|
|
|
使用bcrypt 算法,在64轮产生盐。 |
|
|
|
使用 |
|
|
|
使用bcrypt 算法,在256轮产生盐。 |
|
|
|
使用bcrypt 算法,在512轮产生盐。 |
|
|
|
使用bcrypt 算法,在1024轮产生盐。 |
|
|
|
使用bcrypt 算法,在2048轮产生盐。 |
|
|
|
使用bcrypt 算法,在4096轮产生盐。 |
|
|
|
使用bcrypt 算法,在8192轮产生盐。 |
|
|
|
使用bcrypt 算法,在16284轮产生盐。 |
|
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用10000次迭代。 |
|
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用1000次迭代。 |
|
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用10000次迭代。 |
|
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用50000次迭代。 |
|
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用100000次迭代。 |
|
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用500000次迭代。 |
|
|
|
使用PBKDF2密钥派生函数和HMAC-SHA512作为伪随机函数,使用1000000次迭代。 |
默认情况下,SQL Access是启用的。您可以在elasticsearch.yml
文件中配置这些SQL Access设置。
xpack.sql.enabled
设置为false
禁用节点上的SQL Access。
您可以配置Watcher设置来设置Watcher并通过电子邮件, Slack和 PagerDuty发送通知 。
除了安全设置(您已将其添加到Elasticsearch密钥库)外,所有这些设置都可以添加到配置文件elasticsearch.yml
中。有关创建和更新Elasticsearch密钥库的更多信息,请参阅“ 安全设置”。还可以使用集群更新设置API在整个 集群中更新动态设置。
xpack.watcher.enabled
设置为false
禁用节点上的Watcher。
xpack.watcher.encrypt_sensitive_data
设置为true
加密敏感数据。如果启用此设置,则还必须指定该xpack.watcher.encryption_key
设置。有关更多信息,请参阅在Watcher中加密敏感数据。
xpack.watcher.encryption_key
(安全)
指定包含用于加密敏感数据的密钥的文件的路径。如果xpack.watcher.encrypt_sensitive_data
设置为true
,则需要此设置。有关更多信息,请参阅在Watcher中加密敏感数据。
xpack.watcher.history.cleaner_service.enabled
[ 6.3.0 ] 在6.3.0中添加。默认更改为true
。[ 7.0.0 ]在7.0.0中弃用。观察者历史记录索引现在由watch-history-ilm-policy
ILM策略管理
设置为true
(默认值)以启用更清洁的服务。如果此设置为 true
,则xpack.monitoring.enabled
还必须在true
启用本地导出程序的情况下将该设置设置为。当Cleaner服务.watcher-history*
确定旧版本的Watcher索引较旧时(例如),它将删除它们。Watcher索引的持续时间由xpack.monitoring.history.duration
设置决定 ,默认设置为7天。有关该设置的更多信息,请参阅监视设置。
xpack.http.proxy.host
指定用于连接到HTTP服务的代理服务器的地址。
xpack.http.proxy.port
指定用于连接到代理服务器的端口号。
xpack.http.default_connection_timeout
启动连接时等待直到请求中止的最大时间。
xpack.http.default_read_timeout
请求中止之前,两个数据包之间的最大不活动时间。
xpack.http.max_response_size
指定允许HTTP响应具有的最大大小,默认为 10mb
,最大可配置值为50mb
。
xpack.http.whitelist
允许内部HTTP客户端连接的URL列表。此客户端用于HTTP输入,webhook,slack,pagerduty和jira操作。此设置可以动态更新。它默认为*
允许所有操作。注意:如果您配置此设置,并且正在使用Slack/寻呼任务之一,则必须确保将相应的端点也列入白名单。
您可以配置以下TLS / SSL设置。如果未配置设置, 则使用默认TLS / SSL设置。
xpack.http.ssl.supported_protocols
支持版本的协议。有效协议:SSLv2Hello、SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3。如果JVM支持TLSv1.3,则默认为TLSv1.3、TLSv1.2、TLSv1.1,否则为TLSv1.2、TLSv1.1。
xpack.http.ssl.verification_mode
控制证书的验证。有效值是none
, certificate
和full
。默认为full
。
xpack.http.ssl.cipher_suites
支持的密码套件可以在Oracle的 Java密码体系结构文档中找到。默认为``。
以下设置用于指定通过SSL / TLS连接进行通信时应使用的私钥,证书和受信任证书。私钥和证书是可选的,如果服务器要求客户端认证进行PKI认证,则将使用私钥和证书。如果未指定以下任何设置,则使用默认TLS / SSL设置。
使用PEM编码的文件时,请使用以下设置:
xpack.http.ssl.key
包含私钥的PEM编码文件的路径。
xpack.http.ssl.key_passphrase
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
xpack.http.ssl.secure_key_passphrase
(安全)
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
xpack.http.ssl.certificate
包含将在出现请求时显示的证书(或证书链)的PEM编码文件的路径。
xpack.http.ssl.certificate_authorities
应当信任的PEM编码证书文件的路径列表。
使用包含私钥,证书和应信任的证书的Java密钥库文件(JKS)时,请使用以下设置:
xpack.http.ssl.keystore.path
存放私钥和证书的密钥库的路径。
xpack.http.ssl.keystore.password
密钥库的密码。
xpack.http.ssl.keystore.secure_password
(安全)
密钥库的密码。
xpack.http.ssl.keystore.key_password
密钥库中私钥的密码。默认值与xpack.http.ssl.keystore.password
相同。
xpack.http.ssl.keystore.secure_key_password
(安全)
密钥库中私钥的密码。
xpack.http.ssl.truststore.path
信任库文件的路径。
xpack.http.ssl.truststore.password
信任库的密码。
xpack.http.ssl.truststore.secure_password
(安全)
信任库的密码。
可以将Elasticsearch配置为使用包含私有密钥,证书和应受信任的证书的PKCS#12容器文件(.p12
或多个.pfx
文件)。
PKCS#12文件的配置方式与Java密钥库文件相同:
xpack.http.ssl.keystore.path
包含私钥和证书的PKCS#12文件的路径。
xpack.http.ssl.keystore.type
进行设置PKCS12
以指示密钥库是PKCS#12文件。
xpack.http.ssl.keystore.password
PKCS#12文件的密码。
xpack.http.ssl.keystore.secure_password
(安全)
PKCS#12文件的密码。
xpack.http.ssl.keystore.key_password
存储在PKCS#12文件中的私钥的密码。默认值与xpack.http.ssl.keystore.password
相同。
xpack.http.ssl.keystore.secure_key_password
(安全)
存储在PKCS#12文件中的私钥的密码。
xpack.http.ssl.truststore.path
包含要信任的证书的PKCS#12文件的路径。
xpack.http.ssl.truststore.type
进行设置PKCS12
以指示信任库是PKCS#12文件。
xpack.http.ssl.truststore.password
PKCS#12文件的密码。
xpack.http.ssl.truststore.secure_password
(安全)
PKCS#12文件的密码。
可以将Elasticsearch配置为使用PKCS#11令牌,该令牌包含私钥,证书和应信任的证书。
PKCS#11令牌需要在JVM级别进行其他配置,并且可以通过以下设置启用:
xpack.http.keystore.type
进行设置PKCS11
以指示应将PKCS#11令牌用作密钥库。
xpack.http.truststore.type
进行设置PKCS11
以指示应将PKCS#11令牌用作信任库。
在配置JVM配置为用作Elasticsearch的密钥库或信任库的PKCS#11令牌时,可以通过在配置的上下文中将适当的值设置为ssl.truststore.password
或ssl.truststore.secure_password
来配置令牌的PIN。由于只能配置一个PKCS#11令牌,因此只有一个密钥库和信任库可用于Elasticsearch中的配置。这又意味着在传输层和http层中,TLS只能使用一个证书。
您可以在中配置以下电子邮件通知设置 elasticsearch.yml
。有关通过电子邮件发送通知的更多信息,请参阅“ 配置电子邮件操作”。
xpack.notification.email.account
指定用于通过电子邮件发送通知的帐户信息。您可以指定以下电子邮件帐户属性:
profile
(动态)
用于构建从帐户发送的MIME消息 的电子邮件配置文件。有效值:standard
,gmail
和 outlook
。默认为standard
。
email_defaults.*
(动态)
一组可选的电子邮件属性,用作帐户发送的电子邮件的默认值。有关支持的属性,请参阅 电子邮件操作属性。
smtp.auth
(动态)
设置为true
尝试使用AUTH命令对用户进行身份验证。默认为false
。
smtp.host
(动态)
要连接的SMTP服务器。必需。
smtp.port
(动态)
要连接的SMTP服务器端口。默认值为25。
smtp.user
(动态)
SMTP的用户名。必须。
smtp.secure_password
(安全)
指定的SMTP用户的密码。
smtp.starttls.enable
(动态)
设置为true
启用以STARTTLS
在发出任何登录命令之前使用命令(如果服务器支持)将连接切换到TLS保护的连接。请注意,必须配置适当的信任库,以便客户端信任服务器的证书。默认为false
。
smtp.starttls.required
(动态)
如果为true
,STARTTLS
则将是必需的。如果该命令失败,则连接将失败。默认为false
。
smtp.ssl.trust
(动态)
假定为受信任且禁用了证书验证的SMTP服务器主机的列表。如果设置为“ *”,则所有主机都是受信任的。如果设置为以空格分隔的主机列表,则这些主机是可信任的。否则,信任取决于服务器提供的证书。
smtp.timeout
(动态)
套接字读取超时。默认值为两分钟。
smtp.connection_timeout
(动态)
套接字连接超时。默认值为两分钟。
smtp.write_timeout
(动态)
套接字写入超时。默认值为两分钟。
smtp.local_address
(动态)
发送电子邮件时可配置的本地地址。默认情况下未配置。
smtp.local_port
(动态)
发送电子邮件时可配置的本地端口。默认情况下未配置。
smtp.send_partial
(动态)
尽管收件人地址之一无效,但仍发送电子邮件。
smtp.wait_on_quit
(动态)
如果设置为false,则发送QUIT命令并关闭连接。如果设置为true,则发送QUIT命令并等待答复。默认为True。
xpack.notification.email.html.sanitization.allow
指定电子邮件通知中允许的HTML元素。有关更多信息,请参阅 配置HTML清理选项。您可以指定单个HTML元素和以下HTML功能组:
_tables
表中的所有相关的元素: