Digital Guardian
Use Digital Guardian Integration to fetch incidents and to programmatically add or remove entries from watchlists and component lists.
Data Enrichment & Threat Intelligence · Digital Guardian
Details
| ID | Digital Guardian |
|---|---|
| Provider | Fortra |
| Category | Data Enrichment & Threat Intelligence |
| From Version | 5.0.0 |
| Docker Image | demisto/python3:3.12.8.3296088 |
| Supported Modules | Agentix XSIAM |
README
Digital Guardian ARC Watchlist Integration
This integration was integrated and tested with version 2.11.0 of Digital Guardian ARC
Configure Digital Guardian in Cortex
| Parameter | Description | Required |
|---|---|---|
| auth_url | auth_url | True |
| arc_url | arc_url | True |
| insecure | Allow Insecure HTTPS | False |
| client_id | client_id | True |
| client_secret | client_secret | True |
| export_profile | export_profile | True |
Commands
You can execute these commands from the CLI, as part of an automation, or in a playbook.
After you successfully execute a command, a DBot message appears in the War Room with the command details.
digitalguardian-add-watchlist-entry
Add Watchlist Entry
Base Command
digitalguardian-add-watchlist-entry
Input
| Argument Name | Description | Required |
|---|---|---|
| watchlist_name | Watchlist Name | Required |
| watchlist_entry | Watchlist Entry | Required |
Context Output
There is no context output for this command.
Command Example
!digitalguardian-add-watchlist-entry watchlist_entry=playbook_test watchlist_name=atac_test
Context Example
{}
Human Readable Output
added watchlist entry (playbook_test) to watchlist name (atac_test)
digitalguardian-check-watchlist-entry
Check Watchlist Entry
Base Command
digitalguardian-check-watchlist-entry
Input
| Argument Name | Description | Required |
|---|---|---|
| watchlist_name | Watchlist Name | Required |
| watchlist_entry | Watchlist Entry | Required |
Context Output
| Path | Type | Description |
|---|---|---|
| DigitalGuardian.Watchlist.Found | boolean | Watchlist Found |
Command Example
!digitalguardian-check-watchlist-entry watchlist_entry=playbook_test watchlist_name=atac_test
Context Example
{
"DigitalGuardian": {
"Watchlist": {
"Found": true
}
}
}
Human Readable Output
Watchlist found
digitalguardian-remove-watchlist-entry
Remove Watchlist Entry
Base Command
digitalguardian-remove-watchlist-entry
Input
| Argument Name | Description | Required |
|---|---|---|
| watchlist_name | Watchlist Name | Required |
| watchlist_entry | Watchlist Entry | Optional |
Context Output
There is no context output for this command.
Command Example
!digitalguardian-remove-watchlist-entry watchlist_entry=playbook_test watchlist_name=atac_test
Context Example
{}
Human Readable Output
removed watchlist entry (playbook_test) from watchlist name (atac_test)
digitalguardian-add-componentlist-entry
Add Componentlist Entry
Base Command
digitalguardian-add-componentlist-entry
Input
| Argument Name | Description | Required |
|---|---|---|
| componentlist_name | Componentlist Name | Required |
| componentlist_entry | Componentlist Entry | Required |
Context Output
There is no context output for this command.
Command Example
!digitalguardian-add-componentlist-entry componentlist_entry=email@example.com componentlist_name="Test - JLL - Email Address Blacklist"
Context Example
{}
Human Readable Output
added componentlist entry (email@example.com) to componentlist name (Test - JLL - Email Address Blacklist)
digitalguardian-check-componentlist-entry
Check Componentlist Entry
Base Command
digitalguardian-check-componentlist-entry
Input
| Argument Name | Description | Required |
|---|---|---|
| componentlist_name | Componentlist Name | Required |
| componentlist_entry | Componentlist Entry | Required |
Context Output
| Path | Type | Description |
|---|---|---|
| DigitalGuardian.Componentlist.Found | boolean | Componentlist Found |
Command Example
!digitalguardian-check-componentlist-entry componentlist_entry=email@example.com componentlist_name="Test - JLL - Email Address Blacklist"
Context Example
{
"DigitalGuardian": {
"Componentlist": {
"Found": true
}
}
}
Human Readable Output
Componentlist found
digitalguardian-remove-componentlist-entry
Remove Componentlist Entry
Base Command
digitalguardian-remove-componentlist-entry
Input
| Argument Name | Description | Required |
|---|---|---|
| componentlist_name | Componentlist Name | Required |
| componentlist_entry | Componentlist Entry | Required |
Context Output
There is no context output for this command.
Command Example
!digitalguardian-remove-componentlist-entry componentlist_entry=email@example.com componentlist_name="Test - JLL - Email Address Blacklist"
Context Example
{}
Human Readable Output
removed componentlist entry (email@example.com) from componentlist name (Test - JLL - Email Address Blacklist)
Configuration parameters
auth_url— Auth Server URL (required)arc_url— Gateway Base URL (required)client_id— API Client ID (required)client_secret— API Client Secret (required)export_profile— Export Profile (required)isFetch— Fetch incidentsincidentType— Incident typeincidentFetchInterval— Incidents Fetch Intervalinsecure— Trust any certificate (not secure)proxy— Use system proxy settings
Commands (6)
-
digitalguardian-add-componentlist-entryAdd Componentlist Entry.
-
digitalguardian-add-watchlist-entryAdd Watchlist Entry.
-
digitalguardian-check-componentlist-entryCheck Componentlist Entry.
-
digitalguardian-check-watchlist-entryCheck Watchlist Entry.
-
digitalguardian-remove-componentlist-entryRemove Componentlist Entry.
-
digitalguardian-remove-watchlist-entryRemove Watchlist Entry.
import pytest import requests_mock from CommonServerPython import * RETURN_ERROR_TARGET = "DigitalGuardian.return_error" auth_url = "https://authorization_url.com" arc_url = "https://arc_url.com" @pytest.fixture(scope="function", autouse=True) def setup_params(mocker): demisto_params = {"auth_url": auth_url, "arc_url": arc_url, "client_id": "client_id", "client_secret": "client_secret"} mocker.patch.object(demisto, "params", return_value=demisto_params) def test_test_module(mocker, capfd): from DigitalGuardian import main with requests_mock.Mocker() as request_mocker: mocker.patch.object(demisto, "command", return_value="test-module") request_mocker.register_uri("POST", re.compile(auth_url), json={"access_token": "access_token"}, status_code=200) request_mocker.register_uri("GET", re.compile(arc_url), status_code=200) with capfd.disabled(): # ignore stdout main() @pytest.mark.parametrize( "dg_severity, demisto_severity", [("Low", 1), ("Medium", 2), ("High", 3), ("Critical", 4), (None, 1), ("Other", 1)] ) def test_convert_to_demisto_severity(dg_severity, demisto_severity): from DigitalGuardian import convert_to_demisto_severity assert convert_to_demisto_severity(dg_severity) == demisto_severity @pytest.mark.parametrize("was_classified, demisto_class", [("Yes", 1), ("No", 0), ("other", 0), (None, 0)]) def test_convert_to_demisto_class(was_classified, demisto_class): from DigitalGuardian import convert_to_demisto_class assert convert_to_demisto_class(was_classified) == demisto_class @pytest.mark.parametrize( "was_classified, demisto_sensitivity", [ ("Something", "none"), (None, "none"), ("LOW", "Low"), ("Low", "none"), ("SomethingLOW", "Low"), ("HIGH", "High"), ("SomethingHIGH", "High"), ("MED", "Medium"), ("SomethingMED", "Medium"), ("MEDIUM", "none"), ("", "none"), ("A", "none"), ], ) def test_convert_to_demisto_sensitivity(was_classified, demisto_sensitivity): from DigitalGuardian import convert_to_demisto_sensitivity assert convert_to_demisto_sensitivity(was_classified) == demisto_sensitivity