# Enrichment

## Overview

Enrichment means, effectively, taking a particular field in an incoming log, and expanding it with additional information. This can be especially useful when organizational data (like employee records or cloud infrastructure account data) needs to be referenced in your detections or passed on to an alert.

In Panther, you can store this additional enrichment data in a [custom enrichment table](#custom-enrichments), or enable a Panther-managed enrichment. Using these enrichment capabilities in Panther, you can cut through background noise to write higher-fidelity detections and deliver more informative alerts.

Once an enrichment source is set up, you can [view stored data](#viewing-stored-enrichment-data) and [enriched log events](#viewing-log-events-with-enrichment-data).

Enrichment sources or tables are interchangeably referred to as "lookup tables."

## Custom enrichments

Custom enrichments let you add custom context to your detections and alerts. Using enrichments saves time by enhancing detections, reducing alert noise, and speeding up investigations.

Custom enrichments may be useful to:

* Convert IPs to asset/user names, or geolocation details
* Group IPs by type (e.g., development vs. production)
* Append context to AWS Account IDs

To learn how to set up custom enrichments, see [Custom Enrichments](https://docs.panther.com/enrichment/custom).

## Panther-managed enrichments

### Anomali ThreatStream

Anomali ThreatStream aggregates multiple threat feeds into a single high-fidelity repository by normalizing, deduplicating, removing false positives from, and enriching threat data—then associating all related threat indicators.

The Panther-managed Anomali ThreatStream enrichment matches your Anomali indicator data against log events ingested into Panther for high-fidelity alerts.

Anomali ThreatStream is a ["bring your own API key" log puller](#bring-your-own-api-key-log-pullers). To learn how to use Anomali ThreatStream enrichment, see [Anomali ThreatStream](https://docs.panther.com/enrichment/anomali-threatstream).

### Google Workspace user profiles

Panther can retrieve and store user data from [Google Workspace](https://docs.panther.com/enrichment/google-workspace) once you've configured it as a log source. This data can then be referred to in detection logic and search queries.

Learn how to configure your Google Workspace log source for enrichment on [Google Workspace Profiles](https://docs.panther.com/enrichment/google-workspace).

### GreyNoise

[GreyNoise](https://www.greynoise.io/) provides real-time intelligence about internet-wide scan and attack activity. GreyNoise helps security teams filter out background noise by identifying and labeling IPs conducting mass scanning, enabling faster, more accurate threat detection.

To learn how to enrich your logs with GreyNoise threat intelligence data, see [GreyNoise](https://docs.panther.com/enrichment/greynoise).

### IPinfo

IPinfo provides contextual information about IP addresses, including geolocation, ASN and privacy data. You can use IPinfo data to identify suspicious or high-risk actors.

To learn how to leverage IPinfo datasets, see [IPinfo](https://docs.panther.com/enrichment/ipinfo).

### **Open Threat Exchange (OTX)**

Open Threat Exchange (OTX) is AlienVault's community-driven threat intelligence platform, where contributors collaborate to identify emerging threats. OTX enrichment in Panther matches OTX pulse data against log events ingested into Panther to generate higher-fidelity alerts.

OTX is a ["bring your own API key" log puller](#bring-your-own-api-key-log-pullers). To learn how to use OTX enrichment, see [Open Threat Exchange (OTX)](https://docs.panther.com/enrichment/otx).

### MISP

MISP warning lists are collections of well-known indicators that can be associated to potential false positives or errors. This context may be useful to help you evaluate whether a certain threat indicator is legitimate.

To learn how to enable MISP warning list enrichment, see [MISP Warning Lists](https://docs.panther.com/enrichment/misp).

### Okta user and device profiles

Panther can retrieve and store user and device data from [Okta](https://docs.panther.com/enrichment/okta) once you've configured it as a log source. This data can then be referred to in detection logic and search queries.

Learn how to configure your Okta log source for enrichment on [Okta Profiles](https://docs.panther.com/enrichment/okta).

### Snowflake

Enrich logs with data from your Snowflake instance, like user and role information.

To learn how to set up Snowflake enrichment, see [Snowflake Enrichment](https://docs.panther.com/enrichment/snowflake).

### Tor Exit Nodes

Tor is an anonymizing network sometimes used by bad actors to hide their location. The Panther-managed Tor enrichment contains IP addresses for the Tor Exit Nodes.

To learn how to use Tor Exit Nodes enrichment, see [Tor Exit Nodes](https://docs.panther.com/enrichment/tor-exit-nodes).

### TrailDiscover

TrailDiscover is a continuously evolving repository of CloudTrail events containing detailed descriptions, MITRE ATT\&CK insights, real-world incident references, research links, and information about security implications.

To learn how to enrich with TrailDiscover, see [TrailDiscover](https://docs.panther.com/enrichment/traildiscover).

## Panther-managed enrichment methods

### "Bring your own API key" log pullers

This enrichment source requires you to create an API key in the enrichment source, then input it into Panther:

* [Anomali ThreatStream](https://docs.panther.com/enrichment/anomali-threatstream)
* [GreyNoise](https://docs.panther.com/enrichment/greynoise)
* [Open Threat Exchange (OTX)](https://docs.panther.com/enrichment/otx)

### Panther log source pullers

These enrichment sources pull enrichment data from a [log source](https://docs.panther.com/data-onboarding/supported-logs) you've set up in Panther.

* [Google Workspace Profiles](https://docs.panther.com/enrichment/google-workspace)
* [Okta Profiles](https://docs.panther.com/enrichment/okta)
* [Snowflake](https://docs.panther.com/enrichment/snowflake)

### Additional enrichment sources

These enrichment sources can be enabled using Detection Packs or the [Panther Analysis Tool](https://docs.panther.com/panther-developer-workflows/detections-repo/pat/managing-enrichment):

* [IPinfo](https://docs.panther.com/enrichment/ipinfo)
* [MISP Warning Lists](https://docs.panther.com/enrichment/misp)
* [Tor Exit Nodes](https://docs.panther.com/enrichment/tor-exit-nodes)
* [TrailDiscover](https://docs.panther.com/enrichment/traildiscover)

## Viewing and managing enrichments

Use the enrichment details page to view, validate, and manage your enrichment data.

To access the enrichment details page:

1. In the left-side navigation bar in your Panther Console, click **Configure** > **Enrichments**.
2. Click the name of the enrichment you'd like to view the details of.
   * You'll be taken to to enrichment details page, where you can navigate between the three tabs: **Lookup Table**, **Enriched Log Types**, and **Schema**.

<figure><img src="https://4011785613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2FRYQcPVN9Sz8TVfJJ4WDi%2FScreenshot%202025-12-05%20at%2010.37.43%E2%80%AFAM.png?alt=media&#x26;token=50b12ad3-0c9f-4703-8501-2a1d9704dfab" alt="An &#x22;ipinfo_location_datalake&#x22; table is shown, with columns like &#x22;City,&#x22; &#x22;Country,&#x22; and &#x22;Joinkey.&#x22;"><figcaption></figcaption></figure>

{% hint style="info" %}
A "Lookup Table Not Available" message will be shown for [IPInfo](https://docs.panther.com/enrichment/ipinfo) CIDR datasets (which aren't stored in the data lake).
{% endhint %}

## Viewing log events with enrichment data

Log events are enriched before being run through associated detections, but they are not enriched when stored in the data lake. This means log data queried from the data lake will not contain [`p_enrichment`](https://docs.panther.com/search/panther-fields#enrichmentfields). ([Signals](https://docs.panther.com/detections/signals) queried from `panther_signals.public.correlation_signals`, however, do contain enrichment data.)

It may be useful to know how an enriched log event will look when it's processed by your detection(s). For an exact recreation, you can [enrich a log event as a unit test](#enriching-a-log-event-as-a-unit-test). For an approximate recreation, you can [perform a join in Data Explorer](#joining-log-and-enrichment-data).

You can also view the enrichment data associated with a particular event value using Search—[learn how to do so here](https://docs.panther.com/search/search-tool#how-to-explore-enrichment-data-for-a-value-from-results).

### Enriching a log event as a unit test

For a perfect recreation of how an enriched log event will look as it's processed by your detection(s), [create a unit test](https://docs.panther.com/detections/testing#how-to-create-a-test), add the event, and [enrich the test data](https://docs.panther.com/detections/testing#enrich-test-data). (It's not necessary to then save the unit test.)

### Joining log and enrichment data

In [Data Explorer](https://docs.panther.com/search/data-explorer), you can perform a join between the log and enrichment data with a query like the following:

```sql
with logs as 
(select * from panther_logs.public.my_logs),
lookup as (select * from panther_lookups.public.my_lookup_table) 
select logs.fieldA, lookup.fieldB 
from logs join lookup on logs.selector_field = lookup.key_field
```

## Troubleshooting enrichment

Visit the Panther Knowledge Base to [view articles about enrichment](https://help.panther.com/Enrichment) that answer frequently asked questions and help you resolve common errors and issues.
