Repository navigation
[ti_recordedfuture] Add Support for Playbook and Triggered Alerts - #13494
Conversation
|
Pinging @elastic/security-service-integrations (Team:Security-Service Integrations) |
🚀 Benchmarks reportTo see the full report comment with |
| conditions: | ||
| kibana: | ||
| version: "^8.13.0 || ^9.0.0" | ||
| version: "^8.18.0 || ^9.0.0" |
There was a problem hiding this comment.
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.
@kcreddy I think that's ok, should we document it somewhere though?
There was a problem hiding this comment.
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.
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.
@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.
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
| 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.
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.
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.
@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.
@kcreddy good catch, let's go with Triggered Alerts then
There was a problem hiding this comment.
Thanks Carrie.
@mohitjha-elastic, please update the data_stream name.
There was a problem hiding this comment.
@kcreddy Updated the PR with the changes. Can you please take a look?
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.
| "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.
| "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.
| "triggered": "2027-03-31T04:03:56.425Z", | |
| "triggered": "3000-03-31T04:03:56.425Z", |
| conditions: | ||
| kibana: | ||
| version: "^8.13.0 || ^9.0.0" | ||
| version: "^8.18.0 || ^9.0.0" |
There was a problem hiding this comment.
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.
@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.
| "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.
| "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.
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.
| "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.ymlfile.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 -vRelated issues
Screenshots