目录
为监控配置索引
索引模板用于配置存储从建群收集的监视数据的索引。
你可以通过_template API检索模板:
curl -X GET "localhost:9200/_template/.monitoring-*"
默认情况下,该模板为监视索引配置一个碎片和一个副本。要覆盖默认设置,请添加您自己的模板:
1、将template
模式设置为.monitoring-*
。
2、将模板的 order
设置为1
。这确保您的模板是在默认模板之后应用的,默认模板的order是0。
3、在settings部分指定number_of_shards和number_of_replicas。
例如,下面的模板将碎片的数量增加到5个,副本的数量增加到2个。
curl -X PUT "localhost:9200/_template/custom_monitoring" -H 'Content-Type: application/json' -d'
{
"index_patterns": ".monitoring-*",
"order": 1,
"settings": {
"number_of_shards": 5,
"number_of_replicas": 2
}
}
'
重要:只能在setttings部分设置number_of_shards和number_of_replicas。覆盖其他监视模板设置可能导致监视仪表板停止正常工作。
配置与监视一起工作的部落节点
如果你通过一个部落节点连接到一个集群,如果你想监控部落节点,那么你也要在部落节点上安装X-pack。
通过此配置,监视UI中显示的节点计数中将包含该部落节点,但是节点列表中没有包含,因为它不向监视集群导出任何数据。
若要将部落节点包括在监视数据中,请启用部落级别的监视数据收集。
node.name: my-tribe-node1
tribe:
on_conflict: prefer_cluster1
c1:
cluster.name: cluster1
discovery.zen.ping.unicast.hosts: [ "cluster1-node1:9300", "cluster1-node2:9300", "cluster1-node2:9300" ]
xpack.monitoring.enabled: true#1
c2:
cluster.name: cluster2
discovery.zen.ping.unicast.hosts: [ "cluster2-node3:9300", "cluster2-node3:9300", "cluster2-node3:9300" ]
xpack.monitoring:#2
enabled: true
exporters:
id1:
type: http
host: [ "monitoring-cluster:9200" ]
#1
:使用本地导出器启用从部落节点收集数据。
#2
:使用HTTP导出器启用从部落节点收集数据。
当您启用从部落节点收集数据时,它同时包含在节点计数和节点列表中。
注意:部落节点在5.4.0中被弃用, 它不利于跨集群搜索,并且将在Elasticsearch7.0中移除。
Elasticsearch中的监控设置
默认情况下, 监控是启用的但是数据收集是未启用的。要收集数据,使用xpack.monitoring.collection.enabled设置。
你可以在elasticsearch.yml文件中配置这些监控设置。其中一些还可以通过使用cluster update settings API跨集群设置。
TIP:集群设置优先于在elasticsearch.yml文件中的设置。
要调整监视数据在监视UI中的显示方式,在kibana.yml文件中配置xpack.monitoring settings。要控制如何从Logstash里收集监控数据,在logstash.yml文件中配置xpack.monitoring settings。
一般监控设置
xpack.monitoring.enabled
默认设置为true为节点上的弹性搜索启用弹性搜索X-Pack监视。
注意:要启用数据收集,你必须设置xpack.monitoring.collection.enabled为true。默认设置是false。
监控收集设置
xpack.monitoring.collection设置控制如何从ELasticsearch的节点上收集数据。
xpack.monitoring.collection.enabled(动态修改设置)
在[6.3.0]版本上增加的,设置为true以启用监控数据收集。当这个设置是false(默认值)时,Elasticsearch的监控数据没有收集并且所有的其他来源的监控数据像是Kibana,Beats,Logstash都被忽略了。
xpack.monitoring.collection.interval(动态修改设置)
[6.3.0]版本之后,设置为-1来禁用数据收集,已经被弃用了。
xpack.monitoring.elasticsearch.collection.enabled(动态修改设置)
控制是否应该收集关于Elasticsearch集群的统计信息。默认为true。这与允许你启用或启用所有的监控集合的xpack.monitoring.collection.enabled不同。但是,这个设置只是禁用了Elasticsearch数据的收集,同时仍然允许其他数据(例如Kibana、Logstash、Beats或APM服务器监控数据)通过这个集群。
xpack.monitoring.collection.cluster.stats.timeout
设置收集集群统计信息的超时。默认为10s。
xpack.monitoring.collection.indices(动态修改设置)
控制监视从哪些索引收集数据。默认是所有索引。指定索引名称为逗号分隔的列表,例如,test1,test2,test3。名称可以包含通配符,例如test*
。你可以显式地包含或排除索引,通过头部添加+包含索引或-排除索引。例如,包含除了test3外所有以test开头的的索引,你可以指定+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导出器创建的索引不会自动删除。
如果X-Pack监控和监视程序都启用,您也可以使用此设置来影响Watcher cleaner服务。更多信息,参见xpack.watcher.history.cleaner_service.enabled设置,在 Watcher Settings。
xpack.monitoring.exporters
配置代理存储监控数据的位置。默认情况下,代理使用本地导出器,该导出器对安装它的集群上的监视数据进行索引。使用HTTP导出程序将数据发送到单独的监视集群。更多信息,参见 Local Exporter Settings, HTTP Exporter Settings,和 How Monitoring Works。
本地导出器设置
本地导出器是监视所使用的默认导出器。顾名思义,它将数据导出到本地集群,这意味着不需要太多配置。
如果您不提供任何导出器,则监视将自动为您创建一个。如果提供了任何导出器,则不默认添加。
xpack.monitoring.exporters.my_local:
type: local
type — 本地导出器的值必须始终是local,且这是必需的。
use_ingest — 是否为集群和管道处理器提供每个批量请求的占位符管道。默认值是true。如果禁用,这意味着它不会使用管道,这意味着未来的版本不能自动将大容量请求升级为可抵御未来的请求。
cluster_alerts.management.enabled — 是否为该集群创建集群警报。默认值是true。要使用此功能,必须启用Watcher。如果您拥有基本许可证,则不会显示集群警报。
HTTTP导出器设置
下面列出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,那么username是需要的。auth.passwrod
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
防止创建特定的集群警报。它还删除当前集群中已经存在的所有适用的Watcher。
您可以在黑名单中添加以下Watcher标识符:
elasticsearch_cluster_status
elasticsearch_version_mismatch
elasticsearch_nodes
kibana_version_mismatch
logstash_version_mismatch
xpack_license_expiration
例如:["elasticsearch_version_mismatch","xpack_license_expiration"]
X-Pack监控TLS/SSL设置
你可以配置接下来的TLS/SSL设置。如果这些设置没被配置,那么默认的 TLS/SSL Settings将被使用。
xpack.monitoring.exporters.$NAME.ssl.supported_protocols
支持带有版本的协议。有效协议:SSLv2Hello
, SSLv3
, TLSv1
, TLSv1.1
, TLSv1.2
。默认协议为TLSv1.2
, TLSv1.1
, TLSv1
。xpack.ssl.supported_protocols配置的默认值。
xpack.monitoring.exporters.$NAME.ssl.verification_mode
控制证书的验证。有效值是none,certificate,full。获取这些值的描述请参见xpack.ssl.verification_mode
。xpack.ssl.verification_mode的默认值。
xpack.monitoring.exporters.$NAME.ssl.cipher_suites
支持的密码套件可以在Oracle中找到 Java Cryptography Architecture documentation。xpack.ssl.cipher_suites的默认值。
X-Pack监控TLS/SSL秘钥和受信任的证书设置
以下设置用于指定在通过SSL/TLS连接进行通信时应该使用的私钥、证书和受信任证书。私钥和证书是可选的,如果服务器需要客户端身份验证来进行PKI身份验证,则使用私钥和证书。如果没有指定下面的设置,则使用 Default TLS/SSL Settings。
PEM编码的文件
当使用PEM编码的文件时,使用以下的设置:
xpack.monitoring.exporters.$NAME.ssl.key
包含私钥的PEM编码文件的路径。
xpack.monitoring.exporters.$NAME.ssl.key_passphrase
用于解密私钥的密码。该值是可选的,因为密钥可能没有加密。
xpack.monitoring.exporters.$NAME.ssl.secure_key_passphrase(Secure)
用于解密私钥的密码。该值是可选的,因为密钥可能没有加密。
xpack.monitoring.exporters.$NAME.ssl.certificate
PEM编码文件的路径,该文件包含将在请求时显示的证书(或证书链)。
xpack.monitoring.exporters.$NAME.ssl.certificate_authorities
应该信任的PEM编码证书文件的路径列表。
Java Keystore文件
在使用包含私钥、证书和应该信任的证书Java keystore文件时,使用以下的设置:
xpack.monitoring.exporters.$NAME.ssl.keystore.path
存储私钥和证书的密钥库的路径。
xpack.monitoring.exporters.$NAME.ssl.keystore.password
密钥库的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_password(Secure)
密钥库的密码。
xpack.monitoring.exporters.$NAME.ssl.keystore.key_password
密钥存储库中私钥的密码。默认和xpack.monitoring.exporters.$NAME.ssl.keystore.password
的值相同。
xpack.monitoring.exporters.$NAME.ssl.keystore.secure_key_password (Secure)
密钥存储库中私钥的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.path
信任存储文件的路径。
xpack.monitoring.exporters.$NAME.ssl.truststore.password
信任存储区的密码
xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password (Secure)
信任存储区的密码。
PKCS#12 Files
X-Pack安全性可以配置为使用PKCS#12容器文件(.p12或者.pfx文件)包含私钥,证书和可信任证书。
PKCS#12文件和Java Keystore文件使用相同方式配置:
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(Secure)
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(Secure)
存储在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(Secure)
PKCS#12文件的密码。
PKCS#11 Tokens
可以将X-Pack安全性配置为使用PKCS#11令牌,该令牌包含私钥、证书和应该信任的证书。
PKCS#11令牌需要在JVM级别上进行额外配置,可以通过以下设置启用:
xpack.monitoring.exporters.$NAME.keystore.type
将此设置为PKCS11,以指示PKCS#11令牌应该用作密钥存储库。
xpack.monitoring.exporters.$NAME.truststore.type
将此设置为PKCS11,以指示PKCS#11令牌应该用作信任存储库。
配置ELasticsearch的安全性
X-Pack的安全特性让你能够轻松保护集群。使用X-Pack安全性,您可以对数据进行密码保护,还可以实现更高级的安全措施,如加密通信、基于角色的访问控制、IP过滤和审计。更多信息,参见Securing the Elastic Stack。
在ELasticsearch中使用X-Pack的安全特性:
1、验证您使用的许可证包含X-Pack安全特性。
如果你想试用所有的X-Pack的特性,你可以开始一个30天的免费试用。在试用期结束以后,您可以购买订阅来继续使用X-Pack组件的全部功能。更多信息,请看 https://www.elastic.co/subscriptions和 License Management。
2、验证配置项xpack.security.enabled被设置为true在你的集群中的每个节点上。如果您正在使用试用许可证,那这个配置项的默认值是false。更多信息,参见 Security Settings in Elasticsearch。
3、如果您计划在启用140-2的联邦信息处理标准(FIPS) JVM中运行Elasticsearch,参见FIPS 140-2。
4、为节点间通信配置传输层安全性(TLS/SSL)。
注意:此要求适用于具有一个以上节点的集群和侦听外部接口的具有单个节点的集群。使用环回接口的单节点集群没有这个要求。更多信息,参见 Encrypting Communications。
a.为每个Elasticsearch节点生成节点证书(Generate node certificates for each of your Elasticsearch nodes)
b.在每个Elasticsearch节点上启用TLS(Enable TLS on each Elasticsearch node)
5、如果它还没有运行,启动Elasticsearch。
6、设置所有内置用户的密码。
X-Pack安全性提供内置用户来帮助您启动和运行。elasticsearch-setup-passwords命令是第一次设置内置用户密码最简单的方法。
例如,您可以在“交互”模式下运行该命令,提示您为elastic,kibana,beats_system,logstash_system,apm_system用户输入新的密码:
bin/elasticsearch-setup-passwords interactive
更多关于这个命令的选项,参见 elasticsearch-setup-passwords。
重要:elasticsearch-setup-passwords命令使用临时引导密码,该密码在命令成功运行后不再有效。您不能第二次运行elasticsearch-setup-password命令。相反,你可以在Kibana的UI上从Management>Users更新密码或者使用安全用户API。
7、选择要使用哪些类型的领域来验证用户。
- Configure an Active Directory realm.
- Configure a file realm.
- Configure an LDAP realm.
- Configure a native realm.
- Configure a PKI realm.
- Configure a SAML realm.
- Configure a Kerberos realm.
8、设置角色和用户来控制对Elasticsearch的访问。例如,要授予John Doe对所有匹配events*
模式的索引的完全访问权限,并使他能够在Kibana中为这些索引创建可视化和仪表板,你可以创建一个events_admin角色,并将该角色分配给一个新的john doe用户。
curl -XPOST -u elastic 'localhost:9200/_xpack/security/role/events_admin' -H "Content-Type: application/json" -d '
{
"indices" : [
{
"names" : [ "events" ],
"privileges" : [ "all" ]
},
{
"names" : [ ".kibana" ],
"privileges" : [ "manage", "read", "index" ]
}
]
}'
curl -XPOST -u elastic 'localhost:9200/_xpack/security/user/johndoe' -H "Content-Type: application/json" -d '
{
"password" : "userpassword",
"full_name" : "John Doe",
"email" : "john.doe@anony.mous",
"roles" : [ "events_admin" ]
}'
9、允许审计跟踪尝试和成功的与Elasticsearch集群的交互:
a.在你的集群中的所有节点上的elasticsearch.yml文件里增加下面的设置:
xpack.security.audit.enabled: true
更多时间,参见Auditing Security Events和 Auditing Settings。
b.重启elasticsearch.
默认情况下,事件被记录到位于ES_HOME/logs目录下的elasticsearch-access.log文件中。您还可以将事件存储在Elasticsearch索引中,以便更容易地分析和控制记录的事件。
Elasticsearch中的加密通信
X-Pack安全性使您能够加密与Elasticsearch集群之间、与Elasticsearch集群之间的通信。连接使用传输层安全性(TLS/SSL)进行保护。
警告:未启用加密的集群将发送包括密码在内的所有纯文本数据,并且无法安装支持X-Pack安全性的许可证。
要启用加密,您需要在集群中的每个节点上执行以下步骤:
1、核实xpack.security.enabled设置为true。更多信息,参见 Security settings。
2、生成私钥和X.509的证书(Generate a private key and X.509 certificate)
3、将每个节点配置为:
a.必要的:在传输层上启用TLS( Enable TLS on the transport layer)
b.推荐的:在HTTP层上启用TLS(https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-tls.html#tls-http)
4、如果使用Active Directory用户身份验证,请加密Elasticsearch和Active Directory服务器之间的通信。
5、如果使用LDAP用户身份验证,请加密Elasticsearch和LDAP服务器之间的通信。
更多关于关于对弹性堆栈中的通信进行加密信息,参见 Encrypting Communications。
生成节点证书
TLS需要X.509证书来对与之通信的应用程序执行加密和身份验证。为了使节点之间的通信真正安全,必须验证证书。在Elasticsearch集群中验证证书真实性的推荐方法是信任签署证书的证书颁发机构(CA)。通过这样做,当节点被添加到集群时,它们只需要使用由相同CA签名的证书,节点就可以自动加入集群。此外,建议证书包含与节点的IP地址和DNS名称相对应的subject alternative names (SAN),以便可以执行主机名验证。
为了简化为弹性堆栈(命令行工具)生成证书的过程,X-Pack中包含了elasticsearch-certutil,一个命令行工具。此工具负责生成CA并使用CA签名证书。elasticsearch-certutil可以交互使用,也可以通过使用输入文件以静默模式使用。elasticsearch-certutil工具还支持生成证书签名请求(CSR),以便可以使用特定于商业或组织的CA对证书进行签名。例如:
1、可选的:为您的Elasticsearch集群创建一个证书颁发机构。
例如,使用elasticsearch-certuril ca命令:
bin/elasticsearch-certutil ca
您可以将集群配置为信任所有拥有由此CA签名的证书的节点。
该命令输出一个默认名称为elastic-stack-ca的文件。这个文件是PKCS#12密钥存储库,它包含CA的公共证书和用于为每个节点的证书签名的私钥。
elasticsearch-certutil命令还提示输入密码以保护文件和密钥。如果您计划将来向集群中添加更多节点,请保留文件的副本并记住其密码。
2、为集群中的每个节点生成证书和私钥。
例如,使用elasticsearch-certutil cert命令:
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
输出是一个PKCS#12密钥存储库,它包括节点证书、节点密钥和CA证书。
系统还会提示输入密码。您可以为证书和密钥输入密码,也可以按enter键将密码留空。
默认情况下,elasticsearch-certutil生成的证书中没有主机名信息(也就是说,它们没有任何Subject Alternative Name字段)。这意味着您可以为集群中的每个节点使用证书,但是必须关闭主机名验证,如下面的配置所示。
如果希望在集群中使用主机名验证,请为每个节点运行一次elasticsearch-certutil cert命令,并提供--name
、--dns
和--ip
选项。
注意:您应该保护输出文件,因为它们包含实例的私钥。
或者,如果您希望使用商业或组织特定的CA,您可以使用elasticsearch-certutil csr命令为集群中的节点生成证书签名请求(csr)。更多信息,参见elasticsearch-certutil.
3、将节点证书复制到适当的位置。
将适用的.p12文件复制到每个节点上的Elasticsearch配置目录中的目录中。例如,/home/es/config/certs。不需要将CA文件复制到此目录。
对于您希望配置的每个附加弹性产品,将证书复制到相关的配置目录。
注意:如果您选择不使用elasticsearch-certutil,如果存在扩展密钥使用扩展,则您获得的证书必须同时允许clientAuth和serverAuth。证书必须是PEM或PKCS#12格式。虽然没有严格限制,强烈建议证书包含节点的DNS名称和/或IP地址,以便可以使用主机名验证。
集群中节点间的加密通信
传输网络层用于集群中节点之间的内部通信。启用X-Pack安全性时,必须使用TLS确保节点之间的通信是加密的。
1、生成节点证书(Generate node certificates)
2、启用TLS并指定访问节点证书所需的信息。
- 如果签名的证书是PKCS#12格式,请将以下信息添加到每个节点上的elasticsearch.yml文件:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate#1
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12#2
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12#3
#1
:如果您使用elasticsearch-certutil cert命令带有--dns
或--ip
选项,并且希望启用严格的主机名检查,请将验证模式设置为full。
#2
:如果为每个节点创建单独的证书,则可能需要在每个节点上自定义此路径。例如,如果文件名与节点名匹配,可以使用certs/${node.name}.p12
格式。
#3
:elasticsearch-certutil输出PKCS#12密钥存储库,其中包含CA证书作为受信任证书条目。这允许密钥存储库也可以用作信任存储库。在这种情况下,路径值应该与keystore.path匹配。但是,请注意,这不是一般规则。有些密钥存储库不能用作truststore,只有特别制作的才能做到。
- 如果证书是PEM格式,请将以下信息添加到每个节点上的elasticsearch.yml文件:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate#1
xpack.security.transport.ssl.key: /home/es/config/node01.key#2
xpack.security.transport.ssl.certificate: /home/es/config/node01.crt#3
xpack.security.transport.ssl.certificate_authorities: [ "/home/es/config/ca.crt" ]#4
#1
:如果您使用elasticsearch-certutil cert命令带有--dns
或--ip
选项,并且希望启用严格的主机名检查,请将验证模式设置为full。关于这些值的描述参见xpack.ssl.verification_mode
.
#2
:节点键文件的完整路径。这必须是Elasticsearch配置目录中的一个位置。
#3
:节点证书的完整路径。这必须是Elasticsearch配置目录中的一个位置。
#4
:应该信任的CA证书的路径数组。这些路径必须是Elasticsearch配置目录中的一个位置。
3、如果您使用密码保护节点的证书,请将密码添加到您的Elasticsearch密钥存储区:
- 如果签署的证书是PKCS#12格式,请使用以下命令:
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
- 如果证书是PEM格式,请使用以下命令:
bin/elasticsearch-keystore add xpack.security.transport.ssl.secure_key_passphrase
4、重启elasticsearch
必须重新启动整个集群。配置为使用TLS的节点不能与使用未加密网络的节点通信(反之亦然)。启用TLS之后,必须重新启动所有节点,以便在集群中保持通信。
注意:
所有与tls相关的节点设置都被认为是高度敏感的,因此不会通过节点信息API公开这些设置的更多信息,请参见安全性设置。
Elasticsearch监视所有被配置为与tls相关节点设置值的文件,如证书、密钥、密钥存储库或信任存储库。如果您更新了这些文件中的任何一个(例如,当您的主机名更改或证书到期时)Elasticsearch重新加载它们。文件轮询的频率由全局弹性搜索决定resource.reload.interval.high设置,默认为5s。
加密HTTP客户端通信
当启用X-Pack安全性时,您可以选择使用TLS来确保HTTP客户机和集群之间的通信是加密的。
注意:强烈建议在HTTP层启用TLS,但不是必需的。如果在Elasticsearch中启用HTTP层上的TLS,那么可能需要在弹性堆栈的其他部分和使用的任何Elasticsearch客户机中进行配置更改。
1、如果您还没有这样做,请生成节点证书(generate node certificates)
2、启用TLS并指定访问节点证书所需的信息。
- 如果签名的证书是PKCS#12格式,请将以下信息添加到每个节点上的elasticsearch.yml文件:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12#1
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12#2
#1
:如果为每个节点创建单独的证书,则可能需要在每个节点上自定义此路径。例如,如果文件名与节点名匹配,可以使用certs/${node.name}.p12
格式。
#2
:elasticsearch-certutil输出PKCS#12密钥存储库,其中包含CA证书作为受信任证书条目。这允许密钥存储库也可以用作信任存储库。在这种情况下,路径值应该与keystore.path匹配。
- 如果证书是PEM格式,请将以下信息添加到每个节点上的elasticsearch.yml文件:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.key: /home/es/config/node01.key#1
xpack.security.transport.ssl.certificate: /home/es/config/node01.crt#2
xpack.security.transport.ssl.certificate_authorities: [ "/home/es/config/ca.crt" ]#3
#1
:节点键文件的完整路径。这必须是Elasticsearch配置目录中的一个位置。
#2
:节点证书的完整路径。这必须是Elasticsearch配置目录中的一个位置。
#3
:应该信任的CA证书的路径数组。这些路径必须是Elasticsearch配置目录中的一个位置。
3、如果您使用密码保护节点的证书,请将密码添加到您的Elasticsearch密钥存储区:
- 如果签署的证书是PKCS#12格式,请使用以下命令:
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
- 如果证书是PEM格式,请使用以下命令:
bin/elasticsearch-keystore add xpack.security.transport.ssl.secure_key_passphrase
4、重启elasticsearch
必须重新启动整个集群。配置为使用TLS的节点不能与使用未加密网络的节点通信(反之亦然)。启用TLS之后,必须重新启动所有节点,以便在集群中保持通信。
注意:
所有与tls相关的节点设置都被认为是高度敏感的,因此不会通过节点信息API公开这些设置的更多信息,请参见安全性设置。
Elasticsearch监视所有被配置为与tls相关节点设置值的文件,如证书、密钥、密钥存储库或信任存储库。如果您更新了这些文件中的任何一个(例如,当您的主机名更改或证书到期时)Elasticsearch重新加载它们。文件轮询的频率由全局弹性搜索决定resource.reload.interval.high设置,默认为5s。