DatadogSyncIncidentFields
Fetches the latest Datadog Security Signal data and updates incident fields.
python · Datadog Cloud SIEM
Source
import demistomock as demisto # noqa: F401 from CommonServerPython import * # noqa: F401 def main(): try: incident = demisto.incident() signal_id = incident.get("CustomFields", {}).get("datadogcloudsiemv2securitysignalid") if not signal_id: return_error("No Datadog Security Signal ID found in incident.") result = demisto.executeCommand("datadog-get-signal", {"signal_id": signal_id}) if not result or isError(result): return_error(f"Failed to fetch signal: {get_error(result)}") signal = result[0].get("Contents", {}) # type: ignore if not signal: return_error("No signal data returned from Datadog.") mapped_data = demisto.mapObject(signal, "Datadog Cloud SIEM V2 - Incoming Mapper", "Datadog Cloud SIEM V2") custom_fields = {} for key, value in mapped_data.items(): field_name = "".join(key.lower().split()) custom_fields[field_name] = value owner = signal.get("triage", {}).get("assignee", {}).get("name") signal_state = signal.get("triage", {}).get("state") if signal_state == "archived": close_reason = signal.get("triage", {}).get("archive_reason", "Other") close_notes = signal.get("triage", {}).get("archive_comment", "") if custom_fields: demisto.executeCommand("setIncident", {"customFields": custom_fields}) if owner: demisto.executeCommand("setOwner", {"owner": owner}) if signal_state == "archived": demisto.executeCommand( "closeInvestigation", {"closeReason": close_reason, "closeNotes": close_notes}, ) return_results(CommandResults(readable_output="Successfully synced incident fields from Datadog.")) else: return_results(CommandResults(readable_output="No fields to update.")) except Exception as ex: demisto.error(traceback.format_exc()) return_error(f"Failed to execute DatadogSyncIncidentFields. Error: {str(ex)}") if __name__ in ("__main__", "__builtin__", "builtins"): main()
README
This script synchronizes Datadog Cloud SIEM security signal data with XSOAR incident fields. It retrieves the latest security signal information from Datadog and updates the incident with current field values, owner information, and closure state.
Dependencies
This script uses the following commands and scripts.
Commands
- datadog-signal-get
- setIncident
- setOwner
- closeInvestigation
Scripts
This script does not use any scripts.
Inputs
This script does not take any inputs. It operates on the current incident context and requires the incident to have a Datadog Security Signal ID in its custom fields.
Outputs
There are no context outputs for this script. The script updates the incident fields directly.
Use Cases
- Synchronize incident fields with the latest Datadog security signal data
- Update incident owner based on Datadog signal assignee
- Automatically close XSOAR incidents when the corresponding Datadog security signal is archived