mirror of
https://github.com/elastic/kibana.git
synced 2025-06-27 18:51:07 -04:00
[osquery] Setup E2E against Serverless ES, Kibana, Fleet server standalone and Elastic agents in Docker (#165415)
## Summary
Let's automate E2E against Serverless
Changelog:
- updated certs to include additional dns names we are using for testing
locally, `host.docker.internal`, `es01`
- updated certs generation README to include changes related to
`openssl@3`
- added new certs for Fleet server
- added fleet-server service token
- added support for `ca_trusted_fingerprint` in fleet preconfig

---------
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Tomasz Ciecierski <ciecierskitomek@gmail.com>
Co-authored-by: Tomasz Ciecierski <tomasz.ciecierski@elastic.co>
Co-authored-by: Kevin Logan <kevin.logan@elastic.co>
This commit is contained in:
parent
6cd8e257d9
commit
5dedc992a1
57 changed files with 764 additions and 492 deletions
|
@ -25,17 +25,16 @@ steps:
|
||||||
artifact_paths:
|
artifact_paths:
|
||||||
- "target/kibana-osquery/**/*"
|
- "target/kibana-osquery/**/*"
|
||||||
|
|
||||||
# Error: self-signed certificate in certificate chain
|
- command: .buildkite/scripts/steps/functional/security_serverless_osquery.sh
|
||||||
# - command: .buildkite/scripts/steps/functional/security_serverless_osquery.sh
|
label: 'Serverless Osquery Cypress Tests'
|
||||||
# label: 'Serverless Osquery Cypress Tests'
|
agents:
|
||||||
# agents:
|
queue: n2-4-spot
|
||||||
# queue: n2-4-spot
|
depends_on: build
|
||||||
# depends_on: build
|
timeout_in_minutes: 50
|
||||||
# timeout_in_minutes: 50
|
parallelism: 6
|
||||||
# parallelism: 6
|
retry:
|
||||||
# retry:
|
automatic:
|
||||||
# automatic:
|
- exit_status: '*'
|
||||||
# - exit_status: '*'
|
limit: 1
|
||||||
# limit: 1
|
artifact_paths:
|
||||||
# artifact_paths:
|
- "target/kibana-osquery/**/*"
|
||||||
# - "target/kibana-osquery/**/*"
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -37,13 +37,16 @@ __IMPORTANT:__ CA keystore (ca.p12) is not checked in intentionally, talk to @el
|
||||||
bin/elasticsearch-certutil ca --out ca.p12 -days 18250 --pass castorepass
|
bin/elasticsearch-certutil ca --out ca.p12 -days 18250 --pass castorepass
|
||||||
|
|
||||||
# Generate the PKCS #12 keystore for Elasticsearch and sign it with the CA
|
# Generate the PKCS #12 keystore for Elasticsearch and sign it with the CA
|
||||||
bin/elasticsearch-certutil cert --out elasticsearch.p12 -days 18250 --ca ca.p12 --ca-pass castorepass --name elasticsearch --dns localhost --pass storepass
|
bin/elasticsearch-certutil cert --out elasticsearch.p12 -days 18250 --ca ca.p12 --ca-pass castorepass --name elasticsearch --dns localhost,host.docker.internal,es01,es02,es03 --pass storepass
|
||||||
|
|
||||||
# Generate the PKCS #12 keystore for Kibana and sign it with the CA
|
# Generate the PKCS #12 keystore for Kibana and sign it with the CA
|
||||||
bin/elasticsearch-certutil cert --out kibana.p12 -days 18250 --ca ca.p12 --ca-pass castorepass --name kibana --dns localhost --pass storepass
|
bin/elasticsearch-certutil cert --out kibana.p12 -days 18250 --ca ca.p12 --ca-pass castorepass --name kibana --dns localhost,host.docker.internal,es01,es02,es03 --pass storepass
|
||||||
|
|
||||||
|
# Generate the PKCS #12 keystore for Fleet Server and sign it with the CA
|
||||||
|
bin/elasticsearch-certutil cert --out fleet_server.p12 -days 18250 --ca ca.p12 --ca-pass castorepass --name fleet_server --dns localhost,host.docker.internal,es01,es02,es03 --pass storepass
|
||||||
|
|
||||||
# Copy the PKCS #12 keystore for Elasticsearch with an empty password
|
# Copy the PKCS #12 keystore for Elasticsearch with an empty password
|
||||||
openssl pkcs12 -in elasticsearch.p12 -nodes -passin pass:"storepass" -passout pass:"" | openssl pkcs12 -export -out elasticsearch_emptypassword.p12 -passout pass:""
|
openssl pkcs12 -in elasticsearch.p12 -nodes -passin pass:"storepass" -passout pass:"" | openssl pkcs12 -export -legacy -out elasticsearch_emptypassword.p12 -passout pass:""
|
||||||
|
|
||||||
# Manually create "elasticsearch_nopassword.p12" -- this can be done on macOS by importing the P12 key store into the Keychain and exporting it again
|
# Manually create "elasticsearch_nopassword.p12" -- this can be done on macOS by importing the P12 key store into the Keychain and exporting it again
|
||||||
|
|
||||||
|
@ -51,14 +54,20 @@ openssl pkcs12 -in elasticsearch.p12 -nodes -passin pass:"storepass" -passout pa
|
||||||
openssl pkcs12 -in elasticsearch.p12 -out ca.crt -cacerts -passin pass:"storepass" -passout pass:
|
openssl pkcs12 -in elasticsearch.p12 -out ca.crt -cacerts -passin pass:"storepass" -passout pass:
|
||||||
|
|
||||||
# Extract the PEM-formatted PKCS #1 private key for Elasticsearch
|
# Extract the PEM-formatted PKCS #1 private key for Elasticsearch
|
||||||
openssl pkcs12 -in elasticsearch.p12 -nocerts -passin pass:"storepass" -passout pass:"keypass" | openssl rsa -passin pass:keypass -out elasticsearch.key
|
openssl pkcs12 -in elasticsearch.p12 -nocerts -passin pass:"storepass" -passout pass:"keypass" | openssl rsa -passin pass:keypass -out elasticsearch.key -traditional
|
||||||
|
|
||||||
# Extract the PEM-formatted X.509 certificate for Elasticsearch
|
# Extract the PEM-formatted X.509 certificate for Elasticsearch
|
||||||
openssl pkcs12 -in elasticsearch.p12 -out elasticsearch.crt -clcerts -passin pass:"storepass" -passout pass:
|
openssl pkcs12 -in elasticsearch.p12 -out elasticsearch.crt -clcerts -passin pass:"storepass" -passout pass:
|
||||||
|
|
||||||
# Extract the PEM-formatted PKCS #1 private key for Kibana
|
# Extract the PEM-formatted PKCS #1 private key for Kibana
|
||||||
openssl pkcs12 -in kibana.p12 -nocerts -passin pass:"storepass" -passout pass:"keypass" | openssl rsa -passin pass:keypass -out kibana.key
|
openssl pkcs12 -in kibana.p12 -nocerts -passin pass:"storepass" -passout pass:"keypass" | openssl rsa -passin pass:keypass -out kibana.key -traditional
|
||||||
|
|
||||||
# Extract the PEM-formatted X.509 certificate for Kibana
|
# Extract the PEM-formatted X.509 certificate for Kibana
|
||||||
openssl pkcs12 -in kibana.p12 -out kibana.crt -clcerts -passin pass:"storepass" -passout pass:
|
openssl pkcs12 -in kibana.p12 -out kibana.crt -clcerts -passin pass:"storepass" -passout pass:
|
||||||
|
|
||||||
|
# Extract the PEM-formatted PKCS #1 private key for Fleet Server
|
||||||
|
openssl pkcs12 -in fleet_server.p12 -nocerts -passin pass:"storepass" -passout pass:"keypass" | openssl rsa -passin pass:keypass -out fleet_server.key -traditional
|
||||||
|
|
||||||
|
# Extract the PEM-formatted X.509 certificate for Fleet Server
|
||||||
|
openssl pkcs12 -in fleet_server.p12 -out fleet_server.crt -clcerts -passin pass:"storepass" -passout pass:
|
||||||
```
|
```
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Bag Attributes
|
Bag Attributes
|
||||||
friendlyName: elasticsearch
|
friendlyName: elasticsearch
|
||||||
localKeyID: 54 69 6D 65 20 31 36 33 34 31 32 30 31 35 32 31 39 33
|
localKeyID: 54 69 6D 65 20 31 36 39 35 34 38 32 34 30 38 35 33 39
|
||||||
Key Attributes: <No Attributes>
|
Key Attributes: <No Attributes>
|
||||||
Bag Attributes
|
Bag Attributes
|
||||||
friendlyName: ca
|
friendlyName: ca
|
||||||
|
|
|
@ -1,29 +1,30 @@
|
||||||
Bag Attributes
|
Bag Attributes
|
||||||
friendlyName: elasticsearch
|
friendlyName: elasticsearch
|
||||||
localKeyID: 54 69 6D 65 20 31 36 33 34 31 32 30 31 35 32 31 39 33
|
localKeyID: 54 69 6D 65 20 31 36 39 35 34 38 32 34 30 38 35 33 39
|
||||||
Key Attributes: <No Attributes>
|
Key Attributes: <No Attributes>
|
||||||
Bag Attributes
|
Bag Attributes
|
||||||
friendlyName: elasticsearch
|
friendlyName: elasticsearch
|
||||||
localKeyID: 54 69 6D 65 20 31 36 33 34 31 32 30 31 35 32 31 39 33
|
localKeyID: 54 69 6D 65 20 31 36 39 35 34 38 32 34 30 38 35 33 39
|
||||||
subject=CN = elasticsearch
|
subject=CN = elasticsearch
|
||||||
issuer=CN = Elastic Certificate Tool Autogenerated CA
|
issuer=CN = Elastic Certificate Tool Autogenerated CA
|
||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIDPzCCAiegAwIBAgIUCTO1pAvYtfaJndsQwa9cS/AtoSowDQYJKoZIhvcNAQEL
|
MIIDajCCAlKgAwIBAgIVAItVW5PoG88CA9nHe8AQ5KlpBR3NMA0GCSqGSIb3DQEB
|
||||||
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
|
||||||
cmF0ZWQgQ0EwIBcNMjExMDEzMTAxNTUyWhgPMjA3MTEwMDExMDE1NTJaMBgxFjAU
|
ZXJhdGVkIENBMCAXDTIzMDkyMzE1MjAwOFoYDzIwNzMwOTEwMTUyMDA4WjAYMRYw
|
||||||
BgNVBAMTDWVsYXN0aWNzZWFyY2gwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
FAYDVQQDEw1lbGFzdGljc2VhcmNoMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||||
AoIBAQCJK4KLS0kSIM+eqdMq4nO1p7nQ7ADUXIYjeRKaCycSJ7sj//1FRdj2NhLb
|
CgKCAQEA0//9sbn3mgSZTAI2nwHlTWsD9quiXIAnsT2Z1EuZ4qbds/oXKAgD5o1D
|
||||||
gdSX2VGIUZyOw4ptw6bGo0A7KyFE4yJZdG9m+VC1PFck3WaIdQHFdxgMia9deIHx
|
pBiRMiqFjvaLSFQx/FpB5ZGYRzgh7gRUHf916ftSugcBtVBDt8BYLMhzwVjpLLC7
|
||||||
sU1ETnC4PstdkrsZZpf5+twS6O9TaIQolG6nEShst075v2b3y0NDHcxKW+BtSw27
|
mOYTx8kUd0AvoRsiW23JEmFt8IPtoDj9P9qDhYDoaD5GuAS4EnAea0smtm5G1QMy
|
||||||
HEHlchhP/Uj4haVMABQahfP8gv5vlHqStuOOWeoSgwF5FngCekx+ZeoIf5wVWfE1
|
FtAsCX1qT1051rYUxlCLan7HeMWmIqPvCR1GzE9vP96Zb2gpAHzg0RHjLDOIDBmZ
|
||||||
SzDlU7L/JdYOrAp+kN+2g+b4qcr+WvFNCEwbhjJjd9/VIJ5z9kIjJhG9z1NilPhR
|
DqGS4Egkrc/lvM9LLznqdBj/dzWQI0QQRv6gHzY2oHJorQYQ2xefgFjkdrhy5Sov
|
||||||
RVPG4njS6PxTufejbWN/360HfZbZAgMBAAGjYzBhMB0GA1UdDgQWBBR0kfoZtlNi
|
LqM+jvd3mUYrkVMgAUNVPYEHXg1clQIDAQABo4GMMIGJMB0GA1UdDgQWBBSomZga
|
||||||
ZKxVBPhhpipoXdTQMjAfBgNVHSMEGDAWgBQwTCrAjlvQxik3HBocn1PDUunenjAU
|
0XXQlnT1T0I/BQ9AmAFdbTAfBgNVHSMEGDAWgBQwTCrAjlvQxik3HBocn1PDUune
|
||||||
BgNVHREEDTALgglsb2NhbGhvc3QwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOC
|
njA8BgNVHREENTAzghRob3N0LmRvY2tlci5pbnRlcm5hbIIJbG9jYWxob3N0ggRl
|
||||||
AQEAkNcEM6mBzCdECFtuor3lfxrXzmrIo3wUspbv6Rrm4+n6TwJIYp6ydf4OcruR
|
czAzggRlczAyggRlczAxMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBABjM
|
||||||
Uv5feevaYXwDRHBkIEGvhU5po6sGp6k7ppXS5bgrEtAhJSK8SOsLINnbJLnptmZQ
|
xPHoqX5PyjPpySKSI2rrwIYlP78NKnwT8kd+Sk2kx0nrIj+GJBluerFTcHMSEQm2
|
||||||
Jharcks5STEqfJFB2QBZvFSLLpvO9g/N8sMro6ZvaUXhfW9DNpd6GIUXQiMhKLex
|
Z7lAGsAMXxmy3J0PyiFoUlZ5dAaUvjPygbG2YBGRbnxrStXyFQe5R3Bq3dQ62hXl
|
||||||
t80Sb4zuahTRqUSi2j5Hoq8ouc7U9T/RmA3zXNmzq7YvL/gv2it67qdyKvpzoX7t
|
/eo/UJFAKBzXUcbkrxAR5c/C0kBXAE/z5Qef9CNKGCtFeIeTigYSJd99+ek7hvW0
|
||||||
HJaT1HU0o5Xi/Ol33C/wvfRe05UrHEUil148n/XWz3EJky7El2LYbg36/++mVTHX
|
2QaI1Cd7qRe3Cy1C8DQMSFN1aB6gaT4FPDoi5pRbr/kX2Ch+JwD+1usKVgqe4sgI
|
||||||
xUXS+FdZ1rBlGnGwOHTPHj5FMQ==
|
kv2lak2L3rjMtZU9Uh1Kq228TSsagkNN2HadCxeOFPC/ZRs4cxo8cYrhotm8CJt9
|
||||||
|
QPfOO517N4ec6b0cIhk=
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
-----BEGIN RSA PRIVATE KEY-----
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
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
|
||||||
-----END RSA PRIVATE KEY-----
|
-----END RSA PRIVATE KEY-----
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
30
packages/kbn-dev-utils/certs/fleet_server.crt
Normal file
30
packages/kbn-dev-utils/certs/fleet_server.crt
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
Bag Attributes
|
||||||
|
friendlyName: fleet_server
|
||||||
|
localKeyID: 54 69 6D 65 20 31 36 39 35 34 38 32 34 31 37 37 31 38
|
||||||
|
Key Attributes: <No Attributes>
|
||||||
|
Bag Attributes
|
||||||
|
friendlyName: fleet_server
|
||||||
|
localKeyID: 54 69 6D 65 20 31 36 39 35 34 38 32 34 31 37 37 31 38
|
||||||
|
subject=CN = fleet_server
|
||||||
|
issuer=CN = Elastic Certificate Tool Autogenerated CA
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDaDCCAlCgAwIBAgIUNsPACNdd6yg9RtG2RjaXhLgcSBcwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
||||||
|
cmF0ZWQgQ0EwIBcNMjMwOTIzMTUyMDE3WhgPMjA3MzA5MTAxNTIwMTdaMBcxFTAT
|
||||||
|
BgNVBAMMDGZsZWV0X3NlcnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
||||||
|
ggEBALvyofG61gLV5MvhpsVwIecicRbtsbTeirGOrXG6astWUEiR45os/2nb3TkR
|
||||||
|
3844O4xi2zlaHSVPnK3D5QZCehZWoKhnc7sWrPQbiypEFwQ76IqG4f82jfyl7l6J
|
||||||
|
SnEpAx6W23zAGGCr5tHNWn0kAUq2ZlLKxuWvR9vp70jzOOl2SZ4q1uj4R+Iu639o
|
||||||
|
W0kp8oxKrH+N/XOgEzttxSpEfEgs9XCAzUeeGyQf2luv0f2PP6Gw/57VsAoB4Xa+
|
||||||
|
Y76MuFD7TjSknS3ipQ9SYJooqwgZA1W9Ba2Myh5r4ypSFfJ59N9Jnu7jyK8DX9S4
|
||||||
|
Mjw5/pbReGr8CWQlTck6e7rFFEUCAwEAAaOBjDCBiTAdBgNVHQ4EFgQU1AY1UdL6
|
||||||
|
rxUs/nG1sJR57FwJxSAwHwYDVR0jBBgwFoAUMEwqwI5b0MYpNxwaHJ9Tw1Lp3p4w
|
||||||
|
PAYDVR0RBDUwM4IUaG9zdC5kb2NrZXIuaW50ZXJuYWyCCWxvY2FsaG9zdIIEZXMw
|
||||||
|
M4IEZXMwMoIEZXMwMTAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQAoOpD/
|
||||||
|
jk/4uHMvm+e4ICdRpxCMoTmzL1sCXjEyTEIUrtnGajFBQ1Afsh3hRBjmFjpzvagB
|
||||||
|
78iSmVYPLKvk5vGWhz+f3f5HOfWbKhbfE2tDkXCYb3g9i65hj54RZyBN1jnxW6bs
|
||||||
|
cMD6h6frwX/KmBKtcuVkgIdUSpAX7MyDvlflvdKJvdOWiTaO30RbmcSJCgchOmcK
|
||||||
|
9tR7UrzEa4kB0e+MZ62Kmwp+WGzNilwvumrLSUpchaoZ/MJwW4HTvHELeoUERPvs
|
||||||
|
x6c9UkB2K5rGs28VWjB7QX/+VD6ecUYFXcXX8kvKUU67Mq8HHfhAsSJUUz+kpvan
|
||||||
|
pNYlrbZ1lKP/lrUL
|
||||||
|
-----END CERTIFICATE-----
|
27
packages/kbn-dev-utils/certs/fleet_server.key
Normal file
27
packages/kbn-dev-utils/certs/fleet_server.key
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpAIBAAKCAQEAu/Kh8brWAtXky+GmxXAh5yJxFu2xtN6KsY6tcbpqy1ZQSJHj
|
||||||
|
miz/advdORHfzjg7jGLbOVodJU+crcPlBkJ6FlagqGdzuxas9BuLKkQXBDvoiobh
|
||||||
|
/zaN/KXuXolKcSkDHpbbfMAYYKvm0c1afSQBSrZmUsrG5a9H2+nvSPM46XZJnirW
|
||||||
|
6PhH4i7rf2hbSSnyjEqsf439c6ATO23FKkR8SCz1cIDNR54bJB/aW6/R/Y8/obD/
|
||||||
|
ntWwCgHhdr5jvoy4UPtONKSdLeKlD1JgmiirCBkDVb0FrYzKHmvjKlIV8nn030me
|
||||||
|
7uPIrwNf1LgyPDn+ltF4avwJZCVNyTp7usUURQIDAQABAoIBACCUDj44hKA5M0+j
|
||||||
|
7aSLq1TFQ5UV3pfbe28LrETqa1iTvZbWsv0mj59p3Q7nakP0u126RQXL+QFeq2nz
|
||||||
|
at+K5l645WBLjmP/qjsmCxlodBTnzYc1mjcC3dnNaWQ5qA21bjT/MUyOf6tCIOB9
|
||||||
|
GBJZC2BH/bScMZ3epDYadr/OaS8OZX0iEKm/pApfjPsNyuIpgnrkEOiUqwCwDr7l
|
||||||
|
Z0z0wAIPVewN7z1mBoLO3ZT72WR8iKvdXAt982C9z8K4w0YKmVnexD6FHY37uXsE
|
||||||
|
RHggcRM0psjJ2vpu7Ha1q/pmyAdb8RQ+1tAGApn+DgLRjEdIMX7CvHQFZ2m/+7lC
|
||||||
|
Y1SUcAECgYEAxXBf0VuR1z9xIdE7i2WteNJtE4zJgO8N0tIMTiRCTGE4kiclCRzX
|
||||||
|
AN2xiwkvGM2tLo5XC5FvD6AHBdLng1n1xOIgsAgNOAIcjiexm0P/D9EHeOnua7wc
|
||||||
|
DRQGQgjPNYv9TxPs4K25T9v1uV4hzQFfKq+JyOlzEP5S4vkyHw08AqECgYEA87GW
|
||||||
|
yidal1nTndAvkBHmYGMu0aHgK0U5NIlgmqqDsqIaES6XATUdjLw2xjiwtwQfEOLm
|
||||||
|
ZRHc6rgyA0o6QcWhD3TM9X3eJ3Hf4cAETES+rBRTTHY/u71LzjiAQCNAemceWbYX
|
||||||
|
RAyYYngtMxAyiis/8sFTVNoxGIHHehvLJKIu0yUCgYEArqeHu3Wbf6O5ekbSu69I
|
||||||
|
U1ch8mdaYVoXCmWRSRa+Jz7hgjhqhLMkZrm2Mt3+8ZwQFN0Jl0whyNqxG6/D6OgN
|
||||||
|
hwraC54zw1Xq2L24WTc/TEiGqamWpWsUDWWnW4bbdezOOcPQibhj84cKyd3BXM5X
|
||||||
|
1zTNWBNbHK89t1blxZ45dcECgYEAuRZ44LFjLPEcuRAWD+aIg0zRkobQLA03lZ+B
|
||||||
|
r/cyb8qO4d3w8wnUl7+cGpGUJm0K61hqhPk8QUoFMlp+RNZFreeYhBxFTtA+qsec
|
||||||
|
fBD6gNgvLDPj1EPB/68KOayMnGsVsi2LHjQyyRddvRrgR/DxcP9Eu329LE/loeja
|
||||||
|
Mci8p8ECgYBrIucmzOakwamH5cEI++3UaNHp9AUFsoN8T1Bo7MgdrqGIZ7yUzfzN
|
||||||
|
ymBeJSN4JJsI3S4tt2fQ2pexfvbk5wAl9sZiR38fRIYMs5NDqRVyISLxd5cbmEqX
|
||||||
|
04PnNCs3IHpdMA3jfpk0q6wmEtdQNLQWRr3v7e0RvHCG254YY6UN5Q==
|
||||||
|
-----END RSA PRIVATE KEY-----
|
BIN
packages/kbn-dev-utils/certs/fleet_server.p12
Normal file
BIN
packages/kbn-dev-utils/certs/fleet_server.p12
Normal file
Binary file not shown.
|
@ -1,29 +1,30 @@
|
||||||
Bag Attributes
|
Bag Attributes
|
||||||
friendlyName: kibana
|
friendlyName: kibana
|
||||||
localKeyID: 54 69 6D 65 20 31 36 33 34 31 32 30 31 35 38 38 30 33
|
localKeyID: 54 69 6D 65 20 31 36 39 35 34 38 32 34 31 34 33 39 35
|
||||||
Key Attributes: <No Attributes>
|
Key Attributes: <No Attributes>
|
||||||
Bag Attributes
|
Bag Attributes
|
||||||
friendlyName: kibana
|
friendlyName: kibana
|
||||||
localKeyID: 54 69 6D 65 20 31 36 33 34 31 32 30 31 35 38 38 30 33
|
localKeyID: 54 69 6D 65 20 31 36 39 35 34 38 32 34 31 34 33 39 35
|
||||||
subject=CN = kibana
|
subject=CN = kibana
|
||||||
issuer=CN = Elastic Certificate Tool Autogenerated CA
|
issuer=CN = Elastic Certificate Tool Autogenerated CA
|
||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIDOTCCAiGgAwIBAgIVAN0GVNLw3IaUBuG7t6CeW8w2wyymMA0GCSqGSIb3DQEB
|
MIIDYjCCAkqgAwIBAgIUZ2p8K7GMXGk6xwCS9S91BUl1JnAwDQYJKoZIhvcNAQEL
|
||||||
CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
|
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
||||||
ZXJhdGVkIENBMCAXDTIxMTAxMzEwMTU1OFoYDzIwNzExMDAxMTAxNTU4WjARMQ8w
|
cmF0ZWQgQ0EwIBcNMjMwOTIzMTUyMDE0WhgPMjA3MzA5MTAxNTIwMTRaMBExDzAN
|
||||||
DQYDVQQDEwZraWJhbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3
|
BgNVBAMTBmtpYmFuYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMOU
|
||||||
nvfL3/26D8EkLso+t9S0m+tSJipLsBWs0dCpc8KRJ/+ijDRnAQ5lOmOAcxt43SNY
|
r52dbZ5dY0BoP2p7CEnOpG+qHTNrOAqZO/OJfniPMtpGmwAMl3WZDca6u2XkV2KE
|
||||||
KFr0EntQEZyYaRwMIM8aPR0WYW/VV5o4fq2o/JnmHqzZJRJCwZq+5WiCiDPt012N
|
qQyevQ2ADk6G3o8S2RU8mO/+UweuCDF7LHuSdxEGTpucidZErmVhEGUOFosL5UeB
|
||||||
mRGYCMUxjlEwejue6diLAeQhZ/sfN4jUp217bMEHrhHrNBWTwwJ+Uk5TBQMhviCW
|
AtIDWxvWwgK+W9Yzt5IEN2HzNCZ6h0dOSk2r9EjVMG5yF4Q6kuqOYxBT7jxoaOtO
|
||||||
LKbsKrfluA6DGHWrXN4pH7Xmaf/Zyc9AYL/nxwv3VQHZzIAK/U/WNCgFJJ3qoFYY
|
OCrgBRummtUga4T13WZ/ZIyyHpXj2+JD4YEmrDyoTa7NLaphv0hnVhHXYoYBI/c6
|
||||||
6TUwDDNa30mSj165OOds9N+VmUlDC3IFiHV3osBWscSU4HJd6QJ8huHrFLLV4y4i
|
2SwwAoBlmtDmlinwSACQ3o/8eLWk0tqkIP14rc3oFh3m7D2c3c2m2HXuyoSDMfGW
|
||||||
u62el47Qr+/8Ut3SzeIXAgMBAAGjYzBhMB0GA1UdDgQWBBQli5f2bYL9jKUA5Uxp
|
beG2IE1Q3idcGmeG3qsCAwEAAaOBjDCBiTAdBgNVHQ4EFgQUMOUM7w5jmIozDvnq
|
||||||
yRRHeCoPJzAfBgNVHSMEGDAWgBQwTCrAjlvQxik3HBocn1PDUunenjAUBgNVHREE
|
RpM779m5GigwHwYDVR0jBBgwFoAUMEwqwI5b0MYpNxwaHJ9Tw1Lp3p4wPAYDVR0R
|
||||||
DTALgglsb2NhbGhvc3QwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEATFNj
|
BDUwM4IUaG9zdC5kb2NrZXIuaW50ZXJuYWyCCWxvY2FsaG9zdIIEZXMwM4IEZXMw
|
||||||
WkTBPfgflGYZD4OsYvfT/rVjFKbJP/u1a0rkzNamA2QKNzI9JTOzONPTyRhe9yVS
|
MoIEZXMwMTAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQCxqvQYXSKqgpdl
|
||||||
zeO8X2rtN63l38dtgMjFQ15Xxnp7GFT7GkXfa1JR+tGSGTgVld8nLUzig+mNmBoR
|
SP4gXgwipAnYsoW9qkgWQODTvSBEzUdOWme0d3j7i2l6Ur/nVSv5YjkqAv1hf/yJ
|
||||||
nE4cNc0JJ1PsXPzfPgJ6WMp2WOoNUrQf2cm42i36Jk+7KGcosfyFMPQILZE34Geo
|
Hrk9h+j29ZO/aQ/KDh5i/gTEUnPw3Bxbw47dfn23tjMWO7NCU1fr5HNztRsa/gQr
|
||||||
DAgCVpNWPgST4HYBUCHMC7S14LHLVdUXPsfGZPEqU5Zf9Hvy61rQC/RdNjnMI6JD
|
e9s07g25u/gTfTi9Fyu0lcRe3bXOLS/mFVcuC5oxuS65R9OlbIsiORkZ2EfwuNUf
|
||||||
s57l9oHASNeEg55NQm01aOmwq/z1DXs3UP2nRmp6XCCfE61ghofO5dtV1j3cZ3f5
|
wAAYOGPIjM2VlQCvBitefsd/SzRKHdxSPy6KSjkO6MGEGo87fr7B7Nx1qp1DVrK7
|
||||||
dzkzSBV7H6+/MD3Y8Q==
|
q9XeP1Cuygjg9WTcnsvWvNw8CssyuFM6X/3tGjpPasXwLvNUoG2AairK2AYTWhvS
|
||||||
|
foE31cFg
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
-----BEGIN RSA PRIVATE KEY-----
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
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
|
||||||
-----END RSA PRIVATE KEY-----
|
-----END RSA PRIVATE KEY-----
|
||||||
|
|
Binary file not shown.
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
export {
|
export {
|
||||||
CA_CERT_PATH,
|
CA_CERT_PATH,
|
||||||
|
CA_TRUSTED_FINGERPRINT,
|
||||||
ES_KEY_PATH,
|
ES_KEY_PATH,
|
||||||
ES_CERT_PATH,
|
ES_CERT_PATH,
|
||||||
ES_P12_PATH,
|
ES_P12_PATH,
|
||||||
|
@ -18,6 +19,10 @@ export {
|
||||||
KBN_CERT_PATH,
|
KBN_CERT_PATH,
|
||||||
KBN_P12_PATH,
|
KBN_P12_PATH,
|
||||||
KBN_P12_PASSWORD,
|
KBN_P12_PASSWORD,
|
||||||
|
FLEET_SERVER_KEY_PATH,
|
||||||
|
FLEET_SERVER_CERT_PATH,
|
||||||
|
FLEET_SERVER_P12_PATH,
|
||||||
|
FLEET_SERVER_P12_PASSWORD,
|
||||||
} from './src/certs';
|
} from './src/certs';
|
||||||
export * from './src/dev_service_account';
|
export * from './src/dev_service_account';
|
||||||
export * from './src/axios';
|
export * from './src/axios';
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
import { resolve } from 'path';
|
import { resolve } from 'path';
|
||||||
|
|
||||||
export const CA_CERT_PATH = process.env.TEST_CA_CERT_PATH || resolve(__dirname, '../certs/ca.crt');
|
export const CA_CERT_PATH = process.env.TEST_CA_CERT_PATH || resolve(__dirname, '../certs/ca.crt');
|
||||||
|
export const CA_TRUSTED_FINGERPRINT =
|
||||||
|
'F71F73085975FD977339A1909EBFE2DF40DB255E0D5BB56FC37246BF383FFC84';
|
||||||
export const ES_KEY_PATH = resolve(__dirname, '../certs/elasticsearch.key');
|
export const ES_KEY_PATH = resolve(__dirname, '../certs/elasticsearch.key');
|
||||||
export const ES_CERT_PATH = resolve(__dirname, '../certs/elasticsearch.crt');
|
export const ES_CERT_PATH = resolve(__dirname, '../certs/elasticsearch.crt');
|
||||||
export const ES_P12_PATH = resolve(__dirname, '../certs/elasticsearch.p12');
|
export const ES_P12_PATH = resolve(__dirname, '../certs/elasticsearch.p12');
|
||||||
|
@ -22,3 +24,7 @@ export const KBN_KEY_PATH = resolve(__dirname, '../certs/kibana.key');
|
||||||
export const KBN_CERT_PATH = resolve(__dirname, '../certs/kibana.crt');
|
export const KBN_CERT_PATH = resolve(__dirname, '../certs/kibana.crt');
|
||||||
export const KBN_P12_PATH = resolve(__dirname, '../certs/kibana.p12');
|
export const KBN_P12_PATH = resolve(__dirname, '../certs/kibana.p12');
|
||||||
export const KBN_P12_PASSWORD = 'storepass';
|
export const KBN_P12_PASSWORD = 'storepass';
|
||||||
|
export const FLEET_SERVER_KEY_PATH = resolve(__dirname, '../certs/fleet_server.key');
|
||||||
|
export const FLEET_SERVER_CERT_PATH = resolve(__dirname, '../certs/fleet_server.crt');
|
||||||
|
export const FLEET_SERVER_P12_PATH = resolve(__dirname, '../certs/fleet_server.p12');
|
||||||
|
export const FLEET_SERVER_P12_PASSWORD = 'storepass';
|
||||||
|
|
|
@ -17,3 +17,9 @@ export const kibanaDevServiceAccount = {
|
||||||
env.TEST_KIBANA_SERVICE_ACCOUNT_TOKEN ||
|
env.TEST_KIBANA_SERVICE_ACCOUNT_TOKEN ||
|
||||||
'AAEAAWVsYXN0aWMva2liYW5hL2tpYmFuYS1kZXY6VVVVVVVVTEstKiBaNA',
|
'AAEAAWVsYXN0aWMva2liYW5hL2tpYmFuYS1kZXY6VVVVVVVVTEstKiBaNA',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const fleetServerDevServiceAccount = {
|
||||||
|
token:
|
||||||
|
env.TEST_FLEET_SERVER_SERVICE_ACCOUNT_TOKEN ||
|
||||||
|
'AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL2ZsZWV0LXNlcnZlci1kZXY6VVo1TWd6MnFTX3FVTWliWGNXNzlwQQ',
|
||||||
|
};
|
||||||
|
|
|
@ -12,6 +12,9 @@ export {
|
||||||
SYSTEM_INDICES_SUPERUSER,
|
SYSTEM_INDICES_SUPERUSER,
|
||||||
ELASTIC_SERVERLESS_SUPERUSER,
|
ELASTIC_SERVERLESS_SUPERUSER,
|
||||||
ELASTIC_SERVERLESS_SUPERUSER_PASSWORD,
|
ELASTIC_SERVERLESS_SUPERUSER_PASSWORD,
|
||||||
|
SERVERLESS_NODES,
|
||||||
getDockerFileMountPath,
|
getDockerFileMountPath,
|
||||||
|
verifyDockerInstalled,
|
||||||
|
maybeCreateDockerNetwork,
|
||||||
} from './src/utils';
|
} from './src/utils';
|
||||||
export type { ArtifactLicense } from './src/artifact';
|
export type { ArtifactLicense } from './src/artifact';
|
||||||
|
|
|
@ -26,6 +26,7 @@ This section for Service Accounts was originally from the [ES Serverless reposit
|
||||||
The "service_tokens" file contains this line:
|
The "service_tokens" file contains this line:
|
||||||
```
|
```
|
||||||
elastic/kibana/kibana-dev:$2a$10$mY2RuGROhk56vLNh.Mgwue98BnkdQPlTR.yGh38ao5jhPJobvuBCq
|
elastic/kibana/kibana-dev:$2a$10$mY2RuGROhk56vLNh.Mgwue98BnkdQPlTR.yGh38ao5jhPJobvuBCq
|
||||||
|
elastic/fleet-server/fleet-server-dev:$2a$10$tgMX7U09G/EVTP8F/O4zHewhA3DXdv7iM5F2vny9TC6zw77RrutyG
|
||||||
```
|
```
|
||||||
|
|
||||||
That line defines a single service token
|
That line defines a single service token
|
||||||
|
|
|
@ -7,3 +7,8 @@ operator:
|
||||||
auth_type: "token"
|
auth_type: "token"
|
||||||
token_source: "file"
|
token_source: "file"
|
||||||
token_names: [ "kibana-dev" ]
|
token_names: [ "kibana-dev" ]
|
||||||
|
- usernames: [ "elastic/fleet-server" ]
|
||||||
|
realm_type: "_service_account"
|
||||||
|
auth_type: "token"
|
||||||
|
token_source: "file"
|
||||||
|
token_names: [ "fleet-server-dev" ]
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
elastic/kibana/kibana-dev:$2a$10$mY2RuGROhk56vLNh.Mgwue98BnkdQPlTR.yGh38ao5jhPJobvuBCq
|
elastic/kibana/kibana-dev:$2a$10$mY2RuGROhk56vLNh.Mgwue98BnkdQPlTR.yGh38ao5jhPJobvuBCq
|
||||||
|
elastic/fleet-server/fleet-server-dev:$2a$10$tgMX7U09G/EVTP8F/O4zHewhA3DXdv7iM5F2vny9TC6zw77RrutyG
|
||||||
|
|
|
@ -218,7 +218,7 @@ const DOCKER_SSL_ESARGS: Array<[string, string]> = [
|
||||||
['xpack.security.transport.ssl.keystore.password', ES_P12_PASSWORD],
|
['xpack.security.transport.ssl.keystore.password', ES_P12_PASSWORD],
|
||||||
];
|
];
|
||||||
|
|
||||||
const SERVERLESS_NODES: Array<Omit<ServerlessEsNodeArgs, 'image'>> = [
|
export const SERVERLESS_NODES: Array<Omit<ServerlessEsNodeArgs, 'image'>> = [
|
||||||
{
|
{
|
||||||
name: 'es01',
|
name: 'es01',
|
||||||
params: [
|
params: [
|
||||||
|
|
|
@ -23,6 +23,7 @@ export interface FleetConfigType {
|
||||||
elasticsearch: {
|
elasticsearch: {
|
||||||
hosts?: string[];
|
hosts?: string[];
|
||||||
ca_sha256?: string;
|
ca_sha256?: string;
|
||||||
|
ca_trusted_fingerprint?: string;
|
||||||
};
|
};
|
||||||
fleet_server?: {
|
fleet_server?: {
|
||||||
hosts?: string[];
|
hosts?: string[];
|
||||||
|
|
|
@ -18,6 +18,7 @@ export const createConfigurationMock = (): FleetConfigType => {
|
||||||
elasticsearch: {
|
elasticsearch: {
|
||||||
hosts: [''],
|
hosts: [''],
|
||||||
ca_sha256: '',
|
ca_sha256: '',
|
||||||
|
ca_trusted_fingerprint: '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -120,6 +120,7 @@ export const config: PluginConfigDescriptor = {
|
||||||
elasticsearch: schema.object({
|
elasticsearch: schema.object({
|
||||||
hosts: schema.maybe(schema.arrayOf(schema.uri({ scheme: ['http', 'https'] }))),
|
hosts: schema.maybe(schema.arrayOf(schema.uri({ scheme: ['http', 'https'] }))),
|
||||||
ca_sha256: schema.maybe(schema.string()),
|
ca_sha256: schema.maybe(schema.string()),
|
||||||
|
ca_trusted_fingerprint: schema.maybe(schema.string()),
|
||||||
}),
|
}),
|
||||||
fleet_server: schema.maybe(
|
fleet_server: schema.maybe(
|
||||||
schema.object({
|
schema.object({
|
||||||
|
|
|
@ -89,6 +89,7 @@ describe('output preconfiguration', () => {
|
||||||
Array [
|
Array [
|
||||||
Object {
|
Object {
|
||||||
"ca_sha256": undefined,
|
"ca_sha256": undefined,
|
||||||
|
"ca_trusted_fingerprint": undefined,
|
||||||
"hosts": Array [
|
"hosts": Array [
|
||||||
"http://elasticsearc:9201",
|
"http://elasticsearc:9201",
|
||||||
],
|
],
|
||||||
|
|
|
@ -30,6 +30,7 @@ export function getPreconfiguredOutputFromConfig(config?: FleetConfigType) {
|
||||||
id: DEFAULT_OUTPUT_ID,
|
id: DEFAULT_OUTPUT_ID,
|
||||||
hosts: config?.agents.elasticsearch.hosts,
|
hosts: config?.agents.elasticsearch.hosts,
|
||||||
ca_sha256: config?.agents.elasticsearch.ca_sha256,
|
ca_sha256: config?.agents.elasticsearch.ca_sha256,
|
||||||
|
ca_trusted_fingerprint: config?.agents.elasticsearch.ca_trusted_fingerprint,
|
||||||
is_preconfigured: true,
|
is_preconfigured: true,
|
||||||
} as PreconfiguredOutput,
|
} as PreconfiguredOutput,
|
||||||
]
|
]
|
||||||
|
|
|
@ -25,120 +25,128 @@ import {
|
||||||
} from '../../tasks/live_query';
|
} from '../../tasks/live_query';
|
||||||
import { generateRandomStringName, interceptCaseId } from '../../tasks/integrations';
|
import { generateRandomStringName, interceptCaseId } from '../../tasks/integrations';
|
||||||
import { ServerlessRoleName } from '../../support/roles';
|
import { ServerlessRoleName } from '../../support/roles';
|
||||||
describe('Alert Event Details - Cases', { tags: ['@ess', '@serverless'] }, () => {
|
|
||||||
let ruleId: string;
|
|
||||||
let ruleName: string;
|
|
||||||
let packId: string;
|
|
||||||
let packName: string;
|
|
||||||
const packData = packFixture();
|
|
||||||
|
|
||||||
before(() => {
|
describe(
|
||||||
loadPack(packData).then((data) => {
|
'Alert Event Details - Cases',
|
||||||
packId = data.saved_object_id;
|
{ tags: ['@ess', '@serverless', '@brokenInServerless'] },
|
||||||
packName = data.name;
|
() => {
|
||||||
});
|
let ruleId: string;
|
||||||
loadRule(true).then((data) => {
|
let ruleName: string;
|
||||||
ruleId = data.id;
|
let packId: string;
|
||||||
ruleName = data.name;
|
let packName: string;
|
||||||
loadRuleAlerts(data.name);
|
const packData = packFixture();
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
cy.login(ServerlessRoleName.SOC_MANAGER);
|
|
||||||
cy.visit('/app/security/rules');
|
|
||||||
clickRuleName(ruleName);
|
|
||||||
});
|
|
||||||
|
|
||||||
after(() => {
|
|
||||||
cleanupPack(packId);
|
|
||||||
cleanupRule(ruleId);
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Case creation', () => {
|
|
||||||
let caseId: string;
|
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
interceptCaseId((id) => {
|
loadPack(packData).then((data) => {
|
||||||
caseId = id;
|
packId = data.saved_object_id;
|
||||||
|
packName = data.name;
|
||||||
});
|
});
|
||||||
|
loadRule(true).then((data) => {
|
||||||
|
ruleId = data.id;
|
||||||
|
ruleName = data.name;
|
||||||
|
loadRuleAlerts(data.name);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.login(ServerlessRoleName.SOC_MANAGER);
|
||||||
|
cy.visit('/app/security/rules');
|
||||||
|
clickRuleName(ruleName);
|
||||||
});
|
});
|
||||||
|
|
||||||
after(() => {
|
after(() => {
|
||||||
cleanupCase(caseId);
|
cleanupPack(packId);
|
||||||
|
cleanupRule(ruleId);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('runs osquery against alert and creates a new case', () => {
|
describe('Case creation', () => {
|
||||||
const [caseName, caseDescription] = generateRandomStringName(2);
|
let caseId: string;
|
||||||
cy.getBySel('expand-event').first().click({ force: true });
|
|
||||||
cy.getBySel('take-action-dropdown-btn').click();
|
|
||||||
cy.getBySel('osquery-action-item').click();
|
|
||||||
cy.contains(/^\d+ agen(t|ts) selected/);
|
|
||||||
cy.contains('Run a set of queries in a pack').click();
|
|
||||||
cy.get(LIVE_QUERY_EDITOR).should('not.exist');
|
|
||||||
cy.getBySel('select-live-pack').click().type(`${packName}{downArrow}{enter}`);
|
|
||||||
submitQuery();
|
|
||||||
cy.get('[aria-label="Add to Case"]').first().click();
|
|
||||||
cy.getBySel('cases-table-add-case-filter-bar').click();
|
|
||||||
cy.getBySel('create-case-flyout').should('be.visible');
|
|
||||||
cy.getBySel('caseTitle').within(() => {
|
|
||||||
cy.getBySel('input').type(caseName);
|
|
||||||
});
|
|
||||||
cy.getBySel('caseDescription').within(() => {
|
|
||||||
cy.getBySel('euiMarkdownEditorTextArea').type(caseDescription);
|
|
||||||
});
|
|
||||||
cy.getBySel('create-case-submit').click();
|
|
||||||
cy.contains(`An alert was added to "${caseName}"`);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// verify why calling new action doesnt add to response actions list
|
before(() => {
|
||||||
describe.skip('Case', () => {
|
interceptCaseId((id) => {
|
||||||
let caseId: string;
|
caseId = id;
|
||||||
|
|
||||||
before(() => {
|
|
||||||
loadCase('securitySolution').then((data) => {
|
|
||||||
caseId = data.id;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
after(() => {
|
|
||||||
cleanupCase(caseId);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('sees osquery results from last action and add to a case', () => {
|
|
||||||
cy.getBySel('expand-event').first().click();
|
|
||||||
cy.getBySel('securitySolutionDocumentDetailsFlyoutResponseSectionHeader').click();
|
|
||||||
cy.getBySel('securitySolutionDocumentDetailsFlyoutResponseButton').click();
|
|
||||||
cy.getBySel('responseActionsViewWrapper').should('exist');
|
|
||||||
cy.contains('select * from users;');
|
|
||||||
cy.contains("SELECT * FROM os_version where name='Ubuntu';");
|
|
||||||
cy.getBySel('osquery-results-comment').each(($comment) => {
|
|
||||||
cy.wrap($comment).within(() => {
|
|
||||||
// On initial load result table might not render due to displayed error
|
|
||||||
if ($comment.find('div .euiDataGridRow').length <= 0) {
|
|
||||||
// If tabs are present try clicking between status and results to get rid of the error message
|
|
||||||
if ($comment.find('div .euiTabs').length > 0) {
|
|
||||||
cy.getBySel('osquery-status-tab').click();
|
|
||||||
cy.getBySel('osquery-results-tab').click();
|
|
||||||
cy.getBySel('dataGridRowCell', { timeout: 120000 }).should('have.lengthOf.above', 0);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Result tab was rendered successfully
|
|
||||||
cy.getBySel('dataGridRowCell', { timeout: 120000 }).should('have.lengthOf.above', 0);
|
|
||||||
}
|
|
||||||
// }
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
checkActionItemsInResults({
|
|
||||||
lens: true,
|
after(() => {
|
||||||
discover: true,
|
cleanupCase(caseId);
|
||||||
cases: true,
|
|
||||||
timeline: true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
addToCase(caseId);
|
it('runs osquery against alert and creates a new case', () => {
|
||||||
viewRecentCaseAndCheckResults();
|
const [caseName, caseDescription] = generateRandomStringName(2);
|
||||||
|
cy.getBySel('expand-event').first().click({ force: true });
|
||||||
|
cy.getBySel('take-action-dropdown-btn').click();
|
||||||
|
cy.getBySel('osquery-action-item').click();
|
||||||
|
cy.contains(/^\d+ agen(t|ts) selected/);
|
||||||
|
cy.contains('Run a set of queries in a pack').click();
|
||||||
|
cy.get(LIVE_QUERY_EDITOR).should('not.exist');
|
||||||
|
cy.getBySel('select-live-pack').click().type(`${packName}{downArrow}{enter}`);
|
||||||
|
submitQuery();
|
||||||
|
cy.get('[aria-label="Add to Case"]').first().click();
|
||||||
|
cy.getBySel('cases-table-add-case-filter-bar').click();
|
||||||
|
cy.getBySel('create-case-flyout').should('be.visible');
|
||||||
|
cy.getBySel('caseTitle').within(() => {
|
||||||
|
cy.getBySel('input').type(caseName);
|
||||||
|
});
|
||||||
|
cy.getBySel('caseDescription').within(() => {
|
||||||
|
cy.getBySel('euiMarkdownEditorTextArea').type(caseDescription);
|
||||||
|
});
|
||||||
|
cy.getBySel('create-case-submit').click();
|
||||||
|
cy.contains(`An alert was added to "${caseName}"`);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
});
|
// verify why calling new action doesnt add to response actions list
|
||||||
|
describe.skip('Case', () => {
|
||||||
|
let caseId: string;
|
||||||
|
|
||||||
|
before(() => {
|
||||||
|
loadCase('securitySolution').then((data) => {
|
||||||
|
caseId = data.id;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
after(() => {
|
||||||
|
cleanupCase(caseId);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sees osquery results from last action and add to a case', () => {
|
||||||
|
cy.getBySel('expand-event').first().click();
|
||||||
|
cy.getBySel('securitySolutionDocumentDetailsFlyoutResponseSectionHeader').click();
|
||||||
|
cy.getBySel('securitySolutionDocumentDetailsFlyoutResponseButton').click();
|
||||||
|
cy.getBySel('responseActionsViewWrapper').should('exist');
|
||||||
|
cy.contains('select * from users;');
|
||||||
|
cy.contains("SELECT * FROM os_version where name='Ubuntu';");
|
||||||
|
cy.getBySel('osquery-results-comment').each(($comment) => {
|
||||||
|
cy.wrap($comment).within(() => {
|
||||||
|
// On initial load result table might not render due to displayed error
|
||||||
|
if ($comment.find('div .euiDataGridRow').length <= 0) {
|
||||||
|
// If tabs are present try clicking between status and results to get rid of the error message
|
||||||
|
if ($comment.find('div .euiTabs').length > 0) {
|
||||||
|
cy.getBySel('osquery-status-tab').click();
|
||||||
|
cy.getBySel('osquery-results-tab').click();
|
||||||
|
cy.getBySel('dataGridRowCell', { timeout: 120000 }).should(
|
||||||
|
'have.lengthOf.above',
|
||||||
|
0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Result tab was rendered successfully
|
||||||
|
cy.getBySel('dataGridRowCell', { timeout: 120000 }).should('have.lengthOf.above', 0);
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
});
|
||||||
|
});
|
||||||
|
checkActionItemsInResults({
|
||||||
|
lens: true,
|
||||||
|
discover: true,
|
||||||
|
cases: true,
|
||||||
|
timeline: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
addToCase(caseId);
|
||||||
|
viewRecentCaseAndCheckResults();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
|
@ -20,6 +20,7 @@ import { ServerlessRoleName } from '../../support/roles';
|
||||||
|
|
||||||
const UUID_REGEX = '[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}';
|
const UUID_REGEX = '[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}';
|
||||||
|
|
||||||
|
// Issue: https://github.com/elastic/security-team/issues/7731
|
||||||
describe.skip('Alert Event Details', { tags: ['@ess', '@serverless'] }, () => {
|
describe.skip('Alert Event Details', { tags: ['@ess', '@serverless'] }, () => {
|
||||||
let ruleId: string;
|
let ruleId: string;
|
||||||
let ruleName: string;
|
let ruleName: string;
|
||||||
|
|
|
@ -15,93 +15,97 @@ import {
|
||||||
} from '../../tasks/live_query';
|
} from '../../tasks/live_query';
|
||||||
import { ServerlessRoleName } from '../../support/roles';
|
import { ServerlessRoleName } from '../../support/roles';
|
||||||
|
|
||||||
describe('Alert Event Details - dynamic params', { tags: ['@ess', '@serverless'] }, () => {
|
describe(
|
||||||
let ruleId: string;
|
'Alert Event Details - dynamic params',
|
||||||
let ruleName: string;
|
{ tags: ['@ess', '@serverless', '@brokenInServerless'] },
|
||||||
|
() => {
|
||||||
|
let ruleId: string;
|
||||||
|
let ruleName: string;
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
loadRule(true).then((data) => {
|
loadRule(true).then((data) => {
|
||||||
ruleId = data.id;
|
ruleId = data.id;
|
||||||
ruleName = data.name;
|
ruleName = data.name;
|
||||||
loadRuleAlerts(data.name);
|
loadRuleAlerts(data.name);
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
after(() => {
|
|
||||||
cleanupRule(ruleId);
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
cy.login(ServerlessRoleName.SOC_MANAGER);
|
|
||||||
cy.visit('/app/security/rules');
|
|
||||||
clickRuleName(ruleName);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should substitute parameters in investigation guide', () => {
|
|
||||||
cy.getBySel('expand-event').first().click();
|
|
||||||
cy.getBySel('securitySolutionFlyoutInvestigationGuideButton').click();
|
|
||||||
cy.contains('Get processes').click();
|
|
||||||
cy.getBySel('flyout-body-osquery').within(() => {
|
|
||||||
cy.contains("SELECT * FROM os_version where name='Ubuntu';");
|
|
||||||
cy.contains('host.os.platform');
|
|
||||||
cy.contains('platform');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// response-actions-notification doesn't exist in expandable flyout
|
|
||||||
it.skip('should substitute parameters in live query and increase number of ran queries', () => {
|
|
||||||
let initialNotificationCount: number;
|
|
||||||
let updatedNotificationCount: number;
|
|
||||||
cy.getBySel('expand-event').first().click();
|
|
||||||
cy.getBySel('response-actions-notification')
|
|
||||||
.should('not.have.text', '0')
|
|
||||||
.then((element) => {
|
|
||||||
initialNotificationCount = parseInt(element.text(), 10);
|
|
||||||
});
|
});
|
||||||
takeOsqueryActionWithParams();
|
});
|
||||||
cy.getBySel('osquery-empty-button').click();
|
|
||||||
cy.getBySel('response-actions-notification')
|
after(() => {
|
||||||
.should('not.have.text', '0')
|
cleanupRule(ruleId);
|
||||||
.then((element) => {
|
});
|
||||||
updatedNotificationCount = parseInt(element.text(), 10);
|
|
||||||
expect(initialNotificationCount).to.be.equal(updatedNotificationCount - 1);
|
beforeEach(() => {
|
||||||
})
|
cy.login(ServerlessRoleName.SOC_MANAGER);
|
||||||
.then(() => {
|
cy.visit('/app/security/rules');
|
||||||
cy.getBySel('securitySolutionDocumentDetailsFlyoutResponseSectionHeader').click();
|
clickRuleName(ruleName);
|
||||||
cy.getBySel('securitySolutionDocumentDetailsFlyoutResponseButton').click();
|
});
|
||||||
cy.getBySel('responseActionsViewWrapper').within(() => {
|
|
||||||
cy.contains('tags');
|
it('should substitute parameters in investigation guide', () => {
|
||||||
cy.getBySel('osquery-results-comment').should('have.length', updatedNotificationCount);
|
cy.getBySel('expand-event').first().click();
|
||||||
|
cy.getBySel('securitySolutionFlyoutInvestigationGuideButton').click();
|
||||||
|
cy.contains('Get processes').click();
|
||||||
|
cy.getBySel('flyout-body-osquery').within(() => {
|
||||||
|
cy.contains("SELECT * FROM os_version where name='Ubuntu';");
|
||||||
|
cy.contains('host.os.platform');
|
||||||
|
cy.contains('platform');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// response-actions-notification doesn't exist in expandable flyout
|
||||||
|
it.skip('should substitute parameters in live query and increase number of ran queries', () => {
|
||||||
|
let initialNotificationCount: number;
|
||||||
|
let updatedNotificationCount: number;
|
||||||
|
cy.getBySel('expand-event').first().click();
|
||||||
|
cy.getBySel('response-actions-notification')
|
||||||
|
.should('not.have.text', '0')
|
||||||
|
.then((element) => {
|
||||||
|
initialNotificationCount = parseInt(element.text(), 10);
|
||||||
|
});
|
||||||
|
takeOsqueryActionWithParams();
|
||||||
|
cy.getBySel('osquery-empty-button').click();
|
||||||
|
cy.getBySel('response-actions-notification')
|
||||||
|
.should('not.have.text', '0')
|
||||||
|
.then((element) => {
|
||||||
|
updatedNotificationCount = parseInt(element.text(), 10);
|
||||||
|
expect(initialNotificationCount).to.be.equal(updatedNotificationCount - 1);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
cy.getBySel('securitySolutionDocumentDetailsFlyoutResponseSectionHeader').click();
|
||||||
|
cy.getBySel('securitySolutionDocumentDetailsFlyoutResponseButton').click();
|
||||||
|
cy.getBySel('responseActionsViewWrapper').within(() => {
|
||||||
|
cy.contains('tags');
|
||||||
|
cy.getBySel('osquery-results-comment').should('have.length', updatedNotificationCount);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be able to run take action query against all enrolled agents', () => {
|
||||||
|
cy.getBySel('expand-event').first().click();
|
||||||
|
cy.getBySel('take-action-dropdown-btn').click();
|
||||||
|
cy.getBySel('osquery-action-item').click();
|
||||||
|
cy.getBySel('agentSelection').within(() => {
|
||||||
|
cy.getBySel('comboBoxClearButton').click();
|
||||||
|
cy.getBySel('comboBoxInput').type('All{downArrow}{enter}{esc}');
|
||||||
|
cy.contains('All agents');
|
||||||
|
});
|
||||||
|
inputQuery("SELECT * FROM os_version where name='{{host.os.name}}';", {
|
||||||
|
parseSpecialCharSequences: false,
|
||||||
|
});
|
||||||
|
cy.wait(1000);
|
||||||
|
submitQuery();
|
||||||
|
cy.getBySel('flyout-body-osquery').within(() => {
|
||||||
|
// at least 2 agents should have responded, sometimes it takes a while for the agents to respond
|
||||||
|
cy.get('[data-grid-row-index]', { timeout: 6000000 }).should('have.length.at.least', 2);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should be able to run take action query against all enrolled agents', () => {
|
it('should substitute params in osquery ran from timelines alerts', () => {
|
||||||
cy.getBySel('expand-event').first().click();
|
loadRuleAlerts(ruleName);
|
||||||
cy.getBySel('take-action-dropdown-btn').click();
|
cy.getBySel('send-alert-to-timeline-button').first().click();
|
||||||
cy.getBySel('osquery-action-item').click();
|
cy.getBySel('query-events-table').within(() => {
|
||||||
cy.getBySel('agentSelection').within(() => {
|
cy.getBySel('expand-event').first().click();
|
||||||
cy.getBySel('comboBoxClearButton').click();
|
});
|
||||||
cy.getBySel('comboBoxInput').type('All{downArrow}{enter}{esc}');
|
takeOsqueryActionWithParams();
|
||||||
cy.contains('All agents');
|
|
||||||
});
|
|
||||||
inputQuery("SELECT * FROM os_version where name='{{host.os.name}}';", {
|
|
||||||
parseSpecialCharSequences: false,
|
|
||||||
});
|
|
||||||
cy.wait(1000);
|
|
||||||
submitQuery();
|
|
||||||
cy.getBySel('flyout-body-osquery').within(() => {
|
|
||||||
// at least 2 agents should have responded, sometimes it takes a while for the agents to respond
|
|
||||||
cy.get('[data-grid-row-index]', { timeout: 6000000 }).should('have.length.at.least', 2);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}
|
||||||
it('should substitute params in osquery ran from timelines alerts', () => {
|
);
|
||||||
loadRuleAlerts(ruleName);
|
|
||||||
cy.getBySel('send-alert-to-timeline-button').first().click();
|
|
||||||
cy.getBySel('query-events-table').within(() => {
|
|
||||||
cy.getBySel('expand-event').first().click();
|
|
||||||
});
|
|
||||||
takeOsqueryActionWithParams();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ import {
|
||||||
import { closeDateTabIfVisible, closeToastIfVisible } from '../../tasks/integrations';
|
import { closeDateTabIfVisible, closeToastIfVisible } from '../../tasks/integrations';
|
||||||
import { ServerlessRoleName } from '../../support/roles';
|
import { ServerlessRoleName } from '../../support/roles';
|
||||||
|
|
||||||
|
// Issue: https://github.com/elastic/security-team/issues/7731
|
||||||
describe.skip(
|
describe.skip(
|
||||||
'Alert Event Details - Response Actions Form',
|
'Alert Event Details - Response Actions Form',
|
||||||
{ tags: ['@ess', '@serverless'] },
|
{ tags: ['@ess', '@serverless'] },
|
||||||
|
|
|
@ -18,7 +18,7 @@ import { LIVE_QUERY_EDITOR } from '../../screens/live_query';
|
||||||
import { getAdvancedButton } from '../../screens/integrations';
|
import { getAdvancedButton } from '../../screens/integrations';
|
||||||
import { ServerlessRoleName } from '../../support/roles';
|
import { ServerlessRoleName } from '../../support/roles';
|
||||||
|
|
||||||
describe('ALL - Live Query', { tags: ['@serverless', '@ess'] }, () => {
|
describe('ALL - Live Query', { tags: ['@ess', '@serverless'] }, () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.login(ServerlessRoleName.SOC_MANAGER);
|
cy.login(ServerlessRoleName.SOC_MANAGER);
|
||||||
navigateTo('/app/osquery');
|
navigateTo('/app/osquery');
|
||||||
|
|
|
@ -18,7 +18,7 @@ import { LIVE_QUERY_EDITOR } from '../../screens/live_query';
|
||||||
import { loadPack, cleanupPack, cleanupCase, loadCase } from '../../tasks/api_fixtures';
|
import { loadPack, cleanupPack, cleanupCase, loadCase } from '../../tasks/api_fixtures';
|
||||||
import { ServerlessRoleName } from '../../support/roles';
|
import { ServerlessRoleName } from '../../support/roles';
|
||||||
|
|
||||||
describe('ALL - Live Query Packs', { tags: ['@serverless', '@ess'] }, () => {
|
describe('ALL - Live Query Packs', { tags: ['@ess', '@serverless'] }, () => {
|
||||||
let packName: string;
|
let packName: string;
|
||||||
let packId: string;
|
let packId: string;
|
||||||
let caseId: string;
|
let caseId: string;
|
||||||
|
@ -75,7 +75,6 @@ describe('ALL - Live Query Packs', { tags: ['@serverless', '@ess'] }, () => {
|
||||||
cy.contains('failingQuery');
|
cy.contains('failingQuery');
|
||||||
selectAllAgents();
|
selectAllAgents();
|
||||||
submitQuery();
|
submitQuery();
|
||||||
cy.getBySel('live-query-loading').should('exist');
|
|
||||||
cy.getBySel('toggleIcon-system_memory_linux_elastic').click();
|
cy.getBySel('toggleIcon-system_memory_linux_elastic').click();
|
||||||
checkResults();
|
checkResults();
|
||||||
checkActionItemsInResults({
|
checkActionItemsInResults({
|
||||||
|
|
|
@ -509,70 +509,74 @@ describe('Packs - Create and Edit', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('should verify that packs are triggered', { tags: ['@ess', '@serverless'] }, () => {
|
describe(
|
||||||
let packId: string;
|
'should verify that packs are triggered',
|
||||||
let packName: string;
|
{ tags: ['@ess', '@serverless', '@brokenInServerless'] },
|
||||||
|
() => {
|
||||||
|
let packId: string;
|
||||||
|
let packName: string;
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
request<{ items: PackagePolicy[] }>({
|
request<{ items: PackagePolicy[] }>({
|
||||||
url: '/internal/osquery/fleet_wrapper/package_policies',
|
url: '/internal/osquery/fleet_wrapper/package_policies',
|
||||||
headers: {
|
headers: {
|
||||||
'Elastic-Api-Version': API_VERSIONS.internal.v1,
|
'Elastic-Api-Version': API_VERSIONS.internal.v1,
|
||||||
},
|
|
||||||
})
|
|
||||||
.then((response) =>
|
|
||||||
loadPack({
|
|
||||||
policy_ids: [response.body.items[0].policy_id],
|
|
||||||
queries: {
|
|
||||||
[savedQueryName]: { ecs_mapping: {}, interval: 60, query: 'select * from uptime;' },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
)
|
|
||||||
.then((pack) => {
|
|
||||||
packId = pack.saved_object_id;
|
|
||||||
packName = pack.name;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
after(() => {
|
|
||||||
cleanupPack(packId);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('', () => {
|
|
||||||
preparePack(packName);
|
|
||||||
cy.contains(`${packName} details`).should('exist');
|
|
||||||
|
|
||||||
recurse<string>(
|
|
||||||
() => {
|
|
||||||
cy.getBySel('docsLoading').should('exist');
|
|
||||||
cy.getBySel('docsLoading').should('not.exist');
|
|
||||||
|
|
||||||
return cy.get('tbody .euiTableRow > td:nth-child(5)').invoke('text');
|
|
||||||
},
|
|
||||||
(response) => response === 'Docs1',
|
|
||||||
{
|
|
||||||
timeout: 300000,
|
|
||||||
post: () => {
|
|
||||||
cy.reload();
|
|
||||||
},
|
},
|
||||||
}
|
})
|
||||||
);
|
.then((response) =>
|
||||||
|
loadPack({
|
||||||
|
policy_ids: [response.body.items[0].policy_id],
|
||||||
|
queries: {
|
||||||
|
[savedQueryName]: { ecs_mapping: {}, interval: 60, query: 'select * from uptime;' },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
|
.then((pack) => {
|
||||||
|
packId = pack.saved_object_id;
|
||||||
|
packName = pack.name;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
cy.react('ScheduledQueryLastResults', { options: { timeout: 3000 } })
|
after(() => {
|
||||||
.should('exist')
|
cleanupPack(packId);
|
||||||
.within(() => {
|
});
|
||||||
cy.react('FormattedRelative');
|
|
||||||
|
it('', () => {
|
||||||
|
preparePack(packName);
|
||||||
|
cy.contains(`${packName} details`).should('exist');
|
||||||
|
|
||||||
|
recurse<string>(
|
||||||
|
() => {
|
||||||
|
cy.getBySel('docsLoading').should('exist');
|
||||||
|
cy.getBySel('docsLoading').should('not.exist');
|
||||||
|
|
||||||
|
return cy.get('tbody .euiTableRow > td:nth-child(5)').invoke('text');
|
||||||
|
},
|
||||||
|
(response) => response === 'Docs1',
|
||||||
|
{
|
||||||
|
timeout: 300000,
|
||||||
|
post: () => {
|
||||||
|
cy.reload();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
cy.react('ScheduledQueryLastResults', { options: { timeout: 3000 } })
|
||||||
|
.should('exist')
|
||||||
|
.within(() => {
|
||||||
|
cy.react('FormattedRelative');
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.react('DocsColumnResults').within(() => {
|
||||||
|
cy.react('EuiNotificationBadge').contains('1');
|
||||||
});
|
});
|
||||||
|
cy.react('AgentsColumnResults').within(() => {
|
||||||
cy.react('DocsColumnResults').within(() => {
|
cy.react('EuiNotificationBadge').contains('1');
|
||||||
cy.react('EuiNotificationBadge').contains('1');
|
});
|
||||||
|
cy.getBySel('packResultsErrorsEmpty').should('have.length', 1);
|
||||||
});
|
});
|
||||||
cy.react('AgentsColumnResults').within(() => {
|
}
|
||||||
cy.react('EuiNotificationBadge').contains('1');
|
);
|
||||||
});
|
|
||||||
cy.getBySel('packResultsErrorsEmpty').should('have.length', 1);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('delete all queries in the pack', { tags: ['@ess', '@serverless'] }, () => {
|
describe('delete all queries in the pack', { tags: ['@ess', '@serverless'] }, () => {
|
||||||
let packId: string;
|
let packId: string;
|
||||||
|
|
|
@ -160,7 +160,6 @@ describe('ALL - Packs', { tags: ['@ess', '@serverless'] }, () => {
|
||||||
cy.getBySel('select-live-pack').click().type('osquery-monitoring{downArrow}{enter}');
|
cy.getBySel('select-live-pack').click().type('osquery-monitoring{downArrow}{enter}');
|
||||||
selectAllAgents();
|
selectAllAgents();
|
||||||
submitQuery();
|
submitQuery();
|
||||||
cy.getBySel('live-query-loading').should('exist');
|
|
||||||
cy.getBySel('toggleIcon-events').click();
|
cy.getBySel('toggleIcon-events').click();
|
||||||
checkResults();
|
checkResults();
|
||||||
checkActionItemsInResults({
|
checkActionItemsInResults({
|
||||||
|
|
|
@ -22,7 +22,7 @@ import { getSavedQueriesComplexTest } from '../../tasks/saved_queries';
|
||||||
import { loadCase, cleanupCase, loadPack, cleanupPack } from '../../tasks/api_fixtures';
|
import { loadCase, cleanupCase, loadPack, cleanupPack } from '../../tasks/api_fixtures';
|
||||||
import { ServerlessRoleName } from '../../support/roles';
|
import { ServerlessRoleName } from '../../support/roles';
|
||||||
|
|
||||||
describe('ALL - Saved queries', { tags: ['@ess', '@serverless'] }, () => {
|
describe('ALL - Saved queries', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => {
|
||||||
let caseId: string;
|
let caseId: string;
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
|
@ -82,6 +82,7 @@ describe('ALL - Saved queries', { tags: ['@ess', '@serverless'] }, () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
cy.login(ServerlessRoleName.SOC_MANAGER);
|
||||||
navigateTo('/app/osquery/saved_queries');
|
navigateTo('/app/osquery/saved_queries');
|
||||||
cy.getBySel('tablePaginationPopoverButton').click();
|
cy.getBySel('tablePaginationPopoverButton').click();
|
||||||
cy.getBySel('tablePagination-50-rows').click();
|
cy.getBySel('tablePagination-50-rows').click();
|
||||||
|
|
|
@ -23,9 +23,9 @@ import {
|
||||||
} from '../../tasks/api_fixtures';
|
} from '../../tasks/api_fixtures';
|
||||||
import type { ServerlessRoleName } from '../../support/roles';
|
import type { ServerlessRoleName } from '../../support/roles';
|
||||||
|
|
||||||
describe(`T1 and T2 analysts`, { tags: ['@ess', '@serverless'] }, () => {
|
describe(`T1 and T2 analysts`, { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => {
|
||||||
['t1_analyst', 't2_analyst'].forEach((role: string) => {
|
['t1_analyst', 't2_analyst'].forEach((role: string) => {
|
||||||
describe(`${role}- READ + runSavedQueries `, { tags: ['@ess', '@serverless'] }, () => {
|
describe(`${role}- READ + runSavedQueries `, () => {
|
||||||
let savedQueryName: string;
|
let savedQueryName: string;
|
||||||
let savedQueryId: string;
|
let savedQueryId: string;
|
||||||
let packName: string;
|
let packName: string;
|
||||||
|
|
|
@ -72,7 +72,17 @@ Cypress.Commands.add(
|
||||||
() => cy.get('body').click(0, 0) // 0,0 here are the x and y coordinates
|
() => cy.get('body').click(0, 0) // 0,0 here are the x and y coordinates
|
||||||
);
|
);
|
||||||
|
|
||||||
Cypress.Commands.add('login', login);
|
Cypress.Commands.add('login', (role) => {
|
||||||
|
// TODO Temporary approach to login until login with role is supported in serverless
|
||||||
|
// Cypress.Commands.add('login', login);
|
||||||
|
const isServerless = Cypress.env().IS_SERVERLESS;
|
||||||
|
|
||||||
|
if (isServerless) {
|
||||||
|
return login.with('system_indices_superuser', 'changeme');
|
||||||
|
}
|
||||||
|
|
||||||
|
return login(role);
|
||||||
|
});
|
||||||
|
|
||||||
// Alternatively you can use CommonJS syntax:
|
// Alternatively you can use CommonJS syntax:
|
||||||
// require('./commands')
|
// require('./commands')
|
||||||
|
|
|
@ -5,6 +5,12 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
CA_TRUSTED_FINGERPRINT,
|
||||||
|
FLEET_SERVER_CERT_PATH,
|
||||||
|
FLEET_SERVER_KEY_PATH,
|
||||||
|
fleetServerDevServiceAccount,
|
||||||
|
} from '@kbn/dev-utils';
|
||||||
import type {
|
import type {
|
||||||
AgentPolicy,
|
AgentPolicy,
|
||||||
CreateAgentPolicyResponse,
|
CreateAgentPolicyResponse,
|
||||||
|
@ -37,6 +43,9 @@ import type {
|
||||||
PostFleetServerHostsResponse,
|
PostFleetServerHostsResponse,
|
||||||
} from '@kbn/fleet-plugin/common/types/rest_spec/fleet_server_hosts';
|
} from '@kbn/fleet-plugin/common/types/rest_spec/fleet_server_hosts';
|
||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
|
import { resolve } from 'path';
|
||||||
|
import { SERVERLESS_NODES, verifyDockerInstalled, maybeCreateDockerNetwork } from '@kbn/es';
|
||||||
|
import { isServerlessKibanaFlavor } from '../common/stack_services';
|
||||||
import type { FormattedAxiosError } from '../common/format_axios_error';
|
import type { FormattedAxiosError } from '../common/format_axios_error';
|
||||||
import { catchAxiosErrorFormatAndThrow } from '../common/format_axios_error';
|
import { catchAxiosErrorFormatAndThrow } from '../common/format_axios_error';
|
||||||
import { isLocalhost } from '../common/is_localhost';
|
import { isLocalhost } from '../common/is_localhost';
|
||||||
|
@ -44,32 +53,42 @@ import { dump } from './utils';
|
||||||
import { fetchFleetServerUrl, waitForHostToEnroll } from '../common/fleet_services';
|
import { fetchFleetServerUrl, waitForHostToEnroll } from '../common/fleet_services';
|
||||||
import { getRuntimeServices } from './runtime';
|
import { getRuntimeServices } from './runtime';
|
||||||
|
|
||||||
|
const FLEET_SERVER_CUSTOM_CONFIG = resolve(__dirname, './fleet_server.yml');
|
||||||
|
|
||||||
export const runFleetServerIfNeeded = async (): Promise<
|
export const runFleetServerIfNeeded = async (): Promise<
|
||||||
{ fleetServerContainerId: string; fleetServerAgentPolicyId: string } | undefined
|
{ fleetServerContainerId: string; fleetServerAgentPolicyId: string | undefined } | undefined
|
||||||
> => {
|
> => {
|
||||||
let fleetServerContainerId;
|
let fleetServerContainerId;
|
||||||
let fleetServerAgentPolicyId;
|
let fleetServerAgentPolicyId;
|
||||||
|
let serviceToken;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
log,
|
log,
|
||||||
kibana: { isLocalhost: isKibanaOnLocalhost },
|
kibana: { isLocalhost: isKibanaOnLocalhost },
|
||||||
|
kbnClient,
|
||||||
} = getRuntimeServices();
|
} = getRuntimeServices();
|
||||||
|
|
||||||
log.info(`Setting up fleet server (if necessary)`);
|
log.info(`Setting up fleet server (if necessary)`);
|
||||||
log.indent(4);
|
log.indent(4);
|
||||||
|
const isServerless = await isServerlessKibanaFlavor(kbnClient);
|
||||||
|
|
||||||
|
await verifyDockerInstalled(log);
|
||||||
|
await maybeCreateDockerNetwork(log);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
fleetServerAgentPolicyId = await getOrCreateFleetServerAgentPolicyId();
|
if (isServerless) {
|
||||||
const serviceToken = await generateFleetServiceToken();
|
fleetServerContainerId = await startFleetServerStandAloneWithDocker();
|
||||||
|
} else {
|
||||||
if (isKibanaOnLocalhost) {
|
fleetServerAgentPolicyId = await getOrCreateFleetServerAgentPolicyId();
|
||||||
await configureFleetIfNeeded();
|
serviceToken = await generateFleetServiceToken();
|
||||||
|
if (isKibanaOnLocalhost) {
|
||||||
|
await configureFleetIfNeeded();
|
||||||
|
}
|
||||||
|
fleetServerContainerId = await startFleetServerWithDocker({
|
||||||
|
policyId: fleetServerAgentPolicyId,
|
||||||
|
serviceToken,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fleetServerContainerId = await startFleetServerWithDocker({
|
|
||||||
policyId: fleetServerAgentPolicyId,
|
|
||||||
serviceToken,
|
|
||||||
});
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
log.error(dump(error));
|
log.error(dump(error));
|
||||||
log.indent(-4);
|
log.indent(-4);
|
||||||
|
@ -201,39 +220,29 @@ export const startFleetServerWithDocker = async ({
|
||||||
try {
|
try {
|
||||||
const dockerArgs = [
|
const dockerArgs = [
|
||||||
'run',
|
'run',
|
||||||
|
|
||||||
'--restart',
|
'--restart',
|
||||||
'no',
|
'no',
|
||||||
|
'--net',
|
||||||
|
'elastic',
|
||||||
'--add-host',
|
'--add-host',
|
||||||
'host.docker.internal:host-gateway',
|
'host.docker.internal:host-gateway',
|
||||||
|
|
||||||
'--rm',
|
'--rm',
|
||||||
|
|
||||||
'--detach',
|
'--detach',
|
||||||
|
|
||||||
'--name',
|
'--name',
|
||||||
containerName,
|
containerName,
|
||||||
|
|
||||||
// The container's hostname will appear in Fleet when the agent enrolls
|
// The container's hostname will appear in Fleet when the agent enrolls
|
||||||
'--hostname',
|
'--hostname',
|
||||||
containerName,
|
containerName,
|
||||||
|
|
||||||
'--env',
|
'--env',
|
||||||
'FLEET_SERVER_ENABLE=1',
|
'FLEET_SERVER_ENABLE=1',
|
||||||
|
|
||||||
'--env',
|
'--env',
|
||||||
`FLEET_SERVER_ELASTICSEARCH_HOST=${esUrlWithRealIp}`,
|
`FLEET_SERVER_ELASTICSEARCH_HOST=${esUrlWithRealIp}`,
|
||||||
|
|
||||||
'--env',
|
'--env',
|
||||||
`FLEET_SERVER_SERVICE_TOKEN=${serviceToken}`,
|
`FLEET_SERVER_SERVICE_TOKEN=${serviceToken}`,
|
||||||
|
|
||||||
'--env',
|
'--env',
|
||||||
`FLEET_SERVER_POLICY=${policyId}`,
|
`FLEET_SERVER_POLICY=${policyId}`,
|
||||||
|
|
||||||
'--publish',
|
'--publish',
|
||||||
`${fleetServerPort}:8220`,
|
`${fleetServerPort}:8220`,
|
||||||
|
|
||||||
`docker.elastic.co/beats/elastic-agent:${version}`,
|
`docker.elastic.co/beats/elastic-agent:${version}`,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -278,6 +287,95 @@ export const startFleetServerWithDocker = async ({
|
||||||
return containerId;
|
return containerId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const startFleetServerStandAloneWithDocker = async () => {
|
||||||
|
let containerId;
|
||||||
|
const {
|
||||||
|
log,
|
||||||
|
elastic: { url: elasticUrl },
|
||||||
|
fleetServer: { port: fleetServerPort },
|
||||||
|
} = getRuntimeServices();
|
||||||
|
|
||||||
|
log.info(`Starting a new fleet server using Docker`);
|
||||||
|
log.indent(4);
|
||||||
|
const esURL = new URL(elasticUrl);
|
||||||
|
|
||||||
|
esURL.hostname = SERVERLESS_NODES[0].name;
|
||||||
|
|
||||||
|
const esUrlWithRealIp = esURL.toString();
|
||||||
|
|
||||||
|
const containerName = `dev-fleet-server.${fleetServerPort}`;
|
||||||
|
try {
|
||||||
|
const dockerArgs = [
|
||||||
|
'run',
|
||||||
|
'--restart',
|
||||||
|
'no',
|
||||||
|
'--net',
|
||||||
|
'elastic',
|
||||||
|
'--add-host',
|
||||||
|
'host.docker.internal:host-gateway',
|
||||||
|
'--rm',
|
||||||
|
'--detach',
|
||||||
|
'--name',
|
||||||
|
containerName,
|
||||||
|
// The container's hostname will appear in Fleet when the agent enrolls
|
||||||
|
'--hostname',
|
||||||
|
containerName,
|
||||||
|
'--volume',
|
||||||
|
`${FLEET_SERVER_CERT_PATH}:/fleet-server.crt`,
|
||||||
|
'--volume',
|
||||||
|
`${FLEET_SERVER_KEY_PATH}:/fleet-server.key`,
|
||||||
|
'--env',
|
||||||
|
'FLEET_SERVER_CERT=/fleet-server.crt',
|
||||||
|
'--env',
|
||||||
|
'FLEET_SERVER_CERT_KEY=/fleet-server.key',
|
||||||
|
'--env',
|
||||||
|
`ELASTICSEARCH_HOSTS=${esUrlWithRealIp}`,
|
||||||
|
'--env',
|
||||||
|
`ELASTICSEARCH_SERVICE_TOKEN=${fleetServerDevServiceAccount.token}`,
|
||||||
|
'--env',
|
||||||
|
`ELASTICSEARCH_CA_TRUSTED_FINGERPRINT=${CA_TRUSTED_FINGERPRINT}`,
|
||||||
|
'--volume',
|
||||||
|
`${FLEET_SERVER_CUSTOM_CONFIG}:/etc/fleet-server.yml:ro`,
|
||||||
|
'--publish',
|
||||||
|
`${fleetServerPort}:8220`,
|
||||||
|
`docker.elastic.co/observability-ci/fleet-server:latest`,
|
||||||
|
];
|
||||||
|
|
||||||
|
await execa('docker', ['kill', containerName])
|
||||||
|
.then(() => {
|
||||||
|
log.verbose(
|
||||||
|
`Killed an existing container with name [${containerName}]. New one will be started.`
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
log.verbose(`Attempt to kill currently running fleet-server container (if any) with name [${containerName}] was unsuccessful:
|
||||||
|
${error}
|
||||||
|
(This is ok if one was not running already)`);
|
||||||
|
});
|
||||||
|
|
||||||
|
log.verbose(`docker arguments:\n${dockerArgs.join(' ')}`);
|
||||||
|
|
||||||
|
containerId = (await execa('docker', dockerArgs)).stdout;
|
||||||
|
|
||||||
|
log.info(`Done. Fleet Server Stand Alone is running and connected to Fleet.
|
||||||
|
Container Name: ${containerName}
|
||||||
|
Container Id: ${containerId}
|
||||||
|
|
||||||
|
View running output: ${chalk.bold(`docker attach ---sig-proxy=false ${containerName}`)}
|
||||||
|
Shell access: ${chalk.bold(`docker exec -it ${containerName} /bin/bash`)}
|
||||||
|
Kill container: ${chalk.bold(`docker kill ${containerId}`)}
|
||||||
|
`);
|
||||||
|
} catch (error) {
|
||||||
|
log.error(dump(error));
|
||||||
|
log.indent(-4);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.indent(-4);
|
||||||
|
|
||||||
|
return containerId;
|
||||||
|
};
|
||||||
|
|
||||||
const configureFleetIfNeeded = async () => {
|
const configureFleetIfNeeded = async () => {
|
||||||
const { log, kbnClient, localhostRealIp } = getRuntimeServices();
|
const { log, kbnClient, localhostRealIp } = getRuntimeServices();
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
# This config is intended to be used with a stand-alone fleet-server instance for development.
|
||||||
|
output:
|
||||||
|
elasticsearch:
|
||||||
|
hosts: '${ELASTICSEARCH_HOSTS}'
|
||||||
|
service_token: '${ELASTICSEARCH_SERVICE_TOKEN}'
|
||||||
|
ssl.ca_trusted_fingerprint: '${ELASTICSEARCH_CA_TRUSTED_FINGERPRINT}'
|
||||||
|
|
||||||
|
fleet:
|
||||||
|
agent:
|
||||||
|
id: '${FLEET_SERVER_AGENT_ID:dev-fleet-server}'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
- type: fleet-server
|
||||||
|
policy.id: '${FLEET_SERVER_POLICY_ID:fleet-server-policy}'
|
||||||
|
server:
|
||||||
|
ssl:
|
||||||
|
enabled: true
|
||||||
|
certificate: /fleet-server.crt
|
||||||
|
key: /fleet-server.key
|
||||||
|
|
||||||
|
logging:
|
||||||
|
to_stderr: true # Force the logging output to stderr
|
||||||
|
pretty: true
|
||||||
|
level: '${LOG_LEVEL:DEBUG}'
|
||||||
|
|
||||||
|
http.enabled: true
|
|
@ -6,9 +6,10 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
import { SERVERLESS_NODES } from '@kbn/es';
|
||||||
import { EsVersion, readConfigFile } from '@kbn/test';
|
import { EsVersion, readConfigFile } from '@kbn/test';
|
||||||
import type { ToolingLog } from '@kbn/tooling-log';
|
import type { ToolingLog } from '@kbn/tooling-log';
|
||||||
|
import { CA_TRUSTED_FINGERPRINT } from '@kbn/dev-utils';
|
||||||
import { getLocalhostRealIp } from '../endpoint/common/localhost_services';
|
import { getLocalhostRealIp } from '../endpoint/common/localhost_services';
|
||||||
import type { parseTestFileConfig } from './utils';
|
import type { parseTestFileConfig } from './utils';
|
||||||
|
|
||||||
|
@ -133,15 +134,23 @@ export const getFTRConfig = ({
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasFleetServerArgs) {
|
if (hasFleetServerArgs) {
|
||||||
vars.kbnTestServer.serverArgs.push(
|
|
||||||
`--xpack.fleet.agents.fleet_server.hosts=["https://${hostRealIp}:${fleetServerPort}"]`
|
|
||||||
);
|
|
||||||
vars.kbnTestServer.serverArgs.push(
|
|
||||||
`--xpack.fleet.agents.elasticsearch.host=http://${hostRealIp}:${esPort}`
|
|
||||||
);
|
|
||||||
|
|
||||||
if (vars.serverless) {
|
if (vars.serverless) {
|
||||||
vars.kbnTestServer.serverArgs.push(`--xpack.fleet.internal.fleetServerStandalone=false`);
|
vars.kbnTestServer.serverArgs.push(
|
||||||
|
`--xpack.fleet.agents.fleet_server.hosts=["https://host.docker.internal:${fleetServerPort}"]`
|
||||||
|
);
|
||||||
|
vars.kbnTestServer.serverArgs.push(
|
||||||
|
`--xpack.fleet.agents.elasticsearch.host=https://${SERVERLESS_NODES[0].name}:${esPort}`
|
||||||
|
);
|
||||||
|
vars.kbnTestServer.serverArgs.push(
|
||||||
|
`--xpack.fleet.agents.elasticsearch.ca_trusted_fingerprint=${CA_TRUSTED_FINGERPRINT}`
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
vars.kbnTestServer.serverArgs.push(
|
||||||
|
`--xpack.fleet.agents.fleet_server.hosts=["https://${hostRealIp}:${fleetServerPort}"]`
|
||||||
|
);
|
||||||
|
vars.kbnTestServer.serverArgs.push(
|
||||||
|
`--xpack.fleet.agents.elasticsearch.host=http://${hostRealIp}:${esPort}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -173,6 +173,7 @@
|
||||||
"@kbn/content-management-plugin",
|
"@kbn/content-management-plugin",
|
||||||
"@kbn/discover-utils",
|
"@kbn/discover-utils",
|
||||||
"@kbn/subscription-tracking",
|
"@kbn/subscription-tracking",
|
||||||
"@kbn/openapi-generator"
|
"@kbn/openapi-generator",
|
||||||
|
"@kbn/es"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,24 +7,25 @@
|
||||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
||||||
<ds:X509Data>
|
<ds:X509Data>
|
||||||
<!-- This certificate is extracted from KBN_CERT_PATH in @kbn/dev-utils and should always be in sync with it -->
|
<!-- This certificate is extracted from KBN_CERT_PATH in @kbn/dev-utils and should always be in sync with it -->
|
||||||
<ds:X509Certificate>MIIDOTCCAiGgAwIBAgIVAN0GVNLw3IaUBuG7t6CeW8w2wyymMA0GCSqGSIb3DQEB
|
<ds:X509Certificate>MIIDYjCCAkqgAwIBAgIUZ2p8K7GMXGk6xwCS9S91BUl1JnAwDQYJKoZIhvcNAQEL
|
||||||
CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
|
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
||||||
ZXJhdGVkIENBMCAXDTIxMTAxMzEwMTU1OFoYDzIwNzExMDAxMTAxNTU4WjARMQ8w
|
cmF0ZWQgQ0EwIBcNMjMwOTIzMTUyMDE0WhgPMjA3MzA5MTAxNTIwMTRaMBExDzAN
|
||||||
DQYDVQQDEwZraWJhbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3
|
BgNVBAMTBmtpYmFuYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMOU
|
||||||
nvfL3/26D8EkLso+t9S0m+tSJipLsBWs0dCpc8KRJ/+ijDRnAQ5lOmOAcxt43SNY
|
r52dbZ5dY0BoP2p7CEnOpG+qHTNrOAqZO/OJfniPMtpGmwAMl3WZDca6u2XkV2KE
|
||||||
KFr0EntQEZyYaRwMIM8aPR0WYW/VV5o4fq2o/JnmHqzZJRJCwZq+5WiCiDPt012N
|
qQyevQ2ADk6G3o8S2RU8mO/+UweuCDF7LHuSdxEGTpucidZErmVhEGUOFosL5UeB
|
||||||
mRGYCMUxjlEwejue6diLAeQhZ/sfN4jUp217bMEHrhHrNBWTwwJ+Uk5TBQMhviCW
|
AtIDWxvWwgK+W9Yzt5IEN2HzNCZ6h0dOSk2r9EjVMG5yF4Q6kuqOYxBT7jxoaOtO
|
||||||
LKbsKrfluA6DGHWrXN4pH7Xmaf/Zyc9AYL/nxwv3VQHZzIAK/U/WNCgFJJ3qoFYY
|
OCrgBRummtUga4T13WZ/ZIyyHpXj2+JD4YEmrDyoTa7NLaphv0hnVhHXYoYBI/c6
|
||||||
6TUwDDNa30mSj165OOds9N+VmUlDC3IFiHV3osBWscSU4HJd6QJ8huHrFLLV4y4i
|
2SwwAoBlmtDmlinwSACQ3o/8eLWk0tqkIP14rc3oFh3m7D2c3c2m2HXuyoSDMfGW
|
||||||
u62el47Qr+/8Ut3SzeIXAgMBAAGjYzBhMB0GA1UdDgQWBBQli5f2bYL9jKUA5Uxp
|
beG2IE1Q3idcGmeG3qsCAwEAAaOBjDCBiTAdBgNVHQ4EFgQUMOUM7w5jmIozDvnq
|
||||||
yRRHeCoPJzAfBgNVHSMEGDAWgBQwTCrAjlvQxik3HBocn1PDUunenjAUBgNVHREE
|
RpM779m5GigwHwYDVR0jBBgwFoAUMEwqwI5b0MYpNxwaHJ9Tw1Lp3p4wPAYDVR0R
|
||||||
DTALgglsb2NhbGhvc3QwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEATFNj
|
BDUwM4IUaG9zdC5kb2NrZXIuaW50ZXJuYWyCCWxvY2FsaG9zdIIEZXMwM4IEZXMw
|
||||||
WkTBPfgflGYZD4OsYvfT/rVjFKbJP/u1a0rkzNamA2QKNzI9JTOzONPTyRhe9yVS
|
MoIEZXMwMTAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQCxqvQYXSKqgpdl
|
||||||
zeO8X2rtN63l38dtgMjFQ15Xxnp7GFT7GkXfa1JR+tGSGTgVld8nLUzig+mNmBoR
|
SP4gXgwipAnYsoW9qkgWQODTvSBEzUdOWme0d3j7i2l6Ur/nVSv5YjkqAv1hf/yJ
|
||||||
nE4cNc0JJ1PsXPzfPgJ6WMp2WOoNUrQf2cm42i36Jk+7KGcosfyFMPQILZE34Geo
|
Hrk9h+j29ZO/aQ/KDh5i/gTEUnPw3Bxbw47dfn23tjMWO7NCU1fr5HNztRsa/gQr
|
||||||
DAgCVpNWPgST4HYBUCHMC7S14LHLVdUXPsfGZPEqU5Zf9Hvy61rQC/RdNjnMI6JD
|
e9s07g25u/gTfTi9Fyu0lcRe3bXOLS/mFVcuC5oxuS65R9OlbIsiORkZ2EfwuNUf
|
||||||
s57l9oHASNeEg55NQm01aOmwq/z1DXs3UP2nRmp6XCCfE61ghofO5dtV1j3cZ3f5
|
wAAYOGPIjM2VlQCvBitefsd/SzRKHdxSPy6KSjkO6MGEGo87fr7B7Nx1qp1DVrK7
|
||||||
dzkzSBV7H6+/MD3Y8Q==</ds:X509Certificate>
|
q9XeP1Cuygjg9WTcnsvWvNw8CssyuFM6X/3tGjpPasXwLvNUoG2AairK2AYTWhvS
|
||||||
|
foE31cFg</ds:X509Certificate>
|
||||||
</ds:X509Data>
|
</ds:X509Data>
|
||||||
</ds:KeyInfo>
|
</ds:KeyInfo>
|
||||||
</md:KeyDescriptor>
|
</md:KeyDescriptor>
|
||||||
|
|
|
@ -32,6 +32,8 @@ export class AgentManager extends Manager {
|
||||||
|
|
||||||
const dockerArgs = [
|
const dockerArgs = [
|
||||||
'run',
|
'run',
|
||||||
|
'--net',
|
||||||
|
'elastic',
|
||||||
'--detach',
|
'--detach',
|
||||||
'--add-host',
|
'--add-host',
|
||||||
'host.docker.internal:host-gateway',
|
'host.docker.internal:host-gateway',
|
||||||
|
|
|
@ -6,5 +6,5 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export async function getLatestVersion(): Promise<string> {
|
export async function getLatestVersion(): Promise<string> {
|
||||||
return '8.10.0-SNAPSHOT';
|
return '8.11.0-SNAPSHOT';
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
import Url from 'url';
|
import Url from 'url';
|
||||||
|
|
||||||
|
import { verifyDockerInstalled, maybeCreateDockerNetwork } from '@kbn/es';
|
||||||
import { startRuntimeServices } from '@kbn/security-solution-plugin/scripts/endpoint/endpoint_agent_runner/runtime';
|
import { startRuntimeServices } from '@kbn/security-solution-plugin/scripts/endpoint/endpoint_agent_runner/runtime';
|
||||||
import { FtrProviderContext } from './ftr_provider_context';
|
import { FtrProviderContext } from './ftr_provider_context';
|
||||||
|
|
||||||
|
@ -29,6 +30,9 @@ async function setupFleetAgent({ getService }: FtrProviderContext) {
|
||||||
const username = config.get('servers.elasticsearch.username');
|
const username = config.get('servers.elasticsearch.username');
|
||||||
const password = config.get('servers.elasticsearch.password');
|
const password = config.get('servers.elasticsearch.password');
|
||||||
|
|
||||||
|
await verifyDockerInstalled(log);
|
||||||
|
await maybeCreateDockerNetwork(log);
|
||||||
|
|
||||||
await startRuntimeServices({
|
await startRuntimeServices({
|
||||||
log,
|
log,
|
||||||
elasticUrl,
|
elasticUrl,
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
import { FtrConfigProviderContext } from '@kbn/test';
|
import { FtrConfigProviderContext } from '@kbn/test';
|
||||||
|
|
||||||
|
import { SERVERLESS_NODES } from '@kbn/es';
|
||||||
import { startOsqueryCypress } from './runner';
|
import { startOsqueryCypress } from './runner';
|
||||||
|
|
||||||
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
||||||
|
@ -32,12 +33,11 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
||||||
serverArgs: [
|
serverArgs: [
|
||||||
...securitySolutionCypressConfig.get('kbnTestServer.serverArgs'),
|
...securitySolutionCypressConfig.get('kbnTestServer.serverArgs'),
|
||||||
`--xpack.fleet.agents.fleet_server.hosts=["https://host.docker.internal:8220"]`,
|
`--xpack.fleet.agents.fleet_server.hosts=["https://host.docker.internal:8220"]`,
|
||||||
`--xpack.fleet.agents.elasticsearch.host=http://host.docker.internal:${securitySolutionCypressConfig.get(
|
`--xpack.fleet.agents.elasticsearch.host=http://${
|
||||||
'servers.elasticsearch.port'
|
SERVERLESS_NODES[0].name
|
||||||
)}`,
|
}:${securitySolutionCypressConfig.get('servers.elasticsearch.port')}`,
|
||||||
`--xpack.fleet.packages.0.name=osquery_manager`,
|
`--xpack.fleet.packages.0.name=osquery_manager`,
|
||||||
`--xpack.fleet.packages.0.version=latest`,
|
`--xpack.fleet.packages.0.version=latest`,
|
||||||
`--xpack.fleet.internal.fleetServerStandalone=false`,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -7,24 +7,25 @@
|
||||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
||||||
<ds:X509Data>
|
<ds:X509Data>
|
||||||
<!-- This certificate is extracted from KBN_CERT_PATH in @kbn/dev-utils and should always be in sync with it -->
|
<!-- This certificate is extracted from KBN_CERT_PATH in @kbn/dev-utils and should always be in sync with it -->
|
||||||
<ds:X509Certificate>MIIDOTCCAiGgAwIBAgIVAN0GVNLw3IaUBuG7t6CeW8w2wyymMA0GCSqGSIb3DQEB
|
<ds:X509Certificate>MIIDYjCCAkqgAwIBAgIUZ2p8K7GMXGk6xwCS9S91BUl1JnAwDQYJKoZIhvcNAQEL
|
||||||
CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
|
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
||||||
ZXJhdGVkIENBMCAXDTIxMTAxMzEwMTU1OFoYDzIwNzExMDAxMTAxNTU4WjARMQ8w
|
cmF0ZWQgQ0EwIBcNMjMwOTIzMTUyMDE0WhgPMjA3MzA5MTAxNTIwMTRaMBExDzAN
|
||||||
DQYDVQQDEwZraWJhbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3
|
BgNVBAMTBmtpYmFuYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMOU
|
||||||
nvfL3/26D8EkLso+t9S0m+tSJipLsBWs0dCpc8KRJ/+ijDRnAQ5lOmOAcxt43SNY
|
r52dbZ5dY0BoP2p7CEnOpG+qHTNrOAqZO/OJfniPMtpGmwAMl3WZDca6u2XkV2KE
|
||||||
KFr0EntQEZyYaRwMIM8aPR0WYW/VV5o4fq2o/JnmHqzZJRJCwZq+5WiCiDPt012N
|
qQyevQ2ADk6G3o8S2RU8mO/+UweuCDF7LHuSdxEGTpucidZErmVhEGUOFosL5UeB
|
||||||
mRGYCMUxjlEwejue6diLAeQhZ/sfN4jUp217bMEHrhHrNBWTwwJ+Uk5TBQMhviCW
|
AtIDWxvWwgK+W9Yzt5IEN2HzNCZ6h0dOSk2r9EjVMG5yF4Q6kuqOYxBT7jxoaOtO
|
||||||
LKbsKrfluA6DGHWrXN4pH7Xmaf/Zyc9AYL/nxwv3VQHZzIAK/U/WNCgFJJ3qoFYY
|
OCrgBRummtUga4T13WZ/ZIyyHpXj2+JD4YEmrDyoTa7NLaphv0hnVhHXYoYBI/c6
|
||||||
6TUwDDNa30mSj165OOds9N+VmUlDC3IFiHV3osBWscSU4HJd6QJ8huHrFLLV4y4i
|
2SwwAoBlmtDmlinwSACQ3o/8eLWk0tqkIP14rc3oFh3m7D2c3c2m2HXuyoSDMfGW
|
||||||
u62el47Qr+/8Ut3SzeIXAgMBAAGjYzBhMB0GA1UdDgQWBBQli5f2bYL9jKUA5Uxp
|
beG2IE1Q3idcGmeG3qsCAwEAAaOBjDCBiTAdBgNVHQ4EFgQUMOUM7w5jmIozDvnq
|
||||||
yRRHeCoPJzAfBgNVHSMEGDAWgBQwTCrAjlvQxik3HBocn1PDUunenjAUBgNVHREE
|
RpM779m5GigwHwYDVR0jBBgwFoAUMEwqwI5b0MYpNxwaHJ9Tw1Lp3p4wPAYDVR0R
|
||||||
DTALgglsb2NhbGhvc3QwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEATFNj
|
BDUwM4IUaG9zdC5kb2NrZXIuaW50ZXJuYWyCCWxvY2FsaG9zdIIEZXMwM4IEZXMw
|
||||||
WkTBPfgflGYZD4OsYvfT/rVjFKbJP/u1a0rkzNamA2QKNzI9JTOzONPTyRhe9yVS
|
MoIEZXMwMTAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQCxqvQYXSKqgpdl
|
||||||
zeO8X2rtN63l38dtgMjFQ15Xxnp7GFT7GkXfa1JR+tGSGTgVld8nLUzig+mNmBoR
|
SP4gXgwipAnYsoW9qkgWQODTvSBEzUdOWme0d3j7i2l6Ur/nVSv5YjkqAv1hf/yJ
|
||||||
nE4cNc0JJ1PsXPzfPgJ6WMp2WOoNUrQf2cm42i36Jk+7KGcosfyFMPQILZE34Geo
|
Hrk9h+j29ZO/aQ/KDh5i/gTEUnPw3Bxbw47dfn23tjMWO7NCU1fr5HNztRsa/gQr
|
||||||
DAgCVpNWPgST4HYBUCHMC7S14LHLVdUXPsfGZPEqU5Zf9Hvy61rQC/RdNjnMI6JD
|
e9s07g25u/gTfTi9Fyu0lcRe3bXOLS/mFVcuC5oxuS65R9OlbIsiORkZ2EfwuNUf
|
||||||
s57l9oHASNeEg55NQm01aOmwq/z1DXs3UP2nRmp6XCCfE61ghofO5dtV1j3cZ3f5
|
wAAYOGPIjM2VlQCvBitefsd/SzRKHdxSPy6KSjkO6MGEGo87fr7B7Nx1qp1DVrK7
|
||||||
dzkzSBV7H6+/MD3Y8Q==</ds:X509Certificate>
|
q9XeP1Cuygjg9WTcnsvWvNw8CssyuFM6X/3tGjpPasXwLvNUoG2AairK2AYTWhvS
|
||||||
|
foE31cFg</ds:X509Certificate>
|
||||||
</ds:X509Data>
|
</ds:X509Data>
|
||||||
</ds:KeyInfo>
|
</ds:KeyInfo>
|
||||||
</md:KeyDescriptor>
|
</md:KeyDescriptor>
|
||||||
|
|
|
@ -7,24 +7,25 @@
|
||||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
||||||
<ds:X509Data>
|
<ds:X509Data>
|
||||||
<!-- This certificate is extracted from KBN_CERT_PATH in @kbn/dev-utils and should always be in sync with it -->
|
<!-- This certificate is extracted from KBN_CERT_PATH in @kbn/dev-utils and should always be in sync with it -->
|
||||||
<ds:X509Certificate>MIIDOTCCAiGgAwIBAgIVAN0GVNLw3IaUBuG7t6CeW8w2wyymMA0GCSqGSIb3DQEB
|
<ds:X509Certificate>MIIDYjCCAkqgAwIBAgIUZ2p8K7GMXGk6xwCS9S91BUl1JnAwDQYJKoZIhvcNAQEL
|
||||||
CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
|
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
||||||
ZXJhdGVkIENBMCAXDTIxMTAxMzEwMTU1OFoYDzIwNzExMDAxMTAxNTU4WjARMQ8w
|
cmF0ZWQgQ0EwIBcNMjMwOTIzMTUyMDE0WhgPMjA3MzA5MTAxNTIwMTRaMBExDzAN
|
||||||
DQYDVQQDEwZraWJhbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3
|
BgNVBAMTBmtpYmFuYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMOU
|
||||||
nvfL3/26D8EkLso+t9S0m+tSJipLsBWs0dCpc8KRJ/+ijDRnAQ5lOmOAcxt43SNY
|
r52dbZ5dY0BoP2p7CEnOpG+qHTNrOAqZO/OJfniPMtpGmwAMl3WZDca6u2XkV2KE
|
||||||
KFr0EntQEZyYaRwMIM8aPR0WYW/VV5o4fq2o/JnmHqzZJRJCwZq+5WiCiDPt012N
|
qQyevQ2ADk6G3o8S2RU8mO/+UweuCDF7LHuSdxEGTpucidZErmVhEGUOFosL5UeB
|
||||||
mRGYCMUxjlEwejue6diLAeQhZ/sfN4jUp217bMEHrhHrNBWTwwJ+Uk5TBQMhviCW
|
AtIDWxvWwgK+W9Yzt5IEN2HzNCZ6h0dOSk2r9EjVMG5yF4Q6kuqOYxBT7jxoaOtO
|
||||||
LKbsKrfluA6DGHWrXN4pH7Xmaf/Zyc9AYL/nxwv3VQHZzIAK/U/WNCgFJJ3qoFYY
|
OCrgBRummtUga4T13WZ/ZIyyHpXj2+JD4YEmrDyoTa7NLaphv0hnVhHXYoYBI/c6
|
||||||
6TUwDDNa30mSj165OOds9N+VmUlDC3IFiHV3osBWscSU4HJd6QJ8huHrFLLV4y4i
|
2SwwAoBlmtDmlinwSACQ3o/8eLWk0tqkIP14rc3oFh3m7D2c3c2m2HXuyoSDMfGW
|
||||||
u62el47Qr+/8Ut3SzeIXAgMBAAGjYzBhMB0GA1UdDgQWBBQli5f2bYL9jKUA5Uxp
|
beG2IE1Q3idcGmeG3qsCAwEAAaOBjDCBiTAdBgNVHQ4EFgQUMOUM7w5jmIozDvnq
|
||||||
yRRHeCoPJzAfBgNVHSMEGDAWgBQwTCrAjlvQxik3HBocn1PDUunenjAUBgNVHREE
|
RpM779m5GigwHwYDVR0jBBgwFoAUMEwqwI5b0MYpNxwaHJ9Tw1Lp3p4wPAYDVR0R
|
||||||
DTALgglsb2NhbGhvc3QwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEATFNj
|
BDUwM4IUaG9zdC5kb2NrZXIuaW50ZXJuYWyCCWxvY2FsaG9zdIIEZXMwM4IEZXMw
|
||||||
WkTBPfgflGYZD4OsYvfT/rVjFKbJP/u1a0rkzNamA2QKNzI9JTOzONPTyRhe9yVS
|
MoIEZXMwMTAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQCxqvQYXSKqgpdl
|
||||||
zeO8X2rtN63l38dtgMjFQ15Xxnp7GFT7GkXfa1JR+tGSGTgVld8nLUzig+mNmBoR
|
SP4gXgwipAnYsoW9qkgWQODTvSBEzUdOWme0d3j7i2l6Ur/nVSv5YjkqAv1hf/yJ
|
||||||
nE4cNc0JJ1PsXPzfPgJ6WMp2WOoNUrQf2cm42i36Jk+7KGcosfyFMPQILZE34Geo
|
Hrk9h+j29ZO/aQ/KDh5i/gTEUnPw3Bxbw47dfn23tjMWO7NCU1fr5HNztRsa/gQr
|
||||||
DAgCVpNWPgST4HYBUCHMC7S14LHLVdUXPsfGZPEqU5Zf9Hvy61rQC/RdNjnMI6JD
|
e9s07g25u/gTfTi9Fyu0lcRe3bXOLS/mFVcuC5oxuS65R9OlbIsiORkZ2EfwuNUf
|
||||||
s57l9oHASNeEg55NQm01aOmwq/z1DXs3UP2nRmp6XCCfE61ghofO5dtV1j3cZ3f5
|
wAAYOGPIjM2VlQCvBitefsd/SzRKHdxSPy6KSjkO6MGEGo87fr7B7Nx1qp1DVrK7
|
||||||
dzkzSBV7H6+/MD3Y8Q==</ds:X509Certificate>
|
q9XeP1Cuygjg9WTcnsvWvNw8CssyuFM6X/3tGjpPasXwLvNUoG2AairK2AYTWhvS
|
||||||
|
foE31cFg</ds:X509Certificate>
|
||||||
</ds:X509Data>
|
</ds:X509Data>
|
||||||
</ds:KeyInfo>
|
</ds:KeyInfo>
|
||||||
</md:KeyDescriptor>
|
</md:KeyDescriptor>
|
||||||
|
|
|
@ -7,24 +7,25 @@
|
||||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
||||||
<ds:X509Data>
|
<ds:X509Data>
|
||||||
<!-- This certificate is extracted from KBN_CERT_PATH in @kbn/dev-utils and should always be in sync with it -->
|
<!-- This certificate is extracted from KBN_CERT_PATH in @kbn/dev-utils and should always be in sync with it -->
|
||||||
<ds:X509Certificate>MIIDOTCCAiGgAwIBAgIVAN0GVNLw3IaUBuG7t6CeW8w2wyymMA0GCSqGSIb3DQEB
|
<ds:X509Certificate>MIIDYjCCAkqgAwIBAgIUZ2p8K7GMXGk6xwCS9S91BUl1JnAwDQYJKoZIhvcNAQEL
|
||||||
CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
|
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
||||||
ZXJhdGVkIENBMCAXDTIxMTAxMzEwMTU1OFoYDzIwNzExMDAxMTAxNTU4WjARMQ8w
|
cmF0ZWQgQ0EwIBcNMjMwOTIzMTUyMDE0WhgPMjA3MzA5MTAxNTIwMTRaMBExDzAN
|
||||||
DQYDVQQDEwZraWJhbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3
|
BgNVBAMTBmtpYmFuYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMOU
|
||||||
nvfL3/26D8EkLso+t9S0m+tSJipLsBWs0dCpc8KRJ/+ijDRnAQ5lOmOAcxt43SNY
|
r52dbZ5dY0BoP2p7CEnOpG+qHTNrOAqZO/OJfniPMtpGmwAMl3WZDca6u2XkV2KE
|
||||||
KFr0EntQEZyYaRwMIM8aPR0WYW/VV5o4fq2o/JnmHqzZJRJCwZq+5WiCiDPt012N
|
qQyevQ2ADk6G3o8S2RU8mO/+UweuCDF7LHuSdxEGTpucidZErmVhEGUOFosL5UeB
|
||||||
mRGYCMUxjlEwejue6diLAeQhZ/sfN4jUp217bMEHrhHrNBWTwwJ+Uk5TBQMhviCW
|
AtIDWxvWwgK+W9Yzt5IEN2HzNCZ6h0dOSk2r9EjVMG5yF4Q6kuqOYxBT7jxoaOtO
|
||||||
LKbsKrfluA6DGHWrXN4pH7Xmaf/Zyc9AYL/nxwv3VQHZzIAK/U/WNCgFJJ3qoFYY
|
OCrgBRummtUga4T13WZ/ZIyyHpXj2+JD4YEmrDyoTa7NLaphv0hnVhHXYoYBI/c6
|
||||||
6TUwDDNa30mSj165OOds9N+VmUlDC3IFiHV3osBWscSU4HJd6QJ8huHrFLLV4y4i
|
2SwwAoBlmtDmlinwSACQ3o/8eLWk0tqkIP14rc3oFh3m7D2c3c2m2HXuyoSDMfGW
|
||||||
u62el47Qr+/8Ut3SzeIXAgMBAAGjYzBhMB0GA1UdDgQWBBQli5f2bYL9jKUA5Uxp
|
beG2IE1Q3idcGmeG3qsCAwEAAaOBjDCBiTAdBgNVHQ4EFgQUMOUM7w5jmIozDvnq
|
||||||
yRRHeCoPJzAfBgNVHSMEGDAWgBQwTCrAjlvQxik3HBocn1PDUunenjAUBgNVHREE
|
RpM779m5GigwHwYDVR0jBBgwFoAUMEwqwI5b0MYpNxwaHJ9Tw1Lp3p4wPAYDVR0R
|
||||||
DTALgglsb2NhbGhvc3QwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEATFNj
|
BDUwM4IUaG9zdC5kb2NrZXIuaW50ZXJuYWyCCWxvY2FsaG9zdIIEZXMwM4IEZXMw
|
||||||
WkTBPfgflGYZD4OsYvfT/rVjFKbJP/u1a0rkzNamA2QKNzI9JTOzONPTyRhe9yVS
|
MoIEZXMwMTAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQCxqvQYXSKqgpdl
|
||||||
zeO8X2rtN63l38dtgMjFQ15Xxnp7GFT7GkXfa1JR+tGSGTgVld8nLUzig+mNmBoR
|
SP4gXgwipAnYsoW9qkgWQODTvSBEzUdOWme0d3j7i2l6Ur/nVSv5YjkqAv1hf/yJ
|
||||||
nE4cNc0JJ1PsXPzfPgJ6WMp2WOoNUrQf2cm42i36Jk+7KGcosfyFMPQILZE34Geo
|
Hrk9h+j29ZO/aQ/KDh5i/gTEUnPw3Bxbw47dfn23tjMWO7NCU1fr5HNztRsa/gQr
|
||||||
DAgCVpNWPgST4HYBUCHMC7S14LHLVdUXPsfGZPEqU5Zf9Hvy61rQC/RdNjnMI6JD
|
e9s07g25u/gTfTi9Fyu0lcRe3bXOLS/mFVcuC5oxuS65R9OlbIsiORkZ2EfwuNUf
|
||||||
s57l9oHASNeEg55NQm01aOmwq/z1DXs3UP2nRmp6XCCfE61ghofO5dtV1j3cZ3f5
|
wAAYOGPIjM2VlQCvBitefsd/SzRKHdxSPy6KSjkO6MGEGo87fr7B7Nx1qp1DVrK7
|
||||||
dzkzSBV7H6+/MD3Y8Q==</ds:X509Certificate>
|
q9XeP1Cuygjg9WTcnsvWvNw8CssyuFM6X/3tGjpPasXwLvNUoG2AairK2AYTWhvS
|
||||||
|
foE31cFg</ds:X509Certificate>
|
||||||
</ds:X509Data>
|
</ds:X509Data>
|
||||||
</ds:KeyInfo>
|
</ds:KeyInfo>
|
||||||
</md:KeyDescriptor>
|
</md:KeyDescriptor>
|
||||||
|
|
|
@ -7,24 +7,25 @@
|
||||||
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
|
||||||
<ds:X509Data>
|
<ds:X509Data>
|
||||||
<!-- This certificate is extracted from KBN_CERT_PATH in @kbn/dev-utils and should always be in sync with it -->
|
<!-- This certificate is extracted from KBN_CERT_PATH in @kbn/dev-utils and should always be in sync with it -->
|
||||||
<ds:X509Certificate>MIIDOTCCAiGgAwIBAgIVAN0GVNLw3IaUBuG7t6CeW8w2wyymMA0GCSqGSIb3DQEB
|
<ds:X509Certificate>MIIDYjCCAkqgAwIBAgIUZ2p8K7GMXGk6xwCS9S91BUl1JnAwDQYJKoZIhvcNAQEL
|
||||||
CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
|
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
||||||
ZXJhdGVkIENBMCAXDTIxMTAxMzEwMTU1OFoYDzIwNzExMDAxMTAxNTU4WjARMQ8w
|
cmF0ZWQgQ0EwIBcNMjMwOTIzMTUyMDE0WhgPMjA3MzA5MTAxNTIwMTRaMBExDzAN
|
||||||
DQYDVQQDEwZraWJhbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3
|
BgNVBAMTBmtpYmFuYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMOU
|
||||||
nvfL3/26D8EkLso+t9S0m+tSJipLsBWs0dCpc8KRJ/+ijDRnAQ5lOmOAcxt43SNY
|
r52dbZ5dY0BoP2p7CEnOpG+qHTNrOAqZO/OJfniPMtpGmwAMl3WZDca6u2XkV2KE
|
||||||
KFr0EntQEZyYaRwMIM8aPR0WYW/VV5o4fq2o/JnmHqzZJRJCwZq+5WiCiDPt012N
|
qQyevQ2ADk6G3o8S2RU8mO/+UweuCDF7LHuSdxEGTpucidZErmVhEGUOFosL5UeB
|
||||||
mRGYCMUxjlEwejue6diLAeQhZ/sfN4jUp217bMEHrhHrNBWTwwJ+Uk5TBQMhviCW
|
AtIDWxvWwgK+W9Yzt5IEN2HzNCZ6h0dOSk2r9EjVMG5yF4Q6kuqOYxBT7jxoaOtO
|
||||||
LKbsKrfluA6DGHWrXN4pH7Xmaf/Zyc9AYL/nxwv3VQHZzIAK/U/WNCgFJJ3qoFYY
|
OCrgBRummtUga4T13WZ/ZIyyHpXj2+JD4YEmrDyoTa7NLaphv0hnVhHXYoYBI/c6
|
||||||
6TUwDDNa30mSj165OOds9N+VmUlDC3IFiHV3osBWscSU4HJd6QJ8huHrFLLV4y4i
|
2SwwAoBlmtDmlinwSACQ3o/8eLWk0tqkIP14rc3oFh3m7D2c3c2m2HXuyoSDMfGW
|
||||||
u62el47Qr+/8Ut3SzeIXAgMBAAGjYzBhMB0GA1UdDgQWBBQli5f2bYL9jKUA5Uxp
|
beG2IE1Q3idcGmeG3qsCAwEAAaOBjDCBiTAdBgNVHQ4EFgQUMOUM7w5jmIozDvnq
|
||||||
yRRHeCoPJzAfBgNVHSMEGDAWgBQwTCrAjlvQxik3HBocn1PDUunenjAUBgNVHREE
|
RpM779m5GigwHwYDVR0jBBgwFoAUMEwqwI5b0MYpNxwaHJ9Tw1Lp3p4wPAYDVR0R
|
||||||
DTALgglsb2NhbGhvc3QwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEATFNj
|
BDUwM4IUaG9zdC5kb2NrZXIuaW50ZXJuYWyCCWxvY2FsaG9zdIIEZXMwM4IEZXMw
|
||||||
WkTBPfgflGYZD4OsYvfT/rVjFKbJP/u1a0rkzNamA2QKNzI9JTOzONPTyRhe9yVS
|
MoIEZXMwMTAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQCxqvQYXSKqgpdl
|
||||||
zeO8X2rtN63l38dtgMjFQ15Xxnp7GFT7GkXfa1JR+tGSGTgVld8nLUzig+mNmBoR
|
SP4gXgwipAnYsoW9qkgWQODTvSBEzUdOWme0d3j7i2l6Ur/nVSv5YjkqAv1hf/yJ
|
||||||
nE4cNc0JJ1PsXPzfPgJ6WMp2WOoNUrQf2cm42i36Jk+7KGcosfyFMPQILZE34Geo
|
Hrk9h+j29ZO/aQ/KDh5i/gTEUnPw3Bxbw47dfn23tjMWO7NCU1fr5HNztRsa/gQr
|
||||||
DAgCVpNWPgST4HYBUCHMC7S14LHLVdUXPsfGZPEqU5Zf9Hvy61rQC/RdNjnMI6JD
|
e9s07g25u/gTfTi9Fyu0lcRe3bXOLS/mFVcuC5oxuS65R9OlbIsiORkZ2EfwuNUf
|
||||||
s57l9oHASNeEg55NQm01aOmwq/z1DXs3UP2nRmp6XCCfE61ghofO5dtV1j3cZ3f5
|
wAAYOGPIjM2VlQCvBitefsd/SzRKHdxSPy6KSjkO6MGEGo87fr7B7Nx1qp1DVrK7
|
||||||
dzkzSBV7H6+/MD3Y8Q==</ds:X509Certificate>
|
q9XeP1Cuygjg9WTcnsvWvNw8CssyuFM6X/3tGjpPasXwLvNUoG2AairK2AYTWhvS
|
||||||
|
foE31cFg</ds:X509Certificate>
|
||||||
</ds:X509Data>
|
</ds:X509Data>
|
||||||
</ds:KeyInfo>
|
</ds:KeyInfo>
|
||||||
</md:KeyDescriptor>
|
</md:KeyDescriptor>
|
||||||
|
|
|
@ -144,5 +144,6 @@
|
||||||
"@kbn/coloring",
|
"@kbn/coloring",
|
||||||
"@kbn/profiling-utils",
|
"@kbn/profiling-utils",
|
||||||
"@kbn/profiling-data-access-plugin",
|
"@kbn/profiling-data-access-plugin",
|
||||||
|
"@kbn/es",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue