New to Kestra?
Use blueprints to kickstart your first workflows.
Query AbuseIPDB for IP reputation data, analyze risk metrics using Python, and alert SecOps when configured thresholds are breached.
Security Operations Center (SOC) teams frequently face influxes of suspicious incoming requests, automated vulnerability scans, and brute-force access attempts. Manually looking up threat indicators across disparate APIs delays incident response and leaves cloud infrastructure exposed to active attack vectors.
This blueprint provides an automated Security Orchestration, Automation, and Response (SOAR) workflow using AbuseIPDB threat intelligence. It queries IP reputation metrics, evaluates risk confidence scores in a containerized Python environment, logs audit details, and alerts the SecOps team via Slack when confidence thresholds are breached.
check_threat_intel (io.kestra.plugin.scripts.shell.Commands) queries the AbuseIPDB API using curlimages/curl:latest with credentials retrieved safely from Kestra Secrets.analyze_threat_score (io.kestra.plugin.scripts.python.Script) parses the JSON payload, extracts key indicators (abuse confidence score, country code, total reports, ISP, domain), and outputs variables for flow logic.log_threat_summary (io.kestra.plugin.core.log.Log) prints an itemized breakdown of threat indicators to the execution log.evaluate_quarantine_policy (io.kestra.plugin.core.flow.If) evaluates whether the abuse score meets or exceeds inputs.confidence_threshold:notify_secops_incident (io.kestra.plugin.slack.notifications.SlackIncomingWebhook) triggers an incident report in Slack.fail_on_high_risk is true: fail_threat_gate (io.kestra.plugin.core.execution.Fail) halts execution with an error status.log_benign_ip (io.kestra.plugin.core.log.Log) logs a PASSED confirmation.outputs exposes the raw JSON threat report URI and calculated confidence metrics for downstream security flows.confidence_threshold) to eliminate false positives.fail_on_high_risk: false) for passive security logging.api.abuseipdb.com.ABUSEIPDB_API_KEY: API key for authentication with AbuseIPDB v2 endpoints.SLACK_SECURITY_WEBHOOK: Incoming Webhook URL for your SecOps Slack channel.ABUSEIPDB_API_KEY and SLACK_SECURITY_WEBHOOK in your Kestra namespace.suspicious_ip: 118.25.6.39, confidence_threshold: 75).outputs.abuse_score: AbuseIPDB confidence score from 0 to 100.outputs.is_malicious: Boolean indicating whether the score meets or exceeds confidence_threshold.outputs.raw_report: URI of the raw AbuseIPDB JSON response.{{ outputs.abuse_score }}, {{ outputs.is_malicious }}, and {{ outputs.raw_report }}.To automate quarantine actions directly in cloud infrastructure, extend notify_secops_incident with a cloud-specific task (for example, an AWS WAF or Cloudflare integration) that adds malicious IPs to an active blocklist or IP set.
io.kestra.plugin.core.trigger.Webhook) whenever your web server or SIEM detects abnormal traffic anomalies.