Skip to main content

SIEM Integration

Forward ASCEND security events and audit logs to your SIEM platform for centralized security monitoring and compliance.

Supported SIEM Platforms

Query supported platforms via the API:

curl https://pilot.owkai.app/api/siem/supported-integrations \
-b cookies.txt
PlatformIntegration MethodStatus
SplunkHTTP Event CollectorSupported
DatadogAPI IntegrationSupported
Elastic/ELKWebhook/LogstashSupported
Azure SentinelEvent HubSupported
AWS Security HubEventBridgeSupported
IBM QRadarSyslogSupported
Generic WebhookHTTPS POSTSupported
SyslogTCP/UDPSupported

Quick Setup

1. Configure SIEM Connection

curl -X POST https://pilot.owkai.app/api/siem/configure \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{
"type": "splunk",
"config": {
"hec_url": "https://splunk.company.com:8088",
"hec_token": "your-hec-token",
"index": "ascend_security",
"sourcetype": "ascend:audit"
},
"events": ["action.blocked", "auth.failed", "policy.violation"]
}'

2. Test Connection

curl -X POST https://pilot.owkai.app/api/siem/test-connection \
-b cookies.txt

3. Send Test Event

curl -X POST https://pilot.owkai.app/api/siem/send-test-event \
-b cookies.txt

4. Check Status

curl https://pilot.owkai.app/api/siem/status \
-b cookies.txt

API Endpoints

EndpointMethodDescription
/siem/configurePOSTConfigure SIEM connection
/siem/test-connectionPOSTTest SIEM connectivity
/siem/statusGETGet current SIEM status
/siem/send-test-eventPOSTSend test event to SIEM
/siem/supported-integrationsGETList supported SIEM platforms
/siem/disconnectDELETEDisconnect SIEM integration

Event Types

Security Events (High Priority)

EventSeverityDescription
action.blockedHighAgent action blocked by policy
action.high_riskHighHigh-risk action detected
auth.failedMediumAuthentication failure
auth.mfa_failedHighMFA verification failed
anomaly.detectedHighBehavioral anomaly detected
policy.violationMediumPolicy rule triggered
secret.rotatedInfoSecret rotation occurred
user.lockedHighUser account locked

Audit Events (Standard Priority)

EventSeverityDescription
action.submittedInfoAgent action submitted
action.approvedInfoAction approved
action.rejectedInfoAction rejected
workflow.completedInfoApproval workflow completed
user.loginInfoUser logged in
user.logoutInfoUser logged out
policy.createdInfoPolicy created
policy.updatedInfoPolicy updated

Splunk Integration

Configuration

curl -X POST https://pilot.owkai.app/api/siem/configure \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{
"type": "splunk",
"config": {
"hec_url": "https://splunk.company.com:8088",
"hec_token": "your-hec-token",
"index": "ascend_security",
"sourcetype": "ascend:audit",
"source": "ascend_governance"
},
"events": ["*"],
"include_metadata": true
}'

Event Format

{
"time": 1705320000,
"host": "pilot.owkai.app/api",
"source": "ascend_governance",
"sourcetype": "ascend:audit",
"index": "ascend_security",
"event": {
"event_type": "action.blocked",
"timestamp": "2025-01-15T10:00:00Z",
"organization_id": 123,
"organization_name": "Acme Corp",
"user_id": 456,
"user_email": "user@acmecorp.com",
"agent": {
"agent_id": "customer-service-agent",
"agent_type": "automation"
},
"action": {
"action_id": "act_xyz789",
"action_type": "database_query",
"target_resource": "customer_database"
},
"risk": {
"score": 85,
"level": "critical",
"factors": ["sensitive_data", "unusual_volume", "off_hours"]
},
"decision": {
"outcome": "blocked",
"reason": "Critical risk threshold exceeded",
"policy_id": "pol_data_protection",
"policy_name": "Data Protection Policy"
}
}
}

Splunk Search Queries

# High-risk blocked actions
index=ascend_security sourcetype="ascend:audit" event_type="action.blocked" risk.score>=80
| stats count by agent.agent_id, risk.level
| sort -count

# Authentication failures by user
index=ascend_security sourcetype="ascend:audit" event_type="auth.failed"
| stats count by user_email
| where count > 5

# Actions by organization
index=ascend_security sourcetype="ascend:audit"
| timechart span=1h count by organization_name

Datadog Integration

Configuration

curl -X POST https://pilot.owkai.app/api/siem/configure \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{
"type": "datadog",
"config": {
"api_key": "your-datadog-api-key",
"site": "datadoghq.com",
"service": "ascend-governance",
"env": "production"
},
"events": ["*"],
"tags": ["team:security", "product:ascend"]
}'

Datadog Log Format

{
"ddsource": "ascend",
"ddtags": "env:production,service:ascend-governance,team:security",
"hostname": "pilot.owkai.app/api",
"service": "ascend-governance",
"status": "warn",
"message": "Agent action blocked: database_query on customer_database",
"event_type": "action.blocked",
"risk_score": 85,
"organization_id": 123,
"agent_id": "customer-service-agent"
}

Elastic/ELK Integration

Webhook Configuration

curl -X POST https://pilot.owkai.app/api/siem/configure \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{
"type": "webhook",
"config": {
"url": "https://logstash.company.com:5044",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"X-Source": "ascend"
}
},
"events": ["*"]
}'

Logstash Configuration

input {
http {
port => 5044
codec => json
}
}

filter {
if [source] == "ascend" {
mutate {
add_field => { "[@metadata][index]" => "ascend-events" }
}

date {
match => ["timestamp", "ISO8601"]
target => "@timestamp"
}

# Map risk level to severity
if [risk][score] >= 80 {
mutate { add_field => { "severity" => "critical" } }
} else if [risk][score] >= 60 {
mutate { add_field => { "severity" => "high" } }
} else if [risk][score] >= 40 {
mutate { add_field => { "severity" => "medium" } }
} else {
mutate { add_field => { "severity" => "low" } }
}
}
}

output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "%{[@metadata][index]}-%{+YYYY.MM.dd}"
}
}

Syslog Integration

Configuration

curl -X POST https://pilot.owkai.app/api/siem/configure \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{
"type": "syslog",
"config": {
"host": "syslog.company.com",
"port": 514,
"protocol": "tcp",
"format": "rfc5424",
"facility": "local0"
},
"events": ["action.blocked", "auth.failed"]
}'

CEF Format

CEF:0|Ascend|AI Governance|1.0|action.blocked|Action Blocked|8|
src=customer-service-agent dst=customer_database act=database_query
risk=85 org=Acme Corp reason=Critical risk threshold exceeded

Event Filtering

Filter by Severity

{
"filters": {
"min_severity": "medium",
"events": ["action.*", "auth.*"]
}
}

Filter by Risk Score

{
"filters": {
"risk_score": {
"min": 60
},
"events": ["action.blocked", "action.high_risk"]
}
}

Filter by Event Pattern

{
"filters": {
"events": ["action.blocked", "auth.*", "anomaly.*"],
"exclude": ["user.login", "user.logout"]
}
}

Integration with Notifications

Combine SIEM with notification channels:

# Configure notification channel
curl -X POST https://pilot.owkai.app/api/api/notifications/channels \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{
"name": "Security Team Slack",
"type": "slack",
"config": {
"webhook_url": "https://hooks.slack.com/services/xxx/yyy/zzz"
}
}'

ServiceNow Integration

Create ServiceNow incidents from high-risk events:

# Configure ServiceNow connection
curl -X POST https://pilot.owkai.app/api/servicenow/connections \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{
"instance_url": "https://company.service-now.com",
"username": "ascend_integration",
"password": "your-password",
"auto_create_incidents": true,
"incident_severity_mapping": {
"critical": 1,
"high": 2,
"medium": 3,
"low": 4
}
}'

Webhook Events

Configure webhooks for custom integrations:

curl -X POST https://pilot.owkai.app/api/webhooks/subscriptions \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{
"url": "https://your-system.com/webhook",
"events": ["action_approved", "action_rejected", "policy_change"],
"secret": "your-webhook-secret"
}'

Webhook Payload

{
"event_type": "action_approved",
"timestamp": "2025-01-15T10:00:00Z",
"data": {
"action_id": "act_xyz789",
"action_type": "database_query",
"approved_by": "admin@company.com",
"organization_id": 123
},
"signature": "sha256=abc123..."
}

Disconnecting SIEM

curl -X DELETE https://pilot.owkai.app/api/siem/disconnect \
-b cookies.txt

Troubleshooting

Events Not Arriving

  1. Check connection status:

    curl https://pilot.owkai.app/api/siem/status -b cookies.txt
  2. Test connectivity:

    curl -X POST https://pilot.owkai.app/api/siem/test-connection -b cookies.txt
  3. Send test event:

    curl -X POST https://pilot.owkai.app/api/siem/send-test-event -b cookies.txt

Authentication Errors

  • Verify SIEM credentials are correct
  • Check token/API key hasn't expired
  • Ensure IP allowlisting if applicable

Missing Fields

  • Enable include_metadata: true in configuration
  • Verify event filters include required events
  • Check field mapping in your SIEM

Best Practices

  1. Start with high-priority events - Begin with action.blocked and auth.failed
  2. Use appropriate retention - SIEM logs may have different retention than ASCEND audit logs
  3. Set up alerts - Configure SIEM alerts for patterns like multiple blocked actions
  4. Test regularly - Use test events to verify integration health
  5. Monitor delays - Events should arrive within 60 seconds

Next Steps