RAD Security

공식

RAD Security 플랫폼과 상호작용하여 Kubernetes 및 클라우드 환경에 대한 AI 기반 보안 인사이트를 제공합니다.

RAD Security MCP(으)로 무엇을 할 수 있나요?

  • 보안 발견 사항 검토 — 보안 발견 사항을 나열하고 분석한 다음, 발견 사항의 상태를 업데이트합니다.
  • 이미지와 CVE 검사 — SBOM을 가져오고, 취약점이 있는 이미지를 나열하고, 취약점이 가장 많은 이미지를 찾고, CVE를 무시하거나 무시 해제합니다.
  • 런타임 동작 추적 — 실행 중인 컨테이너의 프로세스 트리와 런타임 기준선을 가져오고 프로세스 동작을 분석합니다.
  • Pod 액세스 감사 — Pod에 셸로 접속한 사용자를 나열합니다.
  • RadQL 쿼리 실행 — 데이터 유형을 나열하고, 스키마를 가져오고, 필터링 또는 집계 쿼리를 실행합니다. 여러 쿼리를 병렬로 실행할 수도 있습니다.
  • 자동화 관리 — 자동화, 실행 기록, 일정을 나열하고, 실행 세부 정보를 가져오고, 자동화를 실행하거나 생성 및 업데이트합니다.

문서

RAD Security MCP 서버

npm version

Kubernetes 및 클라우드 환경에 AI 기반 보안 인사이트를 제공하는 RAD Security용 Model Context Protocol (MCP) 서버입니다.

RAD Security MCP server

연결 (호스팅 — 권장)

RAD Security가 MCP 서버를 대신 실행하므로, 대부분의 사용자는 설치하거나 호스팅할 필요가 없습니다. MCP 클라이언트가 호스팅된 엔드포인트를 가리키도록 설정하고 RAD Security 자격 증명으로 인증하세요.

  • 엔드포인트: https://api.rad.security/mcp/ — 끝에 슬래시가 있는지 확인하세요.

  • 전송: Streamable HTTP.

  • 인증: Authorization 헤더에 자격 증명을 전송합니다.

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

    <access_key_id> 및 <secret_key>은 RAD Security API 액세스 키입니다 (RAD Security 콘솔에서 생성). <account_id>는 계정 ID입니다. 서버는 모든 요청을 RAD Security API에 대해 인증하며, 서버 측에는 자격 증명을 저장하지 않습니다.

수명이 짧은 Bearer ory_st_<session_token>:<account_id> 형식도 사용할 수 있지만, 세션 토큰은 만료됩니다. 장기간 사용할 경우 (예: Slack / Claude Tag) 액세스 키를 사용하는 것이 좋습니다.

테넌트 전체에서 하나의 연결 사용

하나의 MCP 구성으로 모든 계정에서 작업하려면 테넌트에 액세스 키를 만들고 계정 ID 대신 tenant=<tenant_id>을 사용하세요.

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

테넌트 범위 세션에서는 다음과 같이 동작합니다.

  • list_accounts 도구는 테넌트의 계정을 반환합니다.
  • 계정 범위 도구에는 account_id 인수가 필요하며, 이 값은 테넌트의 하위 계정이어야 합니다. 각 호출은 하나의 계정만 대상으로 하며, 여러 계정의 결과를 합치지 않습니다.
  • 테넌트 자격 증명은 모든 계정에 접근할 수 있으므로 기본적으로 읽기 전용 도구만 사용할 수 있습니다. 쓰기 도구를 활성화하려면 X-Rad-Readonly: false를 전송하세요.

npx/stdio 서버의 경우 RAD_SECURITY_ACCOUNT_ID 없이 RAD_SECURITY_TENANT_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를 사용하고, 비밀 값을 환경 변수에 보관할 수 있습니다 (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 — 래퍼 키는 mcpServers이 아니라 servers입니다.

{
  "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 필드는 url이 아니라 httpUrl입니다.

{
  "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>"
      }
    }
  }
}

기타 클라이언트

대부분의 MCP 클라이언트는 URL과 Authorization 헤더를 사용하는 원격 Streamable HTTP 서버를 지원합니다. 필드 이름만 다릅니다. 모든 경우에 URL의 끝에 슬래시를 유지하세요.

클라이언트구성 위치URL 필드전송 표시자헤더 필드
Claude Codeclaude mcp add위치 인수--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 서버를 커넥터로 추가하며, 일반 요청 헤더 대신 자체 자격 증명 설정을 사용합니다. https://api.rad.security/mcp/를 사용자 지정 커넥터로 추가한 다음, 커넥터 설정에서 bearer 자격 증명을 입력하세요.

테스트 (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"}}}'

에이전트에 표시되는 도구 범위 지정

기본적으로 연결에는 모든 툴킷이 제공됩니다. 에이전트에 더 적은 집합을 제공하려면 (컨텍스트/토큰 오버헤드를 줄이고 최소 권한을 적용하려면) Authorization과 함께 해당 연결에 범위 지정 헤더를 추가하세요. 지정된 하위 집합이 강제 적용됩니다. 범위 밖의 도구는 tools/list에서 숨겨지며, 호출하더라도 거부됩니다.

헤더효과
X-Rad-Toolkits: findings, images지정한 툴킷만 사용
X-Rad-Exclude-Toolkits: workflows지정한 툴킷을 제외한 모든 툴킷 사용
X-Rad-Readonly: true읽기 전용 도구만 사용 (쓰기 도구 제외)

툴킷: containers, clusters, audit, images, kubeobject, runtime, findings, inbox, workflows, knowledge_base, radql, dashboards, integrations. 기본적으로 모두 활성화되어 있습니다. 위 헤더로 범위를 좁히고, 모든 쓰기 도구를 제외하려면 X-Rad-Readonly를 사용하세요.

예시 — 읽기 전용 findings/images 에이전트 (헤더를 지원하는 모든 클라이언트에서 사용 가능, 여기서는 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 계정이 필요합니다. 호스팅된 엔드포인트는 기본적으로 아래의 모든 툴킷을 제공합니다. X-Rad-Toolkits / X-Rad-Exclude-Toolkits로 클라이언트 범위를 좁히거나, X-Rad-Readonly: true으로 모든 쓰기 도구를 제외하세요.

  • 계정 인벤토리

    • 클러스터 및 세부 정보 나열
  • 컨테이너 인벤토리

    • 컨테이너 및 세부 정보 나열
  • 보안 탐지 결과

    • 보안 탐지 결과 나열 및 분석
    • 보안 탐지 결과의 상태 업데이트
  • 런타임 보안

    • 실행 중인 컨테이너의 프로세스 트리 가져오기
    • 실행 중인 컨테이너의 런타임 기준선 가져오기
    • 실행 중인 컨테이너의 프로세스 동작 분석
  • 감사

    • 파드에 셸로 접속한 사용자 나열
  • 이미지 및 취약점

    • SBOM 가져오기
    • 이미지 및 취약점 나열
    • 취약점이 가장 많은 이미지 가져오기
    • CVE 무시 / 무시 해제 및 활성 CVE 처리 상태 나열
  • Kubernetes 객체

    • 특정 Kubernetes 리소스의 세부 정보 가져오기
    • Kubernetes 리소스 나열
  • 받은 편지함

    • 받은 편지함 항목 및 세부 정보 나열
    • 받은 편지함 항목을 오탐으로 표시
  • 자동화 (workflows)

    • 자동화, 실행 및 일정 나열
    • 자동화 및 실행 세부 정보 가져오기
    • 자동화 실행
    • 자동화 생성 및 업데이트, cron 일정 추가

    "Automation"은 사용자가 보는 제품 이름이고, "workflow"는 API와 도구 이름에서 사용하는 기반 Windmill 객체입니다. 둘은 같은 것을 가리킵니다.

  • 지식 베이스

    • 지식 베이스 검색
    • 컬렉션 및 문서 나열
    • 문서에 대해 구조화된 쿼리 실행
  • 대시보드

    • 대시보드 나열 및 세부 정보 가져오기
    • 대시보드 및 위젯 템플릿 나열 및 가져오기
    • 대시보드 생성 및 기존 대시보드 업데이트 (생략된 필드는 변경되지 않으므로, 일부만 수정할 때 대시보드 전체를 다시 전송할 필요가 없습니다)
  • 통합

    • 외부 통합 나열
  • RadQL (고급 쿼리)

    • 쿼리에 사용할 수 있는 데이터 유형 나열 (containers, findings, kubernetes_resources 등)
    • 특정 데이터 유형의 스키마/메타데이터 가져오기
    • 필터 필드의 가능한 값 나열
    • 필터링, 검색 및 집계를 사용해 RadQL 쿼리 실행
    • 구조화된 조건으로 쿼리를 프로그래밍 방식으로 구성
    • 여러 쿼리를 병렬로 실행

자체 호스팅

예를 들어 에어갭 환경이나 데이터 상주 요건 때문에 서버를 직접 실행하고 싶거나, 호스팅 게이트웨이를 거치지 않으려는 경우 npm 및 컨테이너 이미지로 게시된 서버를 사용할 수 있습니다.

사전 요구 사항

  • Node.js 20.x 이상

자격 증명

환경 변수를 통해 RAD Security 자격 증명을 제공합니다.

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

툴킷 필터링

자체 호스팅 서버가 제공하는 툴킷을 제어합니다.

  • INCLUDE_TOOLKITS: 포함할 툴킷을 쉼표로 구분한 목록 (이 툴킷만 활성화됩니다).
  • EXCLUDE_TOOLKITS: 제외할 툴킷을 쉼표로 구분한 목록 (나머지는 모두 활성화됩니다). INCLUDE_TOOLKITS이 설정된 경우 무시됩니다.

사용 가능한 툴킷: 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"

멀티테넌트 (요청별 인증)

MCP_AUTH_MODE은 Streamable HTTP 배포가 인바운드 요청을 인증하는 방식을 제어합니다. 호스팅된 엔드포인트에서 사용하는 방식입니다.

  • MCP_AUTH_MODE=env (기본값) — 모든 세션에서 RAD_SECURITY_* 환경 자격 증명을 사용합니다. 단일 테넌트이며 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

SSE 전송 (TRANSPORT_TYPE=sse)은 Streamable HTTP를 대신 사용하도록 더 이상 권장되지 않으며, 환경 자격 증명만 사용합니다.

개발

# Install dependencies
npm install

# Run type checking
npm run type-check

# Run linter
npm run lint

# Build
npm run build

라이선스

MIT License - 자세한 내용은 LICENSE 파일을 참조하세요