Skip to content

[Enhancement] [integration] Add EclecticIQ Advanced CSV Outgoing feed integration - #8465

Merged
kcreddy merged 20 commits into
elastic:mainfrom
eclecticiq:integration-eclecticiq
Dec 18, 2023
Merged

[Enhancement] [integration] Add EclecticIQ Advanced CSV Outgoing feed integration#8465
kcreddy merged 20 commits into
elastic:mainfrom
eclecticiq:integration-eclecticiq

Conversation

@petarc-eiq

Copy link
Copy Markdown
Contributor

Proposed commit message

Add Eclectic IQ integration with Advanced CSV Observables Outgoing Feed data stream.

The integration's data stream downloads outgoing feed content blocks data in CSV format, parses the CSV data and submits it to the ingestion pipeline.

Ingestion pipeline takes the input data and populates appropriate ECS fields.

The integration has a transform that creates "latest" index and populates it with records from data stream index that doesn't have "deleted_at" date, which is populated only for input records that are deleted from source dataset. This way, result index has only the latest data and provides a retention policy.

Checklist

  • I have reviewed tips for building integrations and this pull request is aligned with them.
  • I have verified that all data streams collect metrics or logs.
  • I have added an entry to my package's changelog.yml file.
  • I have verified that Kibana version constraints are current according to guidelines.

Author's Checklist

  • Review documentation

How to test this PR locally

Prerequiseites

  • Advanced CSV Observables Outgoing Feed with populated dataset(s).
  • EIQ IC API key.

Steps:

  • Install the integration.
  • Set up the integration (EIQ IC URL, API token, outgoing feed ID).
  • Check "logs-ti_eclecticiq_latest.observables-*" index for data.
@cla-checker-service

cla-checker-service Bot commented Nov 10, 2023

Copy link
Copy Markdown

💚 CLA has been signed

@elasticmachine

elasticmachine commented Nov 13, 2023

Copy link
Copy Markdown

💚 Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS
Pipeline View Test View Changes Artifacts preview preview

Expand to view the summary

Build stats

  • Start Time: 2023-12-14T11:52:20.109+0000

  • Duration: 15 min 28 sec

Test stats 🧪

Test Results
Failed 0
Passed 5
Skipped 0
Total 5

🤖 GitHub comments

Expand to view the GitHub comments

To re-run your PR in the CI, just comment with:

  • /test : Re-trigger the build.

@elasticmachine

Copy link
Copy Markdown

Pinging @elastic/security-external-integrations (Team:Security-External Integrations)

@jamiehynds jamiehynds added the New Integration Issue or pull request for creating a new integration package. label Nov 14, 2023
@kcreddy

kcreddy commented Dec 1, 2023

Copy link
Copy Markdown
Contributor

/test

Comment thread packages/ti_eclecticiq/manifest.yml Outdated
Comment thread packages/ti_eclecticiq/manifest.yml Outdated
Comment thread packages/ti_eclecticiq/manifest.yml Outdated
Comment thread .github/CODEOWNERS Outdated
Comment thread packages/ti_eclecticiq/manifest.yml Outdated
Comment thread packages/ti_eclecticiq/data_stream/outgoing_feed/fields/base-fields.yml Outdated
@kcreddy

kcreddy commented Dec 4, 2023

Copy link
Copy Markdown
Contributor

/test

@kcreddy

kcreddy commented Dec 5, 2023

Copy link
Copy Markdown
Contributor

@petarc-eiq Looks like the CI is failing on older README file. Can you run elastic-package build && elastic-package format && elastic-package lint && elastic-package check && elastic-package build to rebuild and update the README file.

- Removed reference to non-existent log reference section
- Added one more way to filter TI results to show only EclecticIQ data
@zed-eiq

zed-eiq commented Dec 5, 2023

Copy link
Copy Markdown
Contributor

@\petarc-eiq Looks like the CI is failing on older README file. Can you run elastic-package build && elastic-package format && elastic-package lint && elastic-package check && elastic-package build to rebuild and update the README file.

done!

@kcreddy

kcreddy commented Dec 5, 2023

Copy link
Copy Markdown
Contributor

/test

@elasticmachine

elasticmachine commented Dec 5, 2023

Copy link
Copy Markdown

🌐 Coverage report

Name Metrics % (covered/total) Diff
Packages 100.0% (1/1) 💚
Files 100.0% (1/1) 💚 3.888
Classes 100.0% (1/1) 💚 3.888
Methods 87.5% (14/16) 👎 -4.806
Lines 81.407% (324/398) 👎 -7.337
Conditionals 100.0% (0/0) 💚
Comment thread packages/ti_eclecticiq/elasticsearch/transform/latest_ioc/transform.yml Outdated
Comment thread packages/ti_eclecticiq/manifest.yml
Comment thread packages/ti_eclecticiq/_dev/build/docs/README.md
@kcreddy

kcreddy commented Dec 5, 2023

Copy link
Copy Markdown
Contributor

@petarc-eiq @zed-eiq The CI is now failing on pipeline tests. Can you please check if they are successful on your end and commit updated *-expected.json file.

@petarc-eiq

Copy link
Copy Markdown
Contributor Author

/test

@kcreddy

kcreddy commented Dec 6, 2023

Copy link
Copy Markdown
Contributor

/test

@kcreddy

kcreddy commented Dec 7, 2023

Copy link
Copy Markdown
Contributor

/test

Comment thread packages/ti_eclecticiq/data_stream/outgoing_feed/fields/ecs.yml Outdated
@kcreddy

kcreddy commented Dec 12, 2023

Copy link
Copy Markdown
Contributor

/test

@kcreddy

kcreddy commented Dec 13, 2023

Copy link
Copy Markdown
Contributor

/test

@kcreddy

kcreddy commented Dec 13, 2023

Copy link
Copy Markdown
Contributor

@petarc-eiq Looks like the system tests are failing now. Can you check on your local if they are successfully running?

Comment thread packages/ti_eclecticiq/manifest.yml Outdated
@@ -0,0 +1,41 @@
format_version: 2.8.0
name: ti_eclecticiq
title: EclecticIQ Outgoing Feeds Integration

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@petarc-eiq @kcreddy as discussed, can we shorten the title to EclecticIQ and also reflect those changes in data stream names, documentation, etc too.

Comment thread packages/ti_eclecticiq/manifest.yml Outdated
version: 1.0.0
source:
license: Elastic-2.0
description: Download data from EclecticIQ IC outgoing feeds

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@petarc-eiq @kcreddy can we adjust this description to ensure alignment with other integrations. Ingest threat intelligence indicators from EclecticIQ with Elastic Agent

@kcreddy kcreddy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@petarc-eiq Based on the changes Jamie suggested to the integration's title and description, I added some changes you need to make.

@@ -0,0 +1,143 @@
# EclecticIQ Outgoing Feeds Integration

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# EclecticIQ Outgoing Feeds Integration
# EclecticIQ Integration
@@ -0,0 +1,143 @@
# EclecticIQ Outgoing Feeds Integration

The EclecticIQ Outgoing Feeds integration

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The EclecticIQ Outgoing Feeds integration
The EclecticIQ integration
Comment on lines +15 to +22
## Data streams

The EclecticIQ Outgoing Feeds integration
collects one type of data streams: logs.

**Logs** collected from this integration
are collections of threat intelligence observables
ingested from the connected EclecticIQ Intelligence Center outgoing feed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Data streams
The EclecticIQ Outgoing Feeds integration
collects one type of data streams: logs.
**Logs** collected from this integration
are collections of threat intelligence observables
ingested from the connected EclecticIQ Intelligence Center outgoing feed.
## Data streams
The EclecticIQ integration
collects one type of data: logs.
**Logs** collected from this integration
are collections of threat intelligence observables
ingested from the connected EclecticIQ Intelligence Center outgoing feed. These are available in the datastream named `threat`.
### Update strategies

You must set the **same** _Update strategy_ for
both the EclecticIQ Outgoing Feeds Integration instance

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
both the EclecticIQ Outgoing Feeds Integration instance
both the EclecticIQ Integration instance
@@ -0,0 +1,43 @@
title: "Poll Outgoing feed"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
title: "Poll Outgoing feed"
title: EclecticIQ Threat

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(i didn't realise that github has a "commit suggestion" feature 😅 )

I'm leaving this as "Poll Outgoing feed" if that's okay! This refers to functionality on EIQ IC, and makes it clear that the outgoing feed feature is what's being used here (there are other ways to get data out of EIQ IC)

- name: event.dataset
type: constant_keyword
description: Event dataset
value: ti_eclecticiq.outgoing_feed

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
value: ti_eclecticiq.outgoing_feed
value: ti_eclecticiq.threat
- name: "@timestamp"
type: date
description: Event timestamp.
- name: eclecticiq.outgoing_feed

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- name: eclecticiq.outgoing_feed
- name: eclecticiq.threat
@@ -0,0 +1,31 @@
source:
index:
- "logs-ti_eclecticiq.outgoing_feed-*"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- "logs-ti_eclecticiq.outgoing_feed-*"
- "logs-ti_eclecticiq.threat-*"
latest:
unique_key:
- event.dataset
- eclecticiq.outgoing_feed.observable_id

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- eclecticiq.outgoing_feed.observable_id
- eclecticiq.threat.observable_id
delay: 120s
retention_policy:
time:
field: eclecticiq.outgoing_feed.deleted_at

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
field: eclecticiq.outgoing_feed.deleted_at
field: eclecticiq.threat.deleted_at
@zed-eiq

zed-eiq commented Dec 13, 2023

Copy link
Copy Markdown
Contributor

we're pending one more README change to include the list of IoCs we support/don't support in this version 🙏

@kcreddy

kcreddy commented Dec 13, 2023

Copy link
Copy Markdown
Contributor

/test

@kcreddy

kcreddy commented Dec 14, 2023

Copy link
Copy Markdown
Contributor

/test

@elasticmachine

Copy link
Copy Markdown

🚀 Benchmarks report

To see the full report comment with /test benchmark fullreport

@kcreddy kcreddy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@petarc-eiq @zed-eiq Looks like the CI is passing now 🚀
PR LGTM 👍🏼
Is there anything else you would like to add to this PR or can I proceed merging it?

@petarc-eiq

Copy link
Copy Markdown
Contributor Author

@petarc-eiq @zed-eiq Looks like the CI is passing now 🚀 PR LGTM 👍🏼 Is there anything else you would like to add to this PR or can I proceed merging it?

Hello @kcreddy we're doing a round of smoke testing with the latest updates, should be done soon. When we get verification, we are good to go! We will send confirmation as soon as possible. Thanks!

@petarc-eiq

Copy link
Copy Markdown
Contributor Author

@zed-eiq Are we done with documentation? Smoke tests went as expected, so if @zed-eiq confirms, we are good to go with the merge 🙂 @kcreddy

@zed-eiq

zed-eiq commented Dec 15, 2023

Copy link
Copy Markdown
Contributor

i'm done with readme updates! we're good to go from our end 🙏

@kcreddy
kcreddy merged commit 24da00d into elastic:main Dec 18, 2023
@elasticmachine

Copy link
Copy Markdown

Package ti_eclecticiq - 0.1.0 containing this change is available at https://epr.elastic.co/search?package=ti_eclecticiq

@petarc-eiq
petarc-eiq deleted the integration-eclecticiq branch December 18, 2023 15:25
@andrewkroh andrewkroh added the Integration:ti_eclecticiq EclecticIQ (Partner supported) label Jul 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Integration:ti_eclecticiq EclecticIQ (Partner supported) New Integration Issue or pull request for creating a new integration package.

6 participants