-
Notifications
You must be signed in to change notification settings - Fork 477
[ti_recordedfuture] Add Support for Playbook and Triggered Alerts #13494
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Pinging @elastic/security-service-integrations (Team:Security-Service Integrations) |
🚀 Benchmarks reportTo see the full report comment with |
categories: ["security", "threat_intel"] | ||
conditions: | ||
kibana: | ||
version: "^8.13.0 || ^9.0.0" | ||
version: "^8.18.0 || ^9.0.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because we are coupling agentless update with the new datastreams, users before 8.18.0
wont be able to use these new datastreams. Is that fine @jamiehynds / @cpascale43 ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kcreddy I think that's ok, should we document it somewhere though?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason this could not be broken into two changes, one for the new data streams and one for the agentless update?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same being done here #13680 (comment). Same clarification also applies there. cc: @janvi-elastic
I think we should decouple the agentless update and new datastream enhancements unless there is any strong reason not to.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@efd6 @kcreddy
The new data streams and dashboards have been implemented and tested on version 8.18. While downgrading to an earlier version is possible, it would require significant effort. Is there any key reason why we cannot proceed with the current implementation without decoupling?
Going forward, we will ensure that enhancement changes and agentless implementations are decoupled to avoid similar challenges.
Please let me know your thoughts.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there any key reason why we cannot proceed with the current implementation without decoupling?
More users can benefit from the enhancement. Example
Going forward, we will ensure that enhancement changes and agentless implementations are decoupled to avoid similar challenges.
I'm okay with this, but please make sure to de-couple agentless update for future enhancement tasks.
cc: @piyush-elastic
packages/ti_recordedfuture/data_stream/legacy_alert/agent/stream/cel.yml.hbs
Outdated
Show resolved
Hide resolved
@@ -10,15 +10,54 @@ from multiple entities, it's necessary to define one integration for each. | |||
Alternatively, it's also possible to use the integration to fetch custom Fusion files | |||
by supplying the URL to the CSV file as the _Custom_ _URL_ configuration option. | |||
|
|||
It also fetches [Playbook Alerts](https://api.recordedfuture.com/playbook-alert) from the Recorded Future API and [Legacy Alerts](https://api.recordedfuture.com/v2/#!/Alerts/Alert_Notification_Search) via the Recorded Future Connect API, ensuring comprehensive threat intelligence coverage. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What was the reason for calling them Legacy Alerts? I don't see them as deprecated in the API doc (/v3
).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In their Recorded Future APIs doc, under the description of connect api, its being written that this is the legacy alert. The same has been mentioned in the issue requirement.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cpascale43 can you confirm if the alerts retrieved from Connect API should be called Legacy Alerts
?
For example, the Microsoft connector for recorded future calls them Triggered Alerts
just like the Connect API doc.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kcreddy good catch, let's go with Triggered Alerts
then
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks Carrie.
@mohitjha-elastic, please update the data_stream name.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kcreddy Updated the PR with the changes. Can you please take a look?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
...cordedfuture/data_stream/legacy_alert/_dev/test/pipeline/test-legacy-alert.log-expected.json
Outdated
Show resolved
Hide resolved
packages/ti_recordedfuture/data_stream/playbook_alert/agent/stream/cel.yml.hbs
Show resolved
Hide resolved
1. Add uri_parts processor. 2. Update navigation link style in dashboard table of contents. 3. Remove blank space in readme. 4. Update dashboard image.
packages/ti_recordedfuture/_dev/deploy/docker/files/config-cel.yml
Outdated
Show resolved
Hide resolved
packages/ti_recordedfuture/_dev/deploy/docker/files/config-cel.yml
Outdated
Show resolved
Hide resolved
"note_author": null, | ||
"note_date": "2025-03-31T04:03:56.425Z", | ||
"status_date": "2025-03-31T04:03:56.425Z", | ||
"triggered": "2026-03-31T04:03:56.425Z", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"triggered": "2026-03-31T04:03:56.425Z", | |
"triggered": "2500-03-31T04:03:56.425Z", |
"note_author": null, | ||
"note_date": "2025-03-31T04:03:56.425Z", | ||
"status_date": "2025-03-31T04:03:56.425Z", | ||
"triggered": "2027-03-31T04:03:56.425Z", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"triggered": "2027-03-31T04:03:56.425Z", | |
"triggered": "3000-03-31T04:03:56.425Z", |
packages/ti_recordedfuture/data_stream/playbook_alert/agent/stream/cel.yml.hbs
Outdated
Show resolved
Hide resolved
packages/ti_recordedfuture/data_stream/legacy_alert/agent/stream/cel.yml.hbs
Outdated
Show resolved
Hide resolved
packages/ti_recordedfuture/data_stream/playbook_alert/manifest.yml
Outdated
Show resolved
Hide resolved
categories: ["security", "threat_intel"] | ||
conditions: | ||
kibana: | ||
version: "^8.13.0 || ^9.0.0" | ||
version: "^8.18.0 || ^9.0.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason this could not be broken into two changes, one for the new data streams and one for the agentless update?
packages/ti_recordedfuture/data_stream/playbook_alert/elasticsearch/ingest_pipeline/default.yml
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mohitjha-elastic, can you change legacy
to triggered
in following places as well?
- PR title
- commit message
- pipeline test file names
Rename pipeline test files from legacy to triggered alert.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM for my comments
"error": { | ||
"code": string(resp.StatusCode), | ||
"id": string(resp.Status), | ||
"message": "POST " + state.url.trim_right("/") + "/playbook-alert/search" + |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"message": "POST " + state.url.trim_right("/") + "/playbook-alert/search" + | |
"message": "POST " + state.url.trim_right("/") + "/playbook-alert/search: " + |
"message": "POST " + state.url.trim_right("/") + "/playbook-alert/" + | ||
(string(state.worklist.data[state.next].category) == "cyber_vulnerability" ? | ||
"vulnerability" | ||
: | ||
string(state.worklist.data[state.next].category)) | ||
+ "/" + string(state.worklist.data[state.next].playbook_alert_id) + | ||
( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure we need this much detail here; this is just to allow the user to see which part of the program the request failed in, not the exact request.
"message": "POST " + state.url.trim_right("/") + "/playbook-alert/" + | |
(string(state.worklist.data[state.next].category) == "cyber_vulnerability" ? | |
"vulnerability" | |
: | |
string(state.worklist.data[state.next].category)) | |
+ "/" + string(state.worklist.data[state.next].playbook_alert_id) + | |
( | |
"message": "POST " + state.url.trim_right("/") + "/playbook-alert/:" + ( |
"error": { | ||
"code": string(resp.StatusCode), | ||
"id": string(resp.Status), | ||
"message": "GET "+ state.url.trim_right("/") + "/v3/alerts:" + ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"message": "GET "+ state.url.trim_right("/") + "/v3/alerts:" + ( | |
"message": "GET "+ state.url.trim_right("/") + "/v3/alerts: " + ( |
Minor changes in the cel files, refactor the message in case of error.
|
💚 Build Succeeded
History
|
Package ti_recordedfuture - 1.30.0 containing this change is available at https://epr.elastic.co/package/ti_recordedfuture/1.30.0/ |
Proposed Commit Message
Checklist
changelog.yml
file.How to test this PR locally
Clone integrations repo.
Install the elastic package locally.
Start the elastic stack using the elastic package.
Move to integrations/packages/ti_recordedfuture directory.
Run the following command to run tests.
elastic-package test -v
Related issues
Screenshots