Elasticsearch学习笔记(10)

目录

为监控配置索引

索引模板用于配置存储从建群收集的监视数据的索引。

你可以通过_template API检索模板:

curl -X GET "localhost:9200/_template/.monitoring-*"

默认情况下,该模板为监视索引配置一个碎片和一个副本。要覆盖默认设置,请添加您自己的模板:
  1、将template模式设置为.monitoring-*
  2、将模板的 order设置为1。这确保您的模板是在默认模板之后应用的,默认模板的order0
  3、在settings部分指定number_of_shardsnumber_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_shardsnumber_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.enabledtrue。默认设置是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 SettingsHTTP 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
      主机支持多种格式,既可以是数组也可以是单个值。支持的格式包含hostnamehostname:porthttp://hostnamehttp://hostname:porthttps://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-TypeContent-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, TLSv1xpack.ssl.supported_protocols配置的默认值。

xpack.monitoring.exporters.$NAME.ssl.verification_mode
  控制证书的验证。有效值是nonecertificatefull。获取这些值的描述请参见xpack.ssl.verification_modexpack.ssl.verification_mode的默认值。

xpack.monitoring.exporters.$NAME.ssl.cipher_suites
  支持的密码套件可以在Oracle中找到 Java Cryptography Architecture documentationxpack.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/subscriptionsLicense 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命令是第一次设置内置用户密码最简单的方法。
  例如,您可以在“交互”模式下运行该命令,提示您为elastickibanabeats_systemlogstash_systemapm_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 EventsAuditing 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

下一章 —— Elasticsearch学习笔记(11)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容