← Files CrowdStrike Falcon FusionARCHIVED FILE

use-cases/lookup-enrichment.md

2.93 KB · Oct 2, 2026 · 00:31 UTC

↓ Download file

---
name: lookup-enrichment
description: Create and use lookup tables with third-party data for automated detection enrichment in Next-Gen SIEM
source: https://www.crowdstrike.com/tech-hub/ng-siem/falcon-next-gen-siem-creating-a-lookup-table-with-3rd-party-data-for-automated-enrichment/
skills: [authoring, lookup-files]
capabilities: [workflow, lookup-file, enrichment]
---

## When to Use

User wants to enrich detections or events with third-party context held in a reference table —
IP reputation, user risk scores, asset metadata, or an IOC list. A lookup file stores the
reference data in Falcon Next-Gen SIEM, and a CQL `match()` query joins it onto live events so
each detection carries the extra context automatically.

## Pattern

1. **Create the lookup file.** Use the **lookup-files** skill to upload a CSV with a header row
   whose first column is the match key (e.g. `ip,reputation,source`). List first to avoid a
   silent overwrite (`list_lookups.py --search`), then `create_lookup.py --domain falcon`.
2. **Verify it landed.** `get_lookup.py --name "<file>.csv"` confirms the content before any
   query depends on it.
3. **Enrich with `match()`.** In a CQL query (Next-Gen SIEM search or an Event Query action in a
   workflow), join the lookup onto events:
   ```
   match(file="ip-reputation.csv", column=ip, field=src_ip, include=reputation)
   ```
   The matched columns appear as new fields on each event.
4. **Act on the enriched data.** In a workflow, branch on the enriched field with a CEL
   condition (e.g. notify or contain when `reputation == "malicious"`).
5. **Keep the table fresh.** Re-upload with `update_lookup.py` to refresh third-party data;
   the same filename keeps existing `match()` queries working.

## Key Actions

| Step | Tool / Action | Purpose |
|------|---------------|---------|
| Upload reference data | `create_lookup.py` (lookup-files skill) | Stores the third-party table in the `falcon` domain |
| Verify | `get_lookup.py` | Confirms content before queries depend on it |
| Join onto events | CQL `match()` | Enriches events with lookup columns |
| Branch on enrichment | Condition (CEL gateway) | Routes the workflow on the enriched field |
| Refresh | `update_lookup.py` | Updates data without breaking `match()` references |

**How they work together:** the lookup-files skill owns the *file* (create, verify, refresh);
the workflow (authoring skill) owns the *query and the response*. `match()` is the seam between
them — column names are case-sensitive and must match the CSV header exactly. See
`skills/lookup-files/references/cql-match-function.md` for full `match()` syntax.

## When to Route Elsewhere

Stay here for reference-table enrichment driven by `match()`. For live, per-event API lookups
(calling an external reputation API at detection time) use the **http-actions** pattern instead.
If the enrichment needs a custom UI or a serverless function to transform results, route to
foundry-skills (`crowdstrike-falcon-foundry`).

SHA-256: e18636bfb21f9eb2628d8eb557d10e9c7874ca00ee5bdf638842f92f4a3b3a46