RAD Security

ทางการ

โต้ตอบกับแพลตฟอร์ม RAD Security ที่ให้ข้อมูลเชิงลึกด้านความปลอดภัยที่ขับเคลื่อนด้วย AI สำหรับสภาพแวดล้อม Kubernetes และคลาวด์

คุณทำอะไรได้บ้างด้วย RAD Security MCP?

  • ตรวจสอบข้อค้นพบด้านความปลอดภัย — แสดงรายการและวิเคราะห์ข้อค้นพบด้านความปลอดภัย จากนั้นอัปเดตสถานะของข้อค้นพบ
  • ตรวจสอบอิมเมจและ CVE — รับ SBOM แสดงรายการอิมเมจที่มีช่องโหว่ ค้นหาอิมเมจที่มีช่องโหว่มากที่สุด และละเว้นหรือยกเลิกการละเว้น CVE
  • ติดตามพฤติกรรมขณะรัน — รับแผนผังกระบวนการและข้อมูลพื้นฐานขณะรันของคอนเทนเนอร์ที่กำลังทำงาน และวิเคราะห์พฤติกรรมของกระบวนการ
  • ตรวจสอบการเข้าถึงพ็อด — แสดงรายการผู้ที่เชลล์เข้าไปในพ็อด
  • เรียกใช้คิวรี RadQL — แสดงรายการชนิดข้อมูล รับสคีมา และเรียกใช้คิวรีแบบกรองหรือแบบรวมข้อมูล รวมถึงเรียกใช้หลายคิวรีพร้อมกัน
  • จัดการระบบอัตโนมัติ — แสดงรายการระบบอัตโนมัติ การเรียกใช้ และกำหนดเวลา ดูรายละเอียดการเรียกใช้ เรียกใช้ระบบอัตโนมัติ หรือสร้างและอัปเดตระบบอัตโนมัติ

เอกสาร

RAD Security MCP Server

npm version

เซิร์ฟเวอร์ Model Context Protocol (MCP) สำหรับ RAD Security ที่ให้ข้อมูลเชิงลึกด้านความปลอดภัยด้วย AI สำหรับสภาพแวดล้อม Kubernetes และคลาวด์

RAD Security MCP server

เชื่อมต่อ (โฮสต์ให้ — แนะนำ)

RAD Security เรียกใช้เซิร์ฟเวอร์ MCP ให้คุณ ดังนั้นผู้ใช้ส่วนใหญ่จึงไม่จำเป็นต้องติดตั้งหรือโฮสต์อะไร เพียงกำหนดค่า MCP client ให้ชี้ไปยัง endpoint ที่โฮสต์ไว้ แล้วตรวจสอบสิทธิ์ด้วยข้อมูลรับรอง RAD Security ของคุณ

  • Endpoint: https://api.rad.security/mcp/ — โปรดสังเกต เครื่องหมายทับปิดท้าย

  • Transport: Streamable HTTP

  • Authentication: ส่งข้อมูลรับรองของคุณในส่วนหัว Authorization:

    Authorization: Bearer <access_key_id>:<secret_key>:<account_id>
    

    <access_key_id> และ <secret_key> คือคีย์การเข้าถึง API ของ RAD Security (สร้างได้ในคอนโซล RAD Security); <account_id> คือ ID บัญชีของคุณ เซิร์ฟเวอร์จะตรวจสอบสิทธิ์ทุกคำขอกับ RAD Security API โดยไม่มีการจัดเก็บข้อมูลรับรองไว้บนเซิร์ฟเวอร์

รูปแบบ Bearer ory_st_<session_token>:<account_id> ที่มีอายุสั้นก็ใช้ได้เช่นกัน แต่โทเค็นเซสชันจะหมดอายุ — สำหรับการใช้งานระยะยาว (เช่น Slack / Claude Tag) ควรใช้คีย์การเข้าถึง

การเชื่อมต่อเดียวสำหรับทั้ง tenant

หากต้องการทำงานกับทุกบัญชีจากการกำหนดค่า MCP เพียงชุดเดียว ให้สร้างคีย์การเข้าถึงบน tenant แล้วใช้ tenant=<tenant_id> แทน ID บัญชี:

Authorization: Bearer <access_key_id>:<secret_key>:tenant=<tenant_id>

ในเซสชันที่กำหนดขอบเขตระดับ tenant:

  • เครื่องมือ list_accounts จะแสดงบัญชีของ tenant
  • เครื่องมือที่กำหนดขอบเขตระดับบัญชีต้องใช้ argument account_id ซึ่งต้องเป็นบัญชีย่อยของ tenant แต่ละการเรียกใช้จะครอบคลุมหนึ่งบัญชี และจะไม่มีการรวมผลลัพธ์จากหลายบัญชี
  • โดยค่าเริ่มต้นจะใช้ได้เฉพาะเครื่องมือแบบอ่านอย่างเดียว เนื่องจากข้อมูลรับรองระดับ tenant เข้าถึงได้ทุกบัญชี หากต้องการเปิดใช้เครื่องมือเขียน ให้ส่ง X-Rad-Readonly: false

สำหรับเซิร์ฟเวอร์ npx/stdio ให้ตั้งค่า RAD_SECURITY_TENANT_ID โดยไม่ตั้งค่า RAD_SECURITY_ACCOUNT_ID และใช้ RAD_SECURITY_READONLY=false เพื่อเปิดใช้เครื่องมือเขียน

Claude Code

claude mcp add --transport http rad-security https://api.rad.security/mcp/ \
  --header "Authorization: Bearer <access_key_id>:<secret_key>:<account_id>"

OpenAI Codex CLI

~/.codex/config.toml:

[mcp_servers.rad-security]
url = "https://api.rad.security/mcp/"
http_headers = { "Authorization" = "Bearer <access_key_id>:<secret_key>:<account_id>" }

หรือใช้ CLI โดยเก็บ secret ไว้ใน env var (export RAD_MCP_TOKEN=<access_key_id>:<secret_key>:<account_id>):

codex mcp add rad-security --url https://api.rad.security/mcp/ --bearer-token-env-var RAD_MCP_TOKEN

Cursor

.cursor/mcp.json:

{
  "mcpServers": {
    "rad-security": {
      "type": "http",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

VS Code (GitHub Copilot)

.vscode/mcp.json — โปรดสังเกตว่าคีย์ wrapper คือ servers ไม่ใช่ mcpServers:

{
  "servers": {
    "rad-security": {
      "type": "http",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

Gemini CLI

~/.gemini/settings.json — โปรดสังเกตว่าฟิลด์ URL คือ httpUrl (ไม่ใช่ url):

{
  "mcpServers": {
    "rad-security": {
      "httpUrl": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

Cline

cline_mcp_settings.json — โปรดสังเกตว่า type ต้องเป็น streamableHttp เท่านั้น (camelCase):

{
  "mcpServers": {
    "rad-security": {
      "type": "streamableHttp",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json — โปรดสังเกตว่าฟิลด์ URL คือ serverUrl:

{
  "mcpServers": {
    "rad-security": {
      "serverUrl": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

Client อื่น ๆ

MCP client ส่วนใหญ่รองรับเซิร์ฟเวอร์ Streamable HTTP ระยะไกลที่ใช้ URL และส่วนหัว Authorization — ชื่อฟิลด์เท่านั้นที่แตกต่างกัน ไม่ว่าจะใช้กรณีใด ให้คง เครื่องหมายทับปิดท้าย URL ไว้

Clientตำแหน่งการกำหนดค่าฟิลด์ URLตัวระบุ transportฟิลด์ส่วนหัว
Claude Codeclaude mcp addpositional arg--transport http--header
OpenAI Codex CLI~/.codex/config.tomlurlอนุมานhttp_headers / bearer_token_env_var
Cursor.cursor/mcp.jsonurltype: "http"headers
VS Code.vscode/mcp.json (servers)urltype: "http"headers
Gemini CLI~/.gemini/settings.jsonhttpUrlอนุมานheaders
Clinecline_mcp_settings.jsonurltype: "streamableHttp"headers
Windsurf~/.codeium/windsurf/mcp_config.jsonserverUrlอนุมานheaders

Claude.ai / Claude Desktop / Claude Tag (Slack)

แพลตฟอร์มเหล่านี้เพิ่มเซิร์ฟเวอร์ MCP ระยะไกลเป็น connector ซึ่งใช้การตั้งค่าข้อมูลรับรองของตัวเองแทนส่วนหัวคำขอแบบดิบ เพิ่ม https://api.rad.security/mcp/ เป็น connector แบบกำหนดเอง จากนั้นระบุข้อมูลรับรอง bearer ผ่านการตั้งค่าของ connector:

ทดสอบ (MCP Inspector หรือ curl)

npx @modelcontextprotocol/inspector
# Transport:      Streamable HTTP
# URL:            https://api.rad.security/mcp/   (trailing slash)
# Custom headers: { "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>" }
curl -H "authorization: Bearer <access_key_id>:<secret_key>:<account_id>" \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -X POST https://api.rad.security/mcp/ \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

กำหนดขอบเขตเครื่องมือที่ agent มองเห็น

โดยค่าเริ่มต้น การเชื่อมต่อจะได้รับ toolkit ทั้งหมด หากต้องการให้ agent ใช้ชุดเครื่องมือที่เล็กลง — ลดบริบท/โทเค็นที่ใช้ และยึดหลักสิทธิ์เท่าที่จำเป็น — ให้เพิ่มส่วนหัวกำหนดขอบเขตในการเชื่อมต่อนั้นควบคู่กับ Authorization ระบบจะบังคับใช้ชุดย่อยนี้: เครื่องมือที่อยู่นอกขอบเขตจะถูกซ่อนจาก tools/list และ ปฏิเสธหากมีการเรียกใช้

ส่วนหัวผลลัพธ์
X-Rad-Toolkits: findings, imagesเฉพาะ toolkit เหล่านี้
X-Rad-Exclude-Toolkits: workflowstoolkit ทั้งหมด ยกเว้นรายการเหล่านี้
X-Rad-Readonly: trueเฉพาะเครื่องมือแบบอ่านอย่างเดียว (ตัดเครื่องมือเขียนออก)

Toolkit: containers, clusters, audit, images, kubeobject, runtime, findings, inbox, workflows, knowledge_base, radql, dashboards, integrations โดยค่าเริ่มต้นจะเปิดใช้ทั้งหมด — จำกัดขอบเขตด้วยส่วนหัวด้านบน และใช้ X-Rad-Readonly เมื่อต้องการยกเว้นเครื่องมือเขียนทั้งหมด

ตัวอย่าง — agent แบบอ่านอย่างเดียวสำหรับ findings/images (ใช้ได้กับ client ที่รองรับส่วนหัว; ตัวอย่างใช้ Cursor):

{
  "mcpServers": {
    "rad-security-findings": {
      "type": "http",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>",
        "X-Rad-Toolkits": "findings, images",
        "X-Rad-Readonly": "true"
      }
    }
  }
}

ใน Claude Code ให้ส่ง --header เพิ่มเติม:

claude mcp add --transport http rad-security https://api.rad.security/mcp/ \
  --header "Authorization: Bearer <access_key_id>:<secret_key>:<account_id>" \
  --header "X-Rad-Toolkits: findings, images"

ฟีเจอร์

เครื่องมือทั้งหมดต้องมีการตรวจสอบสิทธิ์และบัญชีใน RAD Security โดยค่าเริ่มต้น endpoint ที่โฮสต์ไว้จะแสดง toolkit ทั้งหมดด้านล่าง จำกัดขอบเขตของ client ด้วย X-Rad-Toolkits / X-Rad-Exclude-Toolkits หรือปิดใช้เครื่องมือเขียนทั้งหมดด้วย X-Rad-Readonly: true

  • รายการบัญชี

    • แสดงคลัสเตอร์และรายละเอียด
  • รายการคอนเทนเนอร์

    • แสดงคอนเทนเนอร์และรายละเอียด
  • Security Findings

    • แสดงและวิเคราะห์ security findings
    • อัปเดตสถานะของ security finding
  • ความปลอดภัยขณะรันไทม์

    • ดู process tree ของคอนเทนเนอร์ที่กำลังทำงาน
    • ดู runtime baseline ของคอนเทนเนอร์ที่กำลังทำงาน
    • วิเคราะห์พฤติกรรมของ process ในคอนเทนเนอร์ที่กำลังทำงาน
  • Audit

    • แสดงรายชื่อผู้ที่เปิด shell เข้าไปใน pod
  • Images and Vulnerabilities

    • ดู SBOM
    • แสดง images และช่องโหว่ของ images
    • ดู images ที่มีช่องโหว่สูงสุด
    • เพิกเฉย / ยกเลิกการเพิกเฉย CVE และแสดงสถานะการจัดการ CVE ที่ใช้งานอยู่
  • Kubernetes Objects

    • ดูรายละเอียดของทรัพยากร Kubernetes ที่ระบุ
    • แสดงทรัพยากร Kubernetes
  • Inbox

    • แสดงรายการใน inbox และรายละเอียด
    • ทำเครื่องหมายรายการใน inbox ว่าเป็นผลบวกลวง
  • Automations (workflows)

    • แสดง automations, runs และ schedules
    • ดูรายละเอียด automation และ run
    • เรียกใช้ automation
    • สร้างและอัปเดต automations รวมถึงเพิ่ม cron schedules

    "Automation" คือชื่อผลิตภัณฑ์ที่ผู้ใช้เห็น ส่วน "workflow" คือออบเจ็กต์ Windmill ที่ API และชื่อเครื่องมือใช้ ทั้งสองคำหมายถึงสิ่งเดียวกัน

  • Knowledge Base

    • ค้นหา knowledge base
    • แสดง collections และ documents
    • เรียกใช้ structured query กับ document
  • Dashboards

    • แสดง dashboards และดูรายละเอียด
    • แสดงและดูรายละเอียดของ dashboard และ widget templates
    • สร้าง dashboard และอัปเดต dashboard เดิม (ฟิลด์ที่ไม่ระบุจะคงเดิม จึงไม่จำเป็นต้องส่ง dashboard ทั้งหมดซ้ำเมื่อแก้ไขเพียงเล็กน้อย)
  • Integrations

    • แสดง external integrations
  • RadQL (การค้นหาขั้นสูง)

    • แสดงประเภทข้อมูลที่ใช้ค้นหาได้ (containers, findings, kubernetes_resources ฯลฯ)
    • ดู schema/metadata ของประเภทข้อมูลที่ระบุ
    • แสดงค่าที่เป็นไปได้สำหรับฟิลด์ตัวกรอง
    • เรียกใช้ RadQL query พร้อมการกรอง การค้นหา และการรวมข้อมูล
    • สร้าง query ด้วยโปรแกรมจากเงื่อนไขแบบมีโครงสร้าง
    • เรียกใช้หลาย query พร้อมกัน

โฮสต์ด้วยตนเอง

ต้องการเรียกใช้เซิร์ฟเวอร์ด้วยตนเองหรือไม่ — เช่น ในสภาพแวดล้อม air-gapped เมื่อต้องปฏิบัติตามข้อกำหนดด้านการจัดเก็บข้อมูล หรือหากไม่ต้องการส่งข้อมูลผ่าน hosted gateway? เผยแพร่ไว้บน npm และในรูปแบบ container image

ข้อกำหนดเบื้องต้น

  • Node.js 20.x ขึ้นไป

ข้อมูลรับรอง

ระบุข้อมูลรับรอง RAD Security ผ่าน environment variables:

RAD_SECURITY_ACCESS_KEY_ID="your_access_key"
RAD_SECURITY_SECRET_KEY="your_secret_key"
RAD_SECURITY_ACCOUNT_ID="your_account_id"

# Optional: fetched automatically from the account if not set.
# Set this without RAD_SECURITY_ACCOUNT_ID for a session across all the tenant's accounts.
RAD_SECURITY_TENANT_ID="your_tenant_id"

# Optional: true exposes only read-only tools. Tenant-scoped sessions are read-only unless this is false.
RAD_SECURITY_READONLY="true"

npx (stdio) — เช่น Claude Desktop

{
  "mcpServers": {
    "rad-security": {
      "command": "npx",
      "args": ["-y", "@rad-security/mcp-server"],
      "env": {
        "RAD_SECURITY_ACCESS_KEY_ID": "<your-access-key-id>",
        "RAD_SECURITY_SECRET_KEY": "<your-secret-key>",
        "RAD_SECURITY_ACCOUNT_ID": "<your-account-id>"
      }
    }
  }
}

Docker (Streamable HTTP)

docker build -t rad-security/mcp-server .
docker run \
  -e TRANSPORT_TYPE=streamable \
  -e RAD_SECURITY_ACCESS_KEY_ID=your_access_key \
  -e RAD_SECURITY_SECRET_KEY=your_secret_key \
  -e RAD_SECURITY_ACCOUNT_ID=your_account_id \
  -p 3000:3000 \
  rad-security/mcp-server

การกรอง Toolkit

ควบคุมว่าเซิร์ฟเวอร์ที่โฮสต์ด้วยตนเองจะแสดง toolkit ใดบ้าง:

  • INCLUDE_TOOLKITS: รายการ toolkit ที่คั่นด้วยจุลภาคเพื่อรวมไว้ (เปิดใช้เฉพาะรายการเหล่านี้)
  • EXCLUDE_TOOLKITS: รายการ toolkit ที่คั่นด้วยจุลภาคเพื่อยกเว้น (เปิดใช้รายการอื่นทั้งหมด) จะไม่มีผลหากตั้งค่า INCLUDE_TOOLKITS

Toolkit ที่ใช้ได้: containers, clusters, audit, images, kubeobject, runtime, findings, inbox, workflows, knowledge_base, radql, dashboards, integrations โดยค่าเริ่มต้นจะเปิดใช้ทั้งหมด

# Only the workflows toolkit
INCLUDE_TOOLKITS="workflows"

# Everything except runtime
EXCLUDE_TOOLKITS="runtime"

หลาย tenant (การตรวจสอบสิทธิ์ต่อคำขอ)

MCP_AUTH_MODE ควบคุมวิธีที่การติดตั้งใช้งาน Streamable HTTP ตรวจสอบสิทธิ์คำขอขาเข้า ซึ่งเป็นวิธีที่ endpoint ที่โฮสต์ไว้ใช้:

  • MCP_AUTH_MODE=env (ค่าเริ่มต้น) — ทุกเซสชันใช้ข้อมูลรับรองจาก environment ของ RAD_SECURITY_* เป็นแบบ tenant เดียว และ ไม่มีการตรวจสอบสิทธิ์ที่ชั้น HTTP จึงต้องไม่เปิดให้เครือข่ายที่ไม่น่าเชื่อถือเข้าถึง
  • MCP_AUTH_MODE=header — ทุกคำขอต้องมีข้อมูลรับรองของตัวเองในส่วนหัว Authorization (รูปแบบ Bearer <access_key_id>:<secret_key>:<account_id> ด้านบน); หากไม่มีส่วนหัวหรือรูปแบบไม่ถูกต้อง ระบบจะปฏิเสธด้วย 401 รองรับเฉพาะกับ TRANSPORT_TYPE=streamable เท่านั้น โดย RAD_SECURITY_API_URL จะนำมาจากการกำหนดค่าของเซิร์ฟเวอร์ ไม่ใช่จากผู้เรียก
docker run \
  -e TRANSPORT_TYPE=streamable \
  -e MCP_AUTH_MODE=header \
  -e RAD_SECURITY_API_URL=https://api.rad.security \
  -p 3000:3000 \
  rad-security/mcp-server

transport แบบ SSE (TRANSPORT_TYPE=sse) เลิกใช้แล้วและถูกแทนที่ด้วย Streamable HTTP โดยใช้ข้อมูลรับรองจาก env เท่านั้น

การพัฒนา

# Install dependencies
npm install

# Run type checking
npm run type-check

# Run linter
npm run lint

# Build
npm run build

ใบอนุญาต

ใบอนุญาต MIT — ดูรายละเอียดในไฟล์ LICENSE