QRadar安全代理集成工具

一个连接WatsonX Orchestrate开发版和IBM QRadar MCP服务器的本地演示工具,用于安全事件管理。

  • by buddhaha
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 buddhaha/wxo_qradar_mcp

使用说明

WatsonX Orchestrate+QRadar MCP演示

本地演示连接 WatsonX Orchestrate开发者版 到 IBM QRadar MCP服务器 在Docker中运行。MCP服务器使用基本身份验证(用户名/密码)通过VPN访问QRadar API。

建筑

MacBook Host
├── VPN ──────────────────────────────────────────► QRadar API
├── Docker: qradar-mcp-server (port 8008)
│   ├── Basic auth to QRadar (QRADAR_USERNAME + QRADAR_PASSWORD)
│   └── Bearer auth for MCP endpoint (MCP_API_KEY)
└── Docker: WXO Developer Edition
    └── Calls MCP tools via http://host.docker.internal:8008/sse

先决条件

  • Docker(Rancher Desktop或Colima)
  • Python 3.11 ibm-watsonx-orchestrate 安装
  • 已连接VPN(用于QRadar访问)

步骤1--配置凭据

复制 .env.template 到 .env 并填写您的值:

cp .env.template .env
# WatsonX Orchestrate Developer Edition
WO_DEVELOPER_EDITION_SOURCE=orchestrate
WO_INSTANCE=<your-wxo-instance-url>
WO_API_KEY=<your-wxo-api-key>

# QRadar API (Basic auth — username/password)
QRADAR_HOST=https://<your-qradar-console>
QRADAR_USERNAME=<your-username>
QRADAR_PASSWORD=<your-password>
QRADAR_VERIFY_SSL=false

# MCP server Bearer token — WXO authenticates to the MCP server with this
MCP_API_KEY=<choose-a-secure-random-key>

步骤2--克隆并构建QRadar MCP服务器

cd docker/qradar-mcp-server
git clone https://github.com/IBM/qradar-mcp-server.git qradar-mcp-server

构建和启动:

docker-compose --env-file ../../.env up -d --build

验证它是否正常工作:

# Health check (no auth required)
curl http://localhost:8008/health

# Tool list (auth required)
curl -H "Authorization: Bearer <MCP_API_KEY>" http://localhost:8008/tools

# Test a real QRadar query
curl -X POST http://localhost:8008/tools/call \
  -H "Authorization: Bearer <MCP_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"name": "qradar_get", "arguments": {"endpoint": "/siem/offenses", "range": "0-4"}}'

步骤3--启动WatsonX Orchestrate开发人员版

在终端中(venv已激活):

source venv/bin/activate
orchestrate env activate local
orchestrate server start --env-file=.env

等待: Orchestrate services initialized successfully


步骤4——注册MCP连接

在新的终端选项卡中:

source venv/bin/activate
orchestrate env activate local

# Create connection entry
orchestrate connections add --app-id qradar-mcp-conn

# Configure as bearer auth
orchestrate connections configure \
  --app-id qradar-mcp-conn \
  --kind bearer \
  --type team \
  --env draft \
  --url http://host.docker.internal:8008

# Set the bearer token
orchestrate connections set-credentials \
  --app-id qradar-mcp-conn \
  --env draft \
  --token <MCP_API_KEY>

步骤5——导入QRadar MCP工具包

orchestrate toolkits add \
  --kind mcp \
  --name qradar-toolkit \
  --description "IBM QRadar SIEM tools via MCP" \
  --url http://host.docker.internal:8008/sse \
  --transport sse \
  --app-id qradar-mcp-conn

验证:

orchestrate toolkits list

步骤6——导入并部署QRadar代理

orchestrate agents import -f adk-project/agents/qradar-agent.yaml
orchestrate agents deploy -n QRadar_Security_Agent

步骤7——启动聊天界面

orchestrate chat start

选择 QRadar_安全_代理 并尝试:

  • “显示最新的公开违规行为”
  • “严重程度超过7级”
  • “显示网络活动的可用QRadar API终结点”

项目结构

.
├── .env                                    # Credentials (never commit)
├── adk-project/
│   └── agents/
│       └── qradar-agent.yaml              # QRadar Security Agent definition
└── docker/
    └── qradar-mcp-server/
        ├── Dockerfile                     # Built from cloned GitHub source
        ├── docker-compose.yml             # Runs MCP server on port 8008
        └── src/                           # MCP server source (cloned from GitHub)
            ├── server.py                  # HTTP/SSE server + Bearer auth
            ├── config.py                  # Env var loading (SEC token or Basic auth)
            ├── auth.py                    # Auth header builder
            ├── client.py                  # QRadar REST API client
            └── tools.py                  # 4 MCP tools (get/delete/discover/execute)

对上游QRadar MCP服务器的修改

这 docker/qradar-mcp-server/src/ 在此存储库中跟踪目录,并在其上应用以下更改 IBM/qradar mcp服务器:

src/auth.py

除了现有的SEC令牌模式外,还添加了基本身份验证支持。优先级:SEC令牌(QRADAR_API_TOKEN)如果已设置,否则为基本身份验证(QRADAR_USERNAME + QRADAR_PASSWORD).

# Basic auth header generated as:
Authorization: Basic base64(QRADAR_USERNAME:QRADAR_PASSWORD)

src/config.py

添加 QRADAR_USERNAME 和 QRADAR_PASSWORD env变量读取。两者都传递给 QRadarAuth 通过 headers 财产。

src/client.py

添加 username 和 password 构造函数参数,转发给 QRadarConfig.


备注

  • network_mode: "host" 仅限Linux——docker compose使用端口映射,WXO通过以下方式到达MCP服务器 host.docker.internal:8008
  • MCP服务器支持两种QRadar身份验证模式:SEC令牌(QRADAR_API_TOKEN)或基本身份验证(QRADAR_USERNAME + QRADAR_PASSWORD)
  • 端口8001已在使用中(Lima/WXO),因此MCP服务器被映射到 8008 在主机上