SECOPS TRAINING / DETECTION ENGINEERING / MODULE 09 · SIEM INTEGRATION
Real-Time Event Forwarding Pipeline

Secret Server
Webhook Events
SIEM Pipeline

Configure Secret Server's native webhook engine to forward privileged access events — login failures, secret access, password rotations, heartbeat alerts — into your SIEM platform in real time for detection, alerting, and compliance.

🔶Splunk
🔷Microsoft Sentinel
🔴IBM QRadar
4
Core Event Categories
50+
Forwardable Event Types
<2s
Event Delivery Latency
JWT
Endpoint Auth Model
TLS
Transport Security
01
Architecture Overview

How Secret Server Feeds Your SIEM

Secret Server's Event Pipeline captures every significant PAM activity — authentication attempts, secret retrievals, rotation outcomes, dependency health checks — and dispatches them to registered webhook endpoints within seconds of occurrence. Your SIEM platform ingests these structured payloads and correlates them against other security telemetry for detection and compliance reporting.

The webhook engine operates independently of the sync connector infrastructure — it is a push-only, event-driven channel that does not query the SIEM and holds no SIEM credentials. Authentication is asymmetric: Secret Server signs outbound payloads with a configurable HMAC-SHA256 signature or Bearer token; the SIEM endpoint validates on receipt.

FLOW End-to-End Event Pipeline
  ┌──────────────────────────────────────────────────────────────┐
  │                    SECRET SERVER PAM                         │
  ├──────────────┬─────────────────┬────────────┬───────────────┤
  │ Auth Events  │  Secret Access  │  Rotation  │  Heartbeat    │
  ├──────────────┴─────────────────┴────────────┴───────────────┤
  │           Internal Event Bus (Engine Broker)                 │
  ├─────────────────────────────────────────────────────────────-┤
  │       Webhook Engine  ·  Filter Rules  ·  Payload Builder    │
  ├──────────────────────────────────────────────────────────────┤
  │  HMAC-SHA256 Sign  ·  TLS 1.3  ·  Retry w/ Exponential BO   │
  └──────────┬──────────────────────┬──────────────┬────────────┘
                                               
   [Splunk HEC]         [Sentinel DCR]     [QRadar Syslog]
                                               
    SIEM Correlation · Detection Rules · Compliance Dashboards
ℹ️
Webhook vs. Syslog

Secret Server supports both outbound HTTPS webhooks (structured JSON) and legacy CEF-over-Syslog. This guide covers the modern webhook path, which delivers richer structured payloads, per-event filtering, and supports payload customization. Syslog/CEF is documented separately in the legacy integration module.

02
Event Catalog

Event Types Available for SIEM Forwarding

Secret Server categorizes forwardable events into four primary groups. Each event type carries a severity classification that maps to your SIEM's alert priority model. Click any card to preview the JSON payload for that event category.

CRITICAL
Authentication Failures
USER_LOGIN_FAILURE · USER_LOCKOUT · MFA_FAILURE
Fired on every failed login attempt, account lockout, and MFA bypass event. Includes consecutive failure count, lockout status, originating IP, and user-agent. Essential for brute-force and credential stuffing detection.
INFO
Secret Access & Views
SECRET_VIEW · SECRET_COPY · SECRET_CHECKOUT · SECRET_EDIT
Triggered whenever a secret field is viewed, copied, checked out, or modified. Payload includes the full secret context — name, template, folder path, accessed field — and actor identity. Critical for access anomaly detection.
OK / WARN
Password Rotation Events
SECRET_ROTATION_SUCCESS · SECRET_ROTATION_FAILURE · ROTATION_QUEUED
Emitted at every stage of the Remote Password Change (RPC) lifecycle. Success events confirm credential hygiene. Failure events — especially repeated failures — signal broken RPC configurations or target system issues requiring immediate SOC attention.
WARNING
Heartbeat Failures
HEARTBEAT_FAILURE · HEARTBEAT_MISMATCH · DEPENDENCY_CHECK_FAIL
Secret Server periodically validates stored credentials against target systems. Heartbeat failures indicate credential drift — the stored secret no longer authenticates. Consecutive failures often signal an out-of-band password change, a serious security concern for SOC teams.

Additional Forwardable Event Types

Event Code
Severity
Description
SECRET_FOLDER_CREATED
INFO
New folder created in the secret hierarchy
SECRET_DELETED
WARNING
Secret permanently deleted or moved to recycle bin
SECRET_PERMISSION_CHANGE
WARNING
Access control list modified on a secret or folder
USER_CREATED
INFO
New local or AD-synced user account provisioned
ROLE_ASSIGNMENT_CHANGE
WARNING
User granted or removed from a privileged role
EXPORT_SECRET
CRITICAL
Secret exported to CSV or clipboard in bulk
CONFIG_CHANGE
WARNING
System-level configuration modification
DISCOVERY_IMPORT
INFO
Accounts imported from a discovery scan
03
Webhook Configuration

Configuring Secret Server Webhooks

Webhooks are configured under Admin → Event Subscriptions → Add Subscription. Each subscription defines a target endpoint URL, the event types to forward, optional filter rules, and the authentication method for the receiving SIEM endpoint.

1
Enable the Event Pipeline
Navigate to Admin → Configuration → Event Pipeline. Toggle Enable Event Pipeline to ON. Confirm the pipeline service is running on all Distributed Engine nodes. This enables the broker that routes internal events to registered webhook subscriptions.
2
Create a New Event Subscription
Go to Admin → Event Subscriptions → New. Name the subscription descriptively (e.g., SIEM-Splunk-SecOps-Prod). Select subscription type Webhook (HTTP POST). Enter the SIEM ingest endpoint URL — this must be HTTPS with a valid TLS certificate.
3
Select Event Types
Check the event categories to forward. For a SOC-focused subscription, recommended minimum: USER_LOGIN_FAILURE, USER_LOCKOUT, SECRET_VIEW, SECRET_CHECKOUT, HEARTBEAT_FAILURE, SECRET_ROTATION_FAILURE, EXPORT_SECRET, and ROLE_ASSIGNMENT_CHANGE. Use separate subscriptions for different SIEM alert tiers.
4
Configure Filters (Optional)
Add filter rules to reduce noise. Common filters: Only forward if folder path contains Production; Only forward login failures with consecutive count ≥ 3; Exclude service accounts matching svc-* from view events. Filters use a simple expression language documented in the admin guide.
5
Set Retry & Reliability Options
Configure Max Retries (recommended: 5) and Retry Backoff (exponential, base 2s). Enable Dead Letter Queue to capture events that exhaust all retries — these are written to %SS_DATA%\EventPipeline\DeadLetter\ for manual replay. Set a Delivery Timeout of 10 seconds per attempt.
6
Test & Activate
Click Send Test Event — Secret Server POSTs a synthetic WEBHOOK_TEST payload to the configured endpoint. Confirm the SIEM receives and indexes the test event. Click Activate Subscription. Monitor the Event Pipeline health dashboard at Admin → Event Subscriptions → Status for the first 30 minutes after activation.
04
Payload Specification

Payload Format & Customisation

All webhook payloads are delivered as HTTP POST requests with Content-Type: application/json. Every payload shares a common envelope structure containing metadata fields, with an event-specific body nested within. The payload builder supports Liquid template syntax for customisation — you can reshape the JSON to match your SIEM's expected ingestion format.

Standard Payload Envelope

Field
Type
Description
eventId
UUID
Globally unique event identifier — use for deduplication in your SIEM
eventType
string
Event category code — maps to the event catalog in Section 02
severity
enum
CRITICAL · WARNING · INFORMATIONAL · OK
timestamp
ISO8601
UTC event time — always use this field; do not rely on HTTP receipt time
source
string
Always "SecretServer" — useful for multi-source SIEM filtering
version
string
Payload schema version — check this before parsing new fields
actor
object
User who triggered the event: username, domain, IP, sessionId
secret
object
Secret context (where applicable): id, name, template, folderPath
outcome
object
Event-specific result data — varies by eventType
ssInstance
string
Secret Server hostname — useful when multiple SS instances feed the same SIEM

Liquid Template Payload Customisation

Use Liquid syntax in the Custom Payload Template field of each event subscription to reshape the JSON to your SIEM's required format. This is especially important for Splunk (which requires a specific HEC envelope) and QRadar (which expects a flat key-value structure).

LIQUID Custom Payload Template — Splunk HEC format
{
  "time":       "{{ event.timestamp | date: '%s' }}",
  "host":       "{{ event.ssInstance }}",
  "source":     "secret_server",
  "sourcetype": "ss:pam:event",
  "index":      "pam_security",
  "event": {
    "event_id":   "{{ event.eventId }}",
    "event_type": "{{ event.eventType }}",
    "severity":   "{{ event.severity }}",
    "actor":      "{{ event.actor.domain }}\\{{ event.actor.username }}",
    "src_ip":     "{{ event.actor.ipAddress }}",
    "secret_name":"{{ event.secret.name | default: '' }}",
    "folder_path":"{{ event.secret.folderPath | default: '' }}",
    "outcome":    "{% if event.outcome.result %}{{ event.outcome.result }}{% endif %}"
  }
}
💡
Idempotent Processing via eventId

Always index the eventId UUID in your SIEM and use it as a deduplication key. Secret Server may re-deliver events after network failures or retry exhaustion. SIEMs that process the same eventId twice should discard the duplicate rather than creating duplicate alerts or inflating correlation counters.

05
Security

Webhook Endpoint Authentication

Secret Server supports three mechanisms for authenticating outbound webhook deliveries to your SIEM endpoint. Select the method appropriate to your SIEM's ingestion API capabilities and your organisation's security policy.

🎫
Bearer Token
A static or rotating Bearer token is included in the Authorization: Bearer <token> header. Used for SIEM ingestion APIs that require a pre-shared API key (Splunk HEC token, QRadar auth token).
🏷
mTLS Client Certificate
The Distributed Engine presents a client TLS certificate when establishing the connection. The SIEM endpoint validates the client cert against its trust store. Highest assurance — used in high-security environments.

HMAC-SHA256 Signature Validation (Recommended)

PYTHON SIEM Endpoint — HMAC Signature Validation
import hmac, hashlib, os
from flask import Flask, request, abort

app = Flask(__name__)
# Store the shared secret in an env variable — never hardcode
WEBHOOK_SECRET = os.environ["SS_WEBHOOK_SECRET"].encode()

@app.route("/ss-events", methods=["POST"])
def receive_event():
    sig_header = request.headers.get("X-SS-Signature", "")
    body       = request.get_data()           # raw bytes

    # Compute expected HMAC-SHA256 over raw body
    expected = "sha256=" + hmac.new(
        WEBHOOK_SECRET, body, hashlib.sha256
    ).hexdigest()

    # Constant-time comparison prevents timing attacks
    if not hmac.compare_digest(expected, sig_header):
        abort(401)  # reject invalid signature

    event = request.get_json()
    process_event(event)     # forward to SIEM index
    return "", 200

def process_event(event):
    # Route to appropriate SIEM index by severity
    severity = event.get("severity", "INFO")
    index    = "pam_critical" if severity == "CRITICAL" else "pam_security"
    # ... forward to SIEM ingestion API
⚠️
Always Return HTTP 200 Promptly

Secret Server's webhook engine waits for an HTTP 200 response before marking a delivery successful. If your SIEM endpoint takes more than 10 seconds to respond (the default timeout), Secret Server will mark the delivery as failed and retry with backoff. Your endpoint should queue the event for async processing and return 200 OK immediately — do not block on SIEM indexing within the request handler.

06
Platform Configurations

SIEM Integration Configurations

Complete, production-ready configuration examples for the three most common enterprise SIEM platforms. Select your platform below for endpoint configuration, source type setup, and example detection rules.

Splunk — HTTP Event Collector (HEC)
Ingest Secret Server events via Splunk's HEC endpoint · sourcetype: ss:pam:event

Step 1: Enable HEC in Splunk (Settings → Data Inputs → HTTP Event Collector → New Token). Create an index named pam_security and assign it to the token. Copy the HEC token GUID.

Step 2: In Secret Server, create a webhook subscription with endpoint URL https://<splunk-host>:8088/services/collector/event and add the header Authorization: Splunk <HEC_TOKEN>.

Step 3: Use the Liquid custom payload template below to wrap events in HEC format:

LIQUID Splunk HEC — Webhook Payload Template
{
  "time":       "{{ event.timestamp | date: '%s' }}",
  "host":       "{{ event.ssInstance }}",
  "source":     "secret_server:webhook",
  "sourcetype": "ss:pam:event",
  "index":      "pam_security",
  "event": {
    "event_id":      "{{ event.eventId }}",
    "event_type":    "{{ event.eventType }}",
    "severity":      "{{ event.severity }}",
    "ss_instance":   "{{ event.ssInstance }}",
    "actor_user":    "{{ event.actor.username }}",
    "actor_domain":  "{{ event.actor.domain }}",
    "actor_ip":      "{{ event.actor.ipAddress }}",
    "secret_id":     "{{ event.secret.id | default: '' }}",
    "secret_name":   "{{ event.secret.name | default: '' }}",
    "folder_path":   "{{ event.secret.folderPath | default: '' }}",
    "template":      "{{ event.secret.template | default: '' }}",
    "outcome":       "{{ event.outcome.result | default: '' }}",
    "raw_severity":  "{{ event.severity }}"
  }
}
SPL Splunk — Brute Force Detection Rule
| Detection: Privileged Account Brute Force (SS → Splunk)
index=pam_security sourcetype="ss:pam:event"
    event_type="USER_LOGIN_FAILURE"
| stats
    count          AS failure_count,
    dc(actor_ip)   AS unique_ips,
    values(actor_ip) AS source_ips
    BY actor_user actor_domain _time span=5m
| where failure_count >= 5
| eval risk_score = failure_count * unique_ips
| sort -risk_score
| table _time actor_domain actor_user failure_count unique_ips source_ips risk_score
| alert if risk_score > 15
  action.email.subject = "ALERT: Privileged Account Brute Force — {{ actor_user }}"
ℹ️
Splunk App for Secret Server

Delinea publishes a free Splunk Technology Add-On (TA) on Splunkbase that includes pre-built field extractions, data models, and dashboard templates for Secret Server events. Install the TA first — it auto-configures the ss:pam:event sourcetype and CIM mappings, so your detection searches work with Splunk ES out of the box.

Microsoft Sentinel — DCR / Log Analytics
Ingest via Data Collection Rule (DCR) and Custom Log Analytics table

Step 1: Create a Custom Log Analytics table named SecretServerEvents_CL in your Log Analytics Workspace. Define the schema using the field list from Section 04.

Step 2: Create a Data Collection Rule (DCR) with a custom JSON endpoint — copy the DCR Ingestion URL and the Immutable ID from the Azure Portal.

Step 3: Configure the Secret Server webhook to post to the DCR endpoint URL using an Azure AD Bearer token obtained via the OAuth 2.0 client credentials flow.

POWERSHELL Sentinel — DCR Schema & Ingestion Test
# Create the custom table schema in Log Analytics
$tableSchema = @{
    properties = @{
        schema = @{
            name = "SecretServerEvents_CL"
            columns = @(
                @{ name = "EventId";     type = "string" },
                @{ name = "EventType";   type = "string" },
                @{ name = "Severity";    type = "string" },
                @{ name = "TimeGenerated"; type = "datetime" },
                @{ name = "ActorUser";   type = "string" },
                @{ name = "ActorDomain"; type = "string" },
                @{ name = "ActorIp";     type = "string" },
                @{ name = "SecretName";  type = "string" },
                @{ name = "FolderPath";  type = "string" },
                @{ name = "Outcome";     type = "string" },
                @{ name = "SSInstance";  type = "string" }
            )
        }
    }
}

# Obtain AAD token for DCR ingestion
$token = (Get-AzAccessToken -ResourceUrl "https://monitor.azure.com/").Token

# Post a test event to the DCR endpoint
$body = @([ordered]@{
    EventId    = [guid]::NewGuid().ToString()
    EventType  = "WEBHOOK_TEST"
    Severity   = "INFORMATIONAL"
    TimeGenerated = (Get-Date -Format "o")
    ActorUser  = "test-actor"
}) | ConvertTo-Json -AsArray

Invoke-RestMethod -Uri "$DCR_ENDPOINT" `
    -Method POST -Body $body `
    -ContentType "application/json" `
    -Headers @{ Authorization = "Bearer $token" }
KQL Sentinel — Heartbeat Failure Detection Rule (Analytics Rule)
// Analytic Rule: Consecutive Heartbeat Failures → Possible Out-of-Band Password Change
SecretServerEvents_CL
| where EventType == "HEARTBEAT_FAILURE"
| where TimeGenerated > ago(1h)
| summarize
    FailureCount  = count(),
    AffectedSecrets = make_set(SecretName),
    FolderPaths   = make_set(FolderPath),
    FirstFail     = min(TimeGenerated),
    LastFail      = max(TimeGenerated)
  by SSInstance, bin(TimeGenerated, 15m)
| where FailureCount >= 3
| extend AlertSeverity = iff(FailureCount >= 10, "High", "Medium")
| extend
    AlertName = strcat("SS Heartbeat Failures: ", tostring(FailureCount), " in 15m"),
    Entities  = AffectedSecrets
| project TimeGenerated, AlertSeverity, AlertName, FailureCount, AffectedSecrets, FolderPaths
IBM QRadar — Log Source & DSM
Ingest via QRadar Universal REST API Protocol or Syslog-JSON bridge

Option A (Recommended): Use the QRadar Universal REST API Protocol — configure a log source pointing at a lightweight middleware that pulls events from a Secret Server-populated message queue (SNS or RabbitMQ). This provides reliable, ordered delivery with native QRadar log source management.

Option B: Deploy a syslog-JSON bridge server (NGINX + Logstash) that receives Secret Server webhooks, flattens the JSON, and forwards as syslog UDP/TCP to QRadar's log source listener on port 514. Use the custom payload template below to produce QRadar-compatible output.

LIQUID QRadar — Flat JSON Payload Template (Logstash bridge)
{
  "deviceVendor":    "Delinea",
  "deviceProduct":   "SecretServer",
  "deviceVersion":   "{{ event.version }}",
  "eventId":         "{{ event.eventId }}",
  "eventClassId":    "{{ event.eventType }}",
  "severity":        "{{ event.severity }}",
  "startTime":       "{{ event.timestamp }}",
  "sourceUserName":  "{{ event.actor.domain }}\\{{ event.actor.username }}",
  "sourceAddress":   "{{ event.actor.ipAddress }}",
  "destinationHost": "{{ event.ssInstance }}",
  "cs1Label":        "SecretName",
  "cs1":             "{{ event.secret.name | default: '' }}",
  "cs2Label":        "FolderPath",
  "cs2":             "{{ event.secret.folderPath | default: '' }}",
  "cs3Label":        "Template",
  "cs3":             "{{ event.secret.template | default: '' }}",
  "outcome":         "{{ event.outcome.result | default: '' }}",
  "reason":          "{{ event.outcome.reason | default: '' }}"
}
ARIEL QRadar — Secret Export Detection Rule (Ariel Query)
-- QRadar Ariel: Detect Bulk Secret Export — High Priority Offence Rule
SELECT
    "startTime"      AS event_time,
    "sourceUserName" AS actor,
    "sourceAddress"  AS src_ip,
    "cs1"            AS secret_name,
    "cs2"            AS folder_path,
    "severity"
FROM events
WHERE "eventClassId" = 'EXPORT_SECRET'
  AND "deviceProduct" = 'SecretServer'
  AND DATEFORMAT("startTime", 'yyyy-MM-dd HH:mm:ss') >
      DATEADD('MINUTE', -30, NOW())
ORDER BY event_time DESC
-- Trigger offence if count >= 1 (any export is alertable)
-- Map to: Category 5012 (Data Exfiltration) · Severity HIGH
📌
QRadar DSM Installation

IBM provides an official Delinea Secret Server DSM on the IBM Security App Exchange. Installing the DSM auto-populates QRadar's log source type, event category mappings, and QID resolutions for all standard Secret Server event codes. This eliminates the need to manually map events in the Custom Rules Engine (CRE) and should be installed before configuring the log source.

07
Assessment

Knowledge Check

Five questions covering webhook configuration, event handling, and SIEM integration concepts.

// QUESTION 01 / 05 Event Pipeline

A heartbeat failure event fires repeatedly for the same secret over 6 hours. What is the most likely SOC interpretation and the correct escalation action?

ANetwork connectivity issue — escalate to infrastructure team to check firewall rules
BPossible out-of-band password change — credential was changed on the target system outside Secret Server's rotation cycle; investigate for unauthorised access
CThe secret's RPC template is misconfigured — recreate the template and rotation schedule
DNormal heartbeat jitter — no action required unless failures persist beyond 24 hours
✓ Correct — Repeated HEARTBEAT_FAILURE events for the same secret are the primary indicator of an out-of-band password change. Someone modified the target system credential without going through Secret Server's RPC, meaning the stored secret is stale. This is a serious security signal requiring immediate investigation for unauthorised access or insider threat activity.
// QUESTION 02 / 05 Authentication

Why must the SIEM webhook endpoint use hmac.compare_digest() rather than a standard string equality check (==) when validating HMAC-SHA256 signatures?

Acompare_digest() is faster for long strings — it uses SIMD instructions internally
BStandard equality fails when signatures contain non-ASCII characters
CStandard equality returns early on the first mismatch, leaking timing information that attackers can exploit to progressively guess valid signatures byte-by-byte
Dcompare_digest() automatically handles HMAC key rotation without configuration changes
✓ Correct — Standard string comparison (==) short-circuits on the first differing character, making the comparison time proportional to how many leading bytes match. An attacker can exploit this timing side-channel to craft valid signatures iteratively. hmac.compare_digest() runs in constant time regardless of where the strings diverge, preventing this timing attack.
// QUESTION 03 / 05 Reliability

Your SIEM webhook endpoint takes 12 seconds to process and index an event before returning HTTP 200. What will Secret Server's webhook engine do after 10 seconds?

AWait indefinitely — the engine has no timeout configured by default
BCancel the delivery and silently discard the event
CMark the delivery as failed and retry with exponential backoff — potentially delivering a duplicate event when the endpoint eventually responds
DSwitch to Syslog delivery mode automatically as a fallback
✓ Correct — Secret Server's webhook engine has a 10-second delivery timeout. If the endpoint does not return 200 within this window, the delivery is marked failed and enters the retry queue. Your endpoint must return 200 immediately and process the event asynchronously (queue → background worker → SIEM index) to avoid false failures and duplicate deliveries.
// QUESTION 04 / 05 Deduplication

Why is the eventId UUID field critical for SIEM processing, and what should happen when the SIEM receives an event with a duplicate eventId?

AThe eventId is only useful for support tickets — SIEMs should ignore it and use the timestamp for deduplication
BSecret Server may re-deliver events after network failures — the SIEM must use eventId as a deduplication key and discard any event whose ID has already been indexed, preventing duplicate alerts
CDuplicate eventId values indicate a security incident — they should trigger a high-severity alert for event spoofing
DThe SIEM should merge fields from both deliveries into a single enriched event record
✓ Correct — The at-least-once delivery guarantee means Secret Server may re-deliver events after retry cycles caused by network failures, timeouts, or endpoint restarts. The SIEM must index eventId and deduplicate on it — processing the same event ID twice would inflate alert counts, distort correlation timelines, and generate false-positive detections.
// QUESTION 05 / 05 Detection Engineering

An analyst notices a SECRET_ROTATION_FAILURE event immediately followed by a HEARTBEAT_FAILURE event for the same secret. What compound detection rule should fire?

ARoutine maintenance window — rotation failures + heartbeat failures are expected and no alert is needed
BRotation template misconfiguration — file a change ticket and update the RPC template
CBroken RPC chain with credential drift risk — the rotation failed so the credential is outdated, and the heartbeat confirms the target system may now have a different password entirely; escalate to both the PAM team and the incident response team
DDuplicate event delivery — the two events are the same occurrence and should be merged
✓ Correct — The combination of ROTATION_FAILURE + HEARTBEAT_FAILURE on the same secret is a compound indicator of a broken credential chain. The rotation failed, leaving an outdated password in Secret Server, while the heartbeat failure suggests the target system's password has diverged. This combination significantly raises the risk of a locked-out service account or an attacker exploiting the gap. It requires immediate dual escalation: PAM team for RPC remediation, IR team for investigation.
08
Go-Live Validation

Deployment Checklist

Complete all items before enabling the webhook pipeline in production.

Secret Server Configuration

  • Event Pipeline service enabled and running on all Distributed Engine nodes
  • Event subscription created with HTTPS endpoint (valid TLS cert — no self-signed)
  • Event types selected covering minimum SOC set: auth failures, secret views, rotations, heartbeat failures
  • HMAC-SHA256 signing enabled; shared secret stored in vault (not hardcoded)
  • Retry policy configured: 5 retries, exponential backoff, dead letter queue enabled
  • Test event delivered successfully and confirmed indexed in SIEM
  • Delivery timeout set to 10 seconds; SIEM endpoint confirmed to respond within 2 seconds

SIEM Endpoint Security

  • HMAC signature validated on every inbound event (constant-time comparison)
  • Endpoint returns HTTP 200 immediately; event processing is asynchronous
  • eventId deduplication logic implemented and tested with replay scenarios
  • Ingestion endpoint access-controlled to Secret Server engine IP ranges only (WAF/firewall)
  • TLS 1.2+ enforced on SIEM ingestion endpoint; weak ciphers disabled

Detection Rules & Alerting

  • Brute-force detection rule active: ≥5 login failures within 5 minutes triggers HIGH alert
  • Heartbeat failure rule active: ≥3 consecutive failures on same secret triggers MEDIUM alert
  • Secret bulk export rule active: any EXPORT_SECRET event triggers immediate HIGH alert
  • Compound detection rule: ROTATION_FAILURE + HEARTBEAT_FAILURE within 1 hour triggers HIGH escalation
  • SIEM alert routing tested end-to-end to on-call SOC queue
  • Dead letter queue monitored with alert if queue depth exceeds 10 undelivered events
  • Runbook written for each alert type covering triage steps and escalation path