Skip to main content
Version: 2.14.1

PagerDuty Zero Trust Alert to Event Integration

Free integration setupWe’ll install and validate this for you.
Book a setup call

Support Statement

DISCLAIMER

This documentation is provided "as is" without support for 3rd party software. The level of support for this integration guide is best effort without any SLA on response time. No 3rd party product support can be provided by Superna directly. 3rd party components require support contracts. See EULA for more details.


Overview

PagerDuty is a digital operation platform that provides reliable notifications, on-call, scheduling, automatic escalations, and other functionality to help teams detect and fix problems quickly.

Solution Overview

Superna Defender Zero Trust API receives webhook alerts and parses the key data into HTTPS API payload events that are sent to the PagerDuty endpoint URL. PagerDuty is a modular architecture that provides real-time visibility of your IT infrastructure, which you can use for threat detection and prioritization.

Advanced Zero Trust Capabilities

  • Webhook to native HTTPS collector API case creation
  • Supports dedupe key and service routing integration with Events v2 API

What Is PagerDuty?

PagerDuty supports various features for operations teams including incident management, on-call scheduling, automation, and integrations with other tools. It helps manage incidents from detection to resolution, automating responses and providing analytics for continuous improvement. PagerDuty also offers features for customer service operations and business response.

Integration Architecture

PagerDuty integration architecture

Solution Configuration in PagerDuty and Data Security Edition Zero Trust

Prerequisites

  • Installed Security Edition
  • Eyeglass OS appliance version 15.5 — verify with cat /etc/os-release
  • License key for the Zero Trust API
  • PagerDuty with a service created with Events v2 API integration

Configuration in PagerDuty

  1. Log in to the PagerDuty console.
  2. Create a new service and click Next to set it up with the defaults.
  3. On the Integrations tab, add the Events v2 API integration.
  4. Once completed, create the service and navigate to the Integrations tab of the new service.
  5. Copy the Integration key and record it for use in the configuration steps below.

Configuration Steps on Eyeglass Virtual Machine

High-Level Steps

  1. Create the Python location to run the application on the Eyeglass VM.
  2. Create the Python main application script.
  3. Create the Linux systemd service and set it to auto-start.
  4. Create the Zero Trust configuration in Data Security Edition.
  5. Update the main script to customize it with the PagerDuty Python code.
  6. Test the script is running as a service.
  7. Create a test event in Defender to validate alerts appear as indexed parsed events in PagerDuty.

Configure the Service Start and Python Integration Files

Log in to the Eyeglass VM via SSH as the admin user:

ssh admin@<your-vm-ip>

Become root:

sudo -s

mkdir -p /opt/superna/cgi-bin

chown -R sca:users /opt/superna/cgi-bin

chmod -R u+rwX,g+rwX /opt/superna/cgi-bin

Switch to the SCA user:

sudo -u sca -s

cd /opt/superna/cgi-bin

Create a Python virtual environment for the integration:

python3 -m venv venv-pagerduty

source venv-pagerduty/bin/activate

Install required Python packages:

pip install flask requests

deactivate

Create integration script files:

touch pagerduty.py

touch pagerduty.sh

chmod +x pagerduty.py

chmod +x pagerduty.sh

Create the pagerduty.sh launch script:

nano /opt/superna/cgi-bin/pagerduty.sh

Paste the following content into the file:

#!/bin/bash

export PATH="/opt/.pyenv/bin:$PATH"

source /opt/superna/cgi-bin/venv-pagerduty/bin/activate

exec python /opt/superna/cgi-bin/pagerduty.py

Make the script executable:

chmod +x /opt/superna/cgi-bin/pagerduty.sh

Exit back to root:

exit

whoami # confirm you are root

Create the systemd service unit file:

nano /etc/systemd/system/pagerduty.service

Paste the following content into the file:

[Unit]
Description=Webhook listener for Zero Trust API translations and integrations
After=network.target

[Service]
Type=simple
User=sca
Group=users
WorkingDirectory=/opt/superna/cgi-bin
ExecStart=/bin/bash /opt/superna/cgi-bin/pagerduty.sh
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Reload systemd to register the new service:

systemctl daemon-reload

Enable the service to start on boot (do not start it yet):

systemctl enable pagerduty

Configure Python Packages and Customize the Integration Code

  1. Download the Python template code from the link to download (right-click, save as).

  2. Open the Python template file in a text editor. Only replace the placeholder values — do not delete any commas.

  3. Locate the following section and replace the routing key with the integration key recorded from PagerDuty:

    # PagerDuty HTTP Collector Endpoint
    PAGERDUTY_ROUTING_KEY = "xxxxxxxxxxxx"
    PAGERDUTY_API_URL = "https://events.pagerduty.com/v2/enqueue"
  4. Open the production file on the Eyeglass VM:

    nano /opt/superna/cgi-bin/pagerduty.py
  5. Open the template file locally in Notepad, select all (Ctrl+A), and copy.

  6. Paste the clipboard into the SSH terminal session with the open nano editor.

  7. Save the file:

    • Press Ctrl+X
    • Answer Yes to save and exit
  8. Start the service and verify it is running:

    systemctl start pagerduty

    systemctl status -l pagerduty

    Verify the service returns "active and running". If the service does not start, do not proceed — double-check the steps above.

Configure Defender Zero Trust Webhooks

  1. Configure the Zero Trust endpoint in the Ransomware Defender Zero Trust tab.

    Recommended Configuration

    Send only Critical and Major events, and only webhooks that set lockout or delayed lockout. The goal is to send findings rather than a list of alarms that do not pinpoint a security incident. Customers can customize based on specific requirements.

  2. The endpoint URL uses localhost and sends webhooks to the application service listening on port 5000:

    http://localhost:5000/webhook
  3. Add the following headers to complete the webhook configuration:

    • Content-Type: application/json
    • content-encoding: gzip
  4. Click Save to commit the configuration.

  5. Click Save on the main Webhook configuration page.

How to Test the Integration with PagerDuty

  1. Get the IP address of the Eyeglass VM.
  2. Download the curl command template and open it with a text editor. Locate the IP address of Eyeglass at the very end of the text and replace it with the IP address of your Eyeglass VM.
  3. Copy all the text in the text editor.
  4. SSH to the Eyeglass VM as the admin user.
  5. Paste the entire CLI command to the SSH prompt to send sample data to the running Zero Trust application. This sends test data directly to the application to be processed and sent to PagerDuty.

A successfully processed webhook test returns the following text in the SSH terminal:

done sending event to PagerDuty and check for http 200 and success count in response

To review the process logs from the web application:

sudo -s

journalctl -f -u pagerduty

To log to a file and review with nano, showing only the most recent 250 lines:

journalctl -f -n 250 -u pagerduty > /tmp/pagerduty.log

nano /tmp/pagerduty.log

The response code from the PagerDuty API call should show HTTP 200 status code and successCount 1 to indicate the event was successfully created.

PagerDuty SecOps Administrators Integration Experience

Once the integration is complete, events are sent and fields are mapped from the Superna payload to PagerDuty format. Example incidents created by the integration are visible in the PagerDuty console.