logstash-input-elasticsearch 4.23.0 → 4.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/docs/index.asciidoc +4 -2
- data/lib/logstash/inputs/elasticsearch.rb +32 -3
- data/logstash-input-elasticsearch.gemspec +2 -2
- data/spec/fixtures/test_certs/GENERATED_AT +1 -1
- data/spec/fixtures/test_certs/ca.crt +8 -8
- data/spec/fixtures/test_certs/ca.der.sha256 +1 -1
- data/spec/fixtures/test_certs/es.chain.crt +16 -16
- data/spec/fixtures/test_certs/es.crt +8 -8
- data/spec/inputs/elasticsearch_spec.rb +42 -6
- data/version +1 -0
- metadata +21 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4659e2475716f4e770b355e8fc7d05aac897efe0f392b78845e1d2d72278b82c
|
|
4
|
+
data.tar.gz: dc57e5eb3592d4106a04a68be952e72863a0d9315f0458880871c54d2827531a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 383efe321bc63ee288e974edc589b2edffcf659a8fab8d82edc8290aaf77c02965e0ddc3ba40154cdfa667a3176741c01f7b929ef41f49424e2a333e09c23bfa
|
|
7
|
+
data.tar.gz: d7a5461caba35b6d20ec3034d94489f1ecbd1f74fb51904b2eb6e077756ee68342e9d2b06b55722b4ad40b1f71dfbe071e2381c183e6a38a29912e0b16a7380f
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
## 4.23.1
|
|
2
|
+
- Support base64-encoded and Elastic Cloud (`essu_`-prefixed) API keys in the `api_key` option; reject unrecognized formats at startup. [#276](https://github.com/logstash-plugins/logstash-input-elasticsearch/pull/276)
|
|
3
|
+
|
|
1
4
|
## 4.23.0
|
|
2
5
|
- ES|QL support [#235](https://github.com/logstash-plugins/logstash-input-elasticsearch/pull/235)
|
|
3
6
|
|
data/docs/index.asciidoc
CHANGED
|
@@ -401,10 +401,12 @@ input plugins.
|
|
|
401
401
|
|
|
402
402
|
Authenticate using Elasticsearch API key. Note that this option also requires enabling the <<plugins-{type}s-{plugin}-ssl_enabled>> option.
|
|
403
403
|
|
|
404
|
-
|
|
404
|
+
The format is `id:api_key`, where `id` and `api_key` are as returned by the
|
|
405
405
|
Elasticsearch
|
|
406
406
|
{ref}/security-api-create-api-key.html[Create
|
|
407
|
-
API key API].
|
|
407
|
+
API key API]. The base64-encoded form of that pair is also accepted, as is an
|
|
408
|
+
https://www.elastic.co/docs/deploy-manage/api-keys/elastic-cloud-api-keys[Elastic Cloud API key]
|
|
409
|
+
(prefixed with `essu_`), which is used as-is.
|
|
408
410
|
|
|
409
411
|
[id="plugins-{type}s-{plugin}-ca_trusted_fingerprint"]
|
|
410
412
|
===== `ca_trusted_fingerprint`
|
|
@@ -215,7 +215,8 @@ class LogStash::Inputs::Elasticsearch < LogStash::Inputs::Base
|
|
|
215
215
|
config :cloud_auth, :validate => :password
|
|
216
216
|
|
|
217
217
|
# Authenticate using Elasticsearch API key.
|
|
218
|
-
#
|
|
218
|
+
# Format is either the `id:api_key` pair (as returned by https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html[Create API key]),
|
|
219
|
+
# its base64-encoded form, or an https://www.elastic.co/docs/deploy-manage/api-keys/elastic-cloud-api-keys[Elastic Cloud API key] (prefixed with `essu_`) can be used.
|
|
219
220
|
config :api_key, :validate => :password
|
|
220
221
|
|
|
221
222
|
# Set the address of a forward HTTP proxy.
|
|
@@ -599,12 +600,40 @@ class LogStash::Inputs::Elasticsearch < LogStash::Inputs::Base
|
|
|
599
600
|
end
|
|
600
601
|
|
|
601
602
|
def setup_api_key(api_key)
|
|
602
|
-
return {} unless (api_key
|
|
603
|
+
return {} unless (api_key&.value)
|
|
603
604
|
|
|
604
|
-
token =
|
|
605
|
+
token = resolve_api_key(api_key.value)
|
|
605
606
|
{ 'Authorization' => "ApiKey #{token}" }
|
|
606
607
|
end
|
|
607
608
|
|
|
609
|
+
# Resolves the `api_key` value into the credential used in the
|
|
610
|
+
# `Authorization: ApiKey` header. An already base64-encoded key and an Elastic
|
|
611
|
+
# Cloud API key are used as-is; a raw `id:api_key` pair is base64-encoded. An
|
|
612
|
+
# unrecognized value is rejected so a malformed key surfaces at startup rather
|
|
613
|
+
# than as a later authentication failure.
|
|
614
|
+
def resolve_api_key(key_value)
|
|
615
|
+
if base64?(key_value) || cloud_api_key?(key_value)
|
|
616
|
+
key_value
|
|
617
|
+
elsif key_value.match?(/\A[^:]+:[^:]+\z/)
|
|
618
|
+
Base64.strict_encode64(key_value)
|
|
619
|
+
else
|
|
620
|
+
raise LogStash::ConfigurationError, "Invalid api_key format. Expected a base64-encoded key, an 'id:api_key' pair, or a Cloud API key (essu_ prefix)."
|
|
621
|
+
end
|
|
622
|
+
end
|
|
623
|
+
|
|
624
|
+
# Elastic Cloud API keys (such as the unified Serverless keys) are opaque
|
|
625
|
+
# tokens prefixed with `essu_` that Elasticsearch accepts verbatim in the
|
|
626
|
+
# `Authorization: ApiKey` header, with no base64 encoding.
|
|
627
|
+
def cloud_api_key?(string)
|
|
628
|
+
string.match?(/\Aessu_.+/)
|
|
629
|
+
end
|
|
630
|
+
|
|
631
|
+
def base64?(string)
|
|
632
|
+
string == Base64.strict_encode64(Base64.strict_decode64(string))
|
|
633
|
+
rescue ArgumentError
|
|
634
|
+
false
|
|
635
|
+
end
|
|
636
|
+
|
|
608
637
|
def prepare_user_agent
|
|
609
638
|
os_name = java.lang.System.getProperty('os.name')
|
|
610
639
|
os_version = java.lang.System.getProperty('os.version')
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
|
|
3
3
|
s.name = 'logstash-input-elasticsearch'
|
|
4
|
-
s.version = '
|
|
4
|
+
s.version = ::File.read('version').split("\n").first
|
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
|
6
6
|
s.summary = "Reads query results from an Elasticsearch cluster"
|
|
7
7
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
|
|
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
|
11
11
|
s.require_paths = ["lib"]
|
|
12
12
|
|
|
13
13
|
# Files
|
|
14
|
-
s.files = Dir["lib/**/*","spec/**/*","*.gemspec","*.md","CONTRIBUTORS","Gemfile","LICENSE","NOTICE.TXT", "vendor/jar-dependencies/**/*.jar", "vendor/jar-dependencies/**/*.rb", "VERSION", "docs/**/*"]
|
|
14
|
+
s.files = Dir["lib/**/*","spec/**/*","*.gemspec","*.md","CONTRIBUTORS","Gemfile","LICENSE","NOTICE.TXT", "vendor/jar-dependencies/**/*.jar", "vendor/jar-dependencies/**/*.rb", "VERSION", "version", "docs/**/*"]
|
|
15
15
|
|
|
16
16
|
# Tests
|
|
17
17
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2026-01-23T17:38:25+01:00
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
|
2
2
|
MIIDFTCCAf2gAwIBAgIBATANBgkqhkiG9w0BAQsFADA0MTIwMAYDVQQDEylFbGFz
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
dGljIENlcnRpZmljYXRlIFRvb2wgQXV0b2dlbmVyYXRlZCBDQTAeFw0yNjAxMjMx
|
|
4
|
+
NjM4MjVaFw0yNzAxMjMxNjM4MjVaMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlm
|
|
5
5
|
aWNhdGUgVG9vbCBBdXRvZ2VuZXJhdGVkIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
|
6
6
|
AQ8AMIIBCgKCAQEArUe66xG4Y2zO13gRC+rBwyvxe+c01pqV6ukw6isIbJIQWs1/
|
|
7
7
|
QfEMhUwYwKs6/UXxK+VwardcA2zYwngXbGGEtms+mpUfH5CdJnrqW7lHz1BVK4yH
|
|
@@ -10,10 +10,10 @@ QfEMhUwYwKs6/UXxK+VwardcA2zYwngXbGGEtms+mpUfH5CdJnrqW7lHz1BVK4yH
|
|
|
10
10
|
i4lUiR6Uo9D6WMFjeRYFF7GolCy/I1SzWBmmOnNhQLO5VxcNG4ldhBcapZeGwE98
|
|
11
11
|
m/5lxLIwgFR9ZP8bXdxZTWLC58/LQ2NqOjA9mwIDAQABozIwMDAPBgNVHRMBAf8E
|
|
12
12
|
BTADAQH/MB0GA1UdDgQWBBTIJMnuftpfkxNCOkbF0R4xgcKQRjANBgkqhkiG9w0B
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
AQsFAAOCAQEAgZPz/e29AepHZu8uuO6+75b6Uf88m8x5m7XL13m9+vTTSqLvCiBw
|
|
14
|
+
JCf5caO73iOx8AlTT2iSlKPAS/7ogik5anZziqweHmBakb+HNQcUB4Vv4VBo5Ai3
|
|
15
|
+
SdOm28uu4EznVLUILPUHl4FQGxhn6ba1tLEWgxlD/ynBtfcmh9UFtBqIawrpAArv
|
|
16
|
+
TKwGBSkcSxh/yOIo+qbyBh9EyxxlGW/Z08m9qjNqHATDxCelcTsQLhCHkvNShR4j
|
|
17
|
+
v1sFw5XQ8H3zQU6w4WzV81A3K8erIU8WnvdisXLk0T1VB5KURy4+UDyw44tOAPD2
|
|
18
|
+
vBq3gYLgcVEMYVfOWCzDy7LS49leXRzAOA==
|
|
19
19
|
-----END CERTIFICATE-----
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
28c468dcfc5ed4626eeb748a91093c272dda52804c62e2ee1d8fd31c182009ae
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
|
2
2
|
MIIDIzCCAgugAwIBAgIBATANBgkqhkiG9w0BAQsFADA0MTIwMAYDVQQDEylFbGFz
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
dGljIENlcnRpZmljYXRlIFRvb2wgQXV0b2dlbmVyYXRlZCBDQTAeFw0yNjAxMjMx
|
|
4
|
+
NjM4MjVaFw0yNzAxMjMxNjM4MjVaMA0xCzAJBgNVBAMTAmVzMIIBIjANBgkqhkiG
|
|
5
5
|
9w0BAQEFAAOCAQ8AMIIBCgKCAQEArZLZvLSWDK7Ul+AaBnjU81dsfaow8zOjCC5V
|
|
6
6
|
V21nXpYzQJoQbuWcvGYxwL7ZDs2ca4Wc8BVCj1NDduHuP7U+QIlUdQpl8kh5a0Zz
|
|
7
7
|
36pcFw7UyF51/AzWixJrht/Azzkb5cpZtE22ZK0KhS4oCsjJmTN0EABAsGhDI9/c
|
|
@@ -10,17 +10,17 @@ MjNrUC7iP0dvfOuzAPp7ufY83h98jKKXUYV24snbbvmqoWI6GQQNSG/sEo1+1UGH
|
|
|
10
10
|
hQNM3zcKKsjEMomBzVBc4SV3KXO0d/jGdDtlqsm2oXqlTMdtGwIDAQABo2cwZTAY
|
|
11
11
|
BgNVHREEETAPgg1lbGFzdGljc2VhcmNoMAkGA1UdEwQCMAAwHQYDVR0OBBYEFFQU
|
|
12
12
|
K+6Cg2kExRj1xSDzEi4kkgKXMB8GA1UdIwQYMBaAFMgkye5+2l+TE0I6RsXRHjGB
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
wpBGMA0GCSqGSIb3DQEBCwUAA4IBAQCDFHoe8ntx/D69gb8uVQhUDI2ERb0Hocbh
|
|
14
|
+
BpQVidsKEv220zmZW3O9PX0aN4j3e4HUeRNSdLmtN+sXJ1xCMjHlzA5z5wYJOk2y
|
|
15
|
+
4B/eCOzHoHfvR+l5NUSemZ5mk8V+gThGydPmLZBN3afjzd3NJ7NVaCA8cyKwe2jr
|
|
16
|
+
AMrIdGL5usoBSdbd7Ww0nWhLhqxmmV79+orCwAPJxkzsgFDK+vfIw4VHERXNoIPe
|
|
17
|
+
WKVBGpUCFPSfosLo9fSziNDXL71CrWZlPXt3Otip4QKQV5sZI2zxm1JtHdHX6Ul1
|
|
18
|
+
X7xkcUR5cOF0InxefGl9VHIZTYC5kSzAz95WV068j2Jxgu28GRP5
|
|
19
19
|
-----END CERTIFICATE-----
|
|
20
20
|
-----BEGIN CERTIFICATE-----
|
|
21
21
|
MIIDFTCCAf2gAwIBAgIBATANBgkqhkiG9w0BAQsFADA0MTIwMAYDVQQDEylFbGFz
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
dGljIENlcnRpZmljYXRlIFRvb2wgQXV0b2dlbmVyYXRlZCBDQTAeFw0yNjAxMjMx
|
|
23
|
+
NjM4MjVaFw0yNzAxMjMxNjM4MjVaMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlm
|
|
24
24
|
aWNhdGUgVG9vbCBBdXRvZ2VuZXJhdGVkIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
|
25
25
|
AQ8AMIIBCgKCAQEArUe66xG4Y2zO13gRC+rBwyvxe+c01pqV6ukw6isIbJIQWs1/
|
|
26
26
|
QfEMhUwYwKs6/UXxK+VwardcA2zYwngXbGGEtms+mpUfH5CdJnrqW7lHz1BVK4yH
|
|
@@ -29,10 +29,10 @@ QfEMhUwYwKs6/UXxK+VwardcA2zYwngXbGGEtms+mpUfH5CdJnrqW7lHz1BVK4yH
|
|
|
29
29
|
i4lUiR6Uo9D6WMFjeRYFF7GolCy/I1SzWBmmOnNhQLO5VxcNG4ldhBcapZeGwE98
|
|
30
30
|
m/5lxLIwgFR9ZP8bXdxZTWLC58/LQ2NqOjA9mwIDAQABozIwMDAPBgNVHRMBAf8E
|
|
31
31
|
BTADAQH/MB0GA1UdDgQWBBTIJMnuftpfkxNCOkbF0R4xgcKQRjANBgkqhkiG9w0B
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
AQsFAAOCAQEAgZPz/e29AepHZu8uuO6+75b6Uf88m8x5m7XL13m9+vTTSqLvCiBw
|
|
33
|
+
JCf5caO73iOx8AlTT2iSlKPAS/7ogik5anZziqweHmBakb+HNQcUB4Vv4VBo5Ai3
|
|
34
|
+
SdOm28uu4EznVLUILPUHl4FQGxhn6ba1tLEWgxlD/ynBtfcmh9UFtBqIawrpAArv
|
|
35
|
+
TKwGBSkcSxh/yOIo+qbyBh9EyxxlGW/Z08m9qjNqHATDxCelcTsQLhCHkvNShR4j
|
|
36
|
+
v1sFw5XQ8H3zQU6w4WzV81A3K8erIU8WnvdisXLk0T1VB5KURy4+UDyw44tOAPD2
|
|
37
|
+
vBq3gYLgcVEMYVfOWCzDy7LS49leXRzAOA==
|
|
38
38
|
-----END CERTIFICATE-----
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
|
2
2
|
MIIDIzCCAgugAwIBAgIBATANBgkqhkiG9w0BAQsFADA0MTIwMAYDVQQDEylFbGFz
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
dGljIENlcnRpZmljYXRlIFRvb2wgQXV0b2dlbmVyYXRlZCBDQTAeFw0yNjAxMjMx
|
|
4
|
+
NjM4MjVaFw0yNzAxMjMxNjM4MjVaMA0xCzAJBgNVBAMTAmVzMIIBIjANBgkqhkiG
|
|
5
5
|
9w0BAQEFAAOCAQ8AMIIBCgKCAQEArZLZvLSWDK7Ul+AaBnjU81dsfaow8zOjCC5V
|
|
6
6
|
V21nXpYzQJoQbuWcvGYxwL7ZDs2ca4Wc8BVCj1NDduHuP7U+QIlUdQpl8kh5a0Zz
|
|
7
7
|
36pcFw7UyF51/AzWixJrht/Azzkb5cpZtE22ZK0KhS4oCsjJmTN0EABAsGhDI9/c
|
|
@@ -10,10 +10,10 @@ MjNrUC7iP0dvfOuzAPp7ufY83h98jKKXUYV24snbbvmqoWI6GQQNSG/sEo1+1UGH
|
|
|
10
10
|
hQNM3zcKKsjEMomBzVBc4SV3KXO0d/jGdDtlqsm2oXqlTMdtGwIDAQABo2cwZTAY
|
|
11
11
|
BgNVHREEETAPgg1lbGFzdGljc2VhcmNoMAkGA1UdEwQCMAAwHQYDVR0OBBYEFFQU
|
|
12
12
|
K+6Cg2kExRj1xSDzEi4kkgKXMB8GA1UdIwQYMBaAFMgkye5+2l+TE0I6RsXRHjGB
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
wpBGMA0GCSqGSIb3DQEBCwUAA4IBAQCDFHoe8ntx/D69gb8uVQhUDI2ERb0Hocbh
|
|
14
|
+
BpQVidsKEv220zmZW3O9PX0aN4j3e4HUeRNSdLmtN+sXJ1xCMjHlzA5z5wYJOk2y
|
|
15
|
+
4B/eCOzHoHfvR+l5NUSemZ5mk8V+gThGydPmLZBN3afjzd3NJ7NVaCA8cyKwe2jr
|
|
16
|
+
AMrIdGL5usoBSdbd7Ww0nWhLhqxmmV79+orCwAPJxkzsgFDK+vfIw4VHERXNoIPe
|
|
17
|
+
WKVBGpUCFPSfosLo9fSziNDXL71CrWZlPXt3Otip4QKQV5sZI2zxm1JtHdHX6Ul1
|
|
18
|
+
X7xkcUR5cOF0InxefGl9VHIZTYC5kSzAz95WV068j2Jxgu28GRP5
|
|
19
19
|
-----END CERTIFICATE-----
|
|
@@ -810,14 +810,50 @@ describe LogStash::Inputs::Elasticsearch, :ecs_compatibility_support do
|
|
|
810
810
|
end
|
|
811
811
|
|
|
812
812
|
context "with ssl" do
|
|
813
|
-
let(:
|
|
813
|
+
let(:api_key_value) { nil }
|
|
814
|
+
let(:config) { super().merge("ssl_enabled" => true, 'api_key' => LogStash::Util::Password.new(api_key_value)) }
|
|
815
|
+
let(:encoded_api_key) { Base64.strict_encode64('foo:bar') }
|
|
814
816
|
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
817
|
+
shared_examples "a plugin that sets the ApiKey authorization header" do
|
|
818
|
+
it "correctly sets the Authorization header" do
|
|
819
|
+
plugin.register
|
|
820
|
+
client = plugin.send(:client)
|
|
821
|
+
auth_header = extract_transport(client).options[:transport_options][:headers]['Authorization']
|
|
822
|
+
|
|
823
|
+
expect(auth_header).to eql("ApiKey #{encoded_api_key}")
|
|
824
|
+
end
|
|
825
|
+
end
|
|
826
|
+
|
|
827
|
+
context "with a non-encoded API key" do
|
|
828
|
+
let(:api_key_value) { "foo:bar" }
|
|
829
|
+
it_behaves_like "a plugin that sets the ApiKey authorization header"
|
|
830
|
+
end
|
|
831
|
+
|
|
832
|
+
context "with an encoded API key" do
|
|
833
|
+
let(:api_key_value) { encoded_api_key }
|
|
834
|
+
it_behaves_like "a plugin that sets the ApiKey authorization header"
|
|
835
|
+
end
|
|
836
|
+
|
|
837
|
+
context "with an Elastic Cloud API key (essu_ prefix)" do
|
|
838
|
+
# The suffix is intentionally not canonical base64: a Cloud key is opaque
|
|
839
|
+
# and must be forwarded verbatim regardless of its payload encoding.
|
|
840
|
+
let(:api_key_value) { "essu_VFZGblZreFhTekJ4ZDB4M2NHUnZRMEU2YzNWd1pYSnpaV055WlhRPQ==AAAAAAAA" }
|
|
819
841
|
|
|
820
|
-
|
|
842
|
+
it "sets the Authorization header verbatim without re-encoding" do
|
|
843
|
+
plugin.register
|
|
844
|
+
client = plugin.send(:client)
|
|
845
|
+
auth_header = extract_transport(client).options[:transport_options][:headers]['Authorization']
|
|
846
|
+
|
|
847
|
+
expect(auth_header).to eql("ApiKey #{api_key_value}")
|
|
848
|
+
end
|
|
849
|
+
end
|
|
850
|
+
|
|
851
|
+
context "with an unrecognized api_key format" do
|
|
852
|
+
let(:api_key_value) { "not-a-valid-key" }
|
|
853
|
+
|
|
854
|
+
it "fails registration with a configuration error" do
|
|
855
|
+
expect { plugin.register }.to raise_error(LogStash::ConfigurationError, /Invalid api_key format/)
|
|
856
|
+
end
|
|
821
857
|
end
|
|
822
858
|
|
|
823
859
|
context 'user also set' do
|
data/version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.23.1
|
metadata
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: logstash-input-elasticsearch
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.23.
|
|
4
|
+
version: 4.23.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Elastic
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2026-07-17 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: logstash-core-plugin-api
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
@@ -19,7 +19,6 @@ dependencies:
|
|
|
19
19
|
- - "<="
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
21
|
version: '2.99'
|
|
22
|
-
name: logstash-core-plugin-api
|
|
23
22
|
type: :runtime
|
|
24
23
|
prerelease: false
|
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -31,12 +30,12 @@ dependencies:
|
|
|
31
30
|
- !ruby/object:Gem::Version
|
|
32
31
|
version: '2.99'
|
|
33
32
|
- !ruby/object:Gem::Dependency
|
|
33
|
+
name: logstash-mixin-ecs_compatibility_support
|
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
|
35
35
|
requirements:
|
|
36
36
|
- - "~>"
|
|
37
37
|
- !ruby/object:Gem::Version
|
|
38
38
|
version: '1.3'
|
|
39
|
-
name: logstash-mixin-ecs_compatibility_support
|
|
40
39
|
type: :runtime
|
|
41
40
|
prerelease: false
|
|
42
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -45,12 +44,12 @@ dependencies:
|
|
|
45
44
|
- !ruby/object:Gem::Version
|
|
46
45
|
version: '1.3'
|
|
47
46
|
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: logstash-mixin-event_support
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
49
49
|
requirements:
|
|
50
50
|
- - "~>"
|
|
51
51
|
- !ruby/object:Gem::Version
|
|
52
52
|
version: '1.0'
|
|
53
|
-
name: logstash-mixin-event_support
|
|
54
53
|
type: :runtime
|
|
55
54
|
prerelease: false
|
|
56
55
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -59,12 +58,12 @@ dependencies:
|
|
|
59
58
|
- !ruby/object:Gem::Version
|
|
60
59
|
version: '1.0'
|
|
61
60
|
- !ruby/object:Gem::Dependency
|
|
61
|
+
name: logstash-mixin-validator_support
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
|
63
63
|
requirements:
|
|
64
64
|
- - "~>"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
66
|
version: '1.0'
|
|
67
|
-
name: logstash-mixin-validator_support
|
|
68
67
|
type: :runtime
|
|
69
68
|
prerelease: false
|
|
70
69
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -73,12 +72,12 @@ dependencies:
|
|
|
73
72
|
- !ruby/object:Gem::Version
|
|
74
73
|
version: '1.0'
|
|
75
74
|
- !ruby/object:Gem::Dependency
|
|
75
|
+
name: logstash-mixin-scheduler
|
|
76
76
|
requirement: !ruby/object:Gem::Requirement
|
|
77
77
|
requirements:
|
|
78
78
|
- - "~>"
|
|
79
79
|
- !ruby/object:Gem::Version
|
|
80
80
|
version: '1.0'
|
|
81
|
-
name: logstash-mixin-scheduler
|
|
82
81
|
type: :runtime
|
|
83
82
|
prerelease: false
|
|
84
83
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -87,6 +86,7 @@ dependencies:
|
|
|
87
86
|
- !ruby/object:Gem::Version
|
|
88
87
|
version: '1.0'
|
|
89
88
|
- !ruby/object:Gem::Dependency
|
|
89
|
+
name: elasticsearch
|
|
90
90
|
requirement: !ruby/object:Gem::Requirement
|
|
91
91
|
requirements:
|
|
92
92
|
- - ">="
|
|
@@ -95,7 +95,6 @@ dependencies:
|
|
|
95
95
|
- - "<"
|
|
96
96
|
- !ruby/object:Gem::Version
|
|
97
97
|
version: '9'
|
|
98
|
-
name: elasticsearch
|
|
99
98
|
type: :runtime
|
|
100
99
|
prerelease: false
|
|
101
100
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -107,12 +106,12 @@ dependencies:
|
|
|
107
106
|
- !ruby/object:Gem::Version
|
|
108
107
|
version: '9'
|
|
109
108
|
- !ruby/object:Gem::Dependency
|
|
109
|
+
name: logstash-mixin-ca_trusted_fingerprint_support
|
|
110
110
|
requirement: !ruby/object:Gem::Requirement
|
|
111
111
|
requirements:
|
|
112
112
|
- - "~>"
|
|
113
113
|
- !ruby/object:Gem::Version
|
|
114
114
|
version: '1.0'
|
|
115
|
-
name: logstash-mixin-ca_trusted_fingerprint_support
|
|
116
115
|
type: :runtime
|
|
117
116
|
prerelease: false
|
|
118
117
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -121,12 +120,12 @@ dependencies:
|
|
|
121
120
|
- !ruby/object:Gem::Version
|
|
122
121
|
version: '1.0'
|
|
123
122
|
- !ruby/object:Gem::Dependency
|
|
123
|
+
name: logstash-mixin-normalize_config_support
|
|
124
124
|
requirement: !ruby/object:Gem::Requirement
|
|
125
125
|
requirements:
|
|
126
126
|
- - "~>"
|
|
127
127
|
- !ruby/object:Gem::Version
|
|
128
128
|
version: '1.0'
|
|
129
|
-
name: logstash-mixin-normalize_config_support
|
|
130
129
|
type: :runtime
|
|
131
130
|
prerelease: false
|
|
132
131
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -135,12 +134,12 @@ dependencies:
|
|
|
135
134
|
- !ruby/object:Gem::Version
|
|
136
135
|
version: '1.0'
|
|
137
136
|
- !ruby/object:Gem::Dependency
|
|
137
|
+
name: tzinfo
|
|
138
138
|
requirement: !ruby/object:Gem::Requirement
|
|
139
139
|
requirements:
|
|
140
140
|
- - ">="
|
|
141
141
|
- !ruby/object:Gem::Version
|
|
142
142
|
version: '0'
|
|
143
|
-
name: tzinfo
|
|
144
143
|
type: :runtime
|
|
145
144
|
prerelease: false
|
|
146
145
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -149,12 +148,12 @@ dependencies:
|
|
|
149
148
|
- !ruby/object:Gem::Version
|
|
150
149
|
version: '0'
|
|
151
150
|
- !ruby/object:Gem::Dependency
|
|
151
|
+
name: tzinfo-data
|
|
152
152
|
requirement: !ruby/object:Gem::Requirement
|
|
153
153
|
requirements:
|
|
154
154
|
- - ">="
|
|
155
155
|
- !ruby/object:Gem::Version
|
|
156
156
|
version: '0'
|
|
157
|
-
name: tzinfo-data
|
|
158
157
|
type: :runtime
|
|
159
158
|
prerelease: false
|
|
160
159
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -163,12 +162,12 @@ dependencies:
|
|
|
163
162
|
- !ruby/object:Gem::Version
|
|
164
163
|
version: '0'
|
|
165
164
|
- !ruby/object:Gem::Dependency
|
|
165
|
+
name: manticore
|
|
166
166
|
requirement: !ruby/object:Gem::Requirement
|
|
167
167
|
requirements:
|
|
168
168
|
- - ">="
|
|
169
169
|
- !ruby/object:Gem::Version
|
|
170
170
|
version: 0.7.1
|
|
171
|
-
name: manticore
|
|
172
171
|
type: :runtime
|
|
173
172
|
prerelease: false
|
|
174
173
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -177,12 +176,12 @@ dependencies:
|
|
|
177
176
|
- !ruby/object:Gem::Version
|
|
178
177
|
version: 0.7.1
|
|
179
178
|
- !ruby/object:Gem::Dependency
|
|
179
|
+
name: logstash-codec-plain
|
|
180
180
|
requirement: !ruby/object:Gem::Requirement
|
|
181
181
|
requirements:
|
|
182
182
|
- - ">="
|
|
183
183
|
- !ruby/object:Gem::Version
|
|
184
184
|
version: '0'
|
|
185
|
-
name: logstash-codec-plain
|
|
186
185
|
type: :development
|
|
187
186
|
prerelease: false
|
|
188
187
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -191,12 +190,12 @@ dependencies:
|
|
|
191
190
|
- !ruby/object:Gem::Version
|
|
192
191
|
version: '0'
|
|
193
192
|
- !ruby/object:Gem::Dependency
|
|
193
|
+
name: logstash-devutils
|
|
194
194
|
requirement: !ruby/object:Gem::Requirement
|
|
195
195
|
requirements:
|
|
196
196
|
- - ">="
|
|
197
197
|
- !ruby/object:Gem::Version
|
|
198
198
|
version: '0'
|
|
199
|
-
name: logstash-devutils
|
|
200
199
|
type: :development
|
|
201
200
|
prerelease: false
|
|
202
201
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -205,12 +204,12 @@ dependencies:
|
|
|
205
204
|
- !ruby/object:Gem::Version
|
|
206
205
|
version: '0'
|
|
207
206
|
- !ruby/object:Gem::Dependency
|
|
207
|
+
name: timecop
|
|
208
208
|
requirement: !ruby/object:Gem::Requirement
|
|
209
209
|
requirements:
|
|
210
210
|
- - ">="
|
|
211
211
|
- !ruby/object:Gem::Version
|
|
212
212
|
version: '0'
|
|
213
|
-
name: timecop
|
|
214
213
|
type: :development
|
|
215
214
|
prerelease: false
|
|
216
215
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -219,12 +218,12 @@ dependencies:
|
|
|
219
218
|
- !ruby/object:Gem::Version
|
|
220
219
|
version: '0'
|
|
221
220
|
- !ruby/object:Gem::Dependency
|
|
221
|
+
name: cabin
|
|
222
222
|
requirement: !ruby/object:Gem::Requirement
|
|
223
223
|
requirements:
|
|
224
224
|
- - "~>"
|
|
225
225
|
- !ruby/object:Gem::Version
|
|
226
226
|
version: '0.6'
|
|
227
|
-
name: cabin
|
|
228
227
|
type: :development
|
|
229
228
|
prerelease: false
|
|
230
229
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -233,12 +232,12 @@ dependencies:
|
|
|
233
232
|
- !ruby/object:Gem::Version
|
|
234
233
|
version: '0.6'
|
|
235
234
|
- !ruby/object:Gem::Dependency
|
|
235
|
+
name: webrick
|
|
236
236
|
requirement: !ruby/object:Gem::Requirement
|
|
237
237
|
requirements:
|
|
238
238
|
- - ">="
|
|
239
239
|
- !ruby/object:Gem::Version
|
|
240
240
|
version: '0'
|
|
241
|
-
name: webrick
|
|
242
241
|
type: :development
|
|
243
242
|
prerelease: false
|
|
244
243
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -247,12 +246,12 @@ dependencies:
|
|
|
247
246
|
- !ruby/object:Gem::Version
|
|
248
247
|
version: '0'
|
|
249
248
|
- !ruby/object:Gem::Dependency
|
|
249
|
+
name: rufus-scheduler
|
|
250
250
|
requirement: !ruby/object:Gem::Requirement
|
|
251
251
|
requirements:
|
|
252
252
|
- - "~>"
|
|
253
253
|
- !ruby/object:Gem::Version
|
|
254
254
|
version: 3.0.9
|
|
255
|
-
name: rufus-scheduler
|
|
256
255
|
type: :development
|
|
257
256
|
prerelease: false
|
|
258
257
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -300,13 +299,13 @@ files:
|
|
|
300
299
|
- spec/inputs/integration/elasticsearch_esql_spec.rb
|
|
301
300
|
- spec/inputs/integration/elasticsearch_spec.rb
|
|
302
301
|
- spec/inputs/paginated_search_spec.rb
|
|
302
|
+
- version
|
|
303
303
|
homepage: https://elastic.co/logstash
|
|
304
304
|
licenses:
|
|
305
305
|
- Apache License (2.0)
|
|
306
306
|
metadata:
|
|
307
307
|
logstash_plugin: 'true'
|
|
308
308
|
logstash_group: input
|
|
309
|
-
post_install_message:
|
|
310
309
|
rdoc_options: []
|
|
311
310
|
require_paths:
|
|
312
311
|
- lib
|
|
@@ -321,8 +320,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
321
320
|
- !ruby/object:Gem::Version
|
|
322
321
|
version: '0'
|
|
323
322
|
requirements: []
|
|
324
|
-
rubygems_version: 3.3
|
|
325
|
-
signing_key:
|
|
323
|
+
rubygems_version: 3.6.3
|
|
326
324
|
specification_version: 4
|
|
327
325
|
summary: Reads query results from an Elasticsearch cluster
|
|
328
326
|
test_files:
|