RAD Security
공식RAD Security 플랫폼과 상호작용하여 Kubernetes 및 클라우드 환경에 대한 AI 기반 보안 인사이트를 제공합니다.
RAD Security MCP(으)로 무엇을 할 수 있나요?
- 보안 발견 사항 검토 — 보안 발견 사항을 나열하고 분석한 다음, 발견 사항의 상태를 업데이트합니다.
- 이미지와 CVE 검사 — SBOM을 가져오고, 취약점이 있는 이미지를 나열하고, 취약점이 가장 많은 이미지를 찾고, CVE를 무시하거나 무시 해제합니다.
- 런타임 동작 추적 — 실행 중인 컨테이너의 프로세스 트리와 런타임 기준선을 가져오고 프로세스 동작을 분석합니다.
- Pod 액세스 감사 — Pod에 셸로 접속한 사용자를 나열합니다.
- RadQL 쿼리 실행 — 데이터 유형을 나열하고, 스키마를 가져오고, 필터링 또는 집계 쿼리를 실행합니다. 여러 쿼리를 병렬로 실행할 수도 있습니다.
- 자동화 관리 — 자동화, 실행 기록, 일정을 나열하고, 실행 세부 정보를 가져오고, 자동화를 실행하거나 생성 및 업데이트합니다.
문서
RAD Security MCP 서버
Kubernetes 및 클라우드 환경에 AI 기반 보안 인사이트를 제공하는 RAD Security용 Model Context Protocol (MCP) 서버입니다.
연결 (호스팅 — 권장)
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 Code | claude mcp add | 위치 인수 | --transport http | --header |
| OpenAI Codex CLI | ~/.codex/config.toml | url | 추론됨 | http_headers / bearer_token_env_var |
| Cursor | .cursor/mcp.json | url | type: "http" | headers |
| VS Code | .vscode/mcp.json (servers) | url | type: "http" | headers |
| Gemini CLI | ~/.gemini/settings.json | httpUrl | 추론됨 | headers |
| Cline | cline_mcp_settings.json | url | type: "streamableHttp" | headers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | serverUrl | 추론됨 | headers |
Claude.ai / Claude Desktop / Claude Tag (Slack)
이 환경에서는 원격 MCP 서버를 커넥터로 추가하며, 일반 요청 헤더 대신 자체 자격 증명 설정을 사용합니다. https://api.rad.security/mcp/를 사용자 지정 커넥터로 추가한 다음, 커넥터 설정에서 bearer 자격 증명을 입력하세요.
- Claude Tag (Slack):
.mcp.json이 엔드포인트를 가리키도록 서버를 플러그인으로 연결하고, Access 번들의 Credentials 탭에 bearer 자격 증명을 추가하세요. Claude Tag — 사용자 지정 MCP 서버 연결을 참조하세요. - Claude.ai / Desktop: Settings → Connectors에서 추가하세요. 사용자 지정 커넥터를 참조하세요.
테스트 (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 파일을 참조하세요