본문으로 건너뛰기

Claw Patrol: 에이전트 전용 보안 방화벽 설계와 운영 관점

· 약 4분
p4r4d0xb0x
Rustacean, AI, OSS Enthusiast

cover

Claw Patrol은 에이전트(프로세스 또는 자동화 에이전트)가 생성하는 네트워크 트래픽을 가로채어 프로덕션 시스템으로의 불필요하거나 위험한 요청이 도달하지 않도록 실시간으로 검사하고 차단하는 게이트웨이입니다. 이 글은 공개된 README 및 레포지토리 정보를 바탕으로 아키텍처, 규칙 언어, 배포 옵션과 운영상 고려사항을 기술적으로 정리합니다. 가능한 한 원문에 나온 사실만 반영했으며, 레포지토리 외부의 구현 세부(예: 내부 동작의 모든 케이스)는 제공된 증거에 없으므로 불확실함을 명시합니다.

개요 요약

  • 역할: 에이전트와 프로덕션(데이터베이스, 쿠버네티스, HTTP 서비스 등) 사이에 위치해 트래픽을 파싱하고 규칙으로 판정해 허용/거부/인증 요청을 수행.
  • 규칙 언어: HCL(구성 파일) + CEL(조건식)을 사용해 프로토콜별로 추출한 "wire-level facts"에 대해 판정.
  • 배포 모드: gateway(프록시), join(WireGuard 또는 Tailscale을 통한 호스트 단위 연결), run(프로세스 단위 터널링: Linux netns, macOS NetworkExtension).
  • 설치: 공식 설치스크립트와 소스 빌드(make) 지원.

설계와 핵심 개념

Claw Patrol은 네트워크 계층에서 각 프로토콜(예: Postgres, ClickHouse, Kubernetes API, HTTP)의 요청을 파싱해 사실(facts)을 추출한 뒤, 사용자 정의 정책에 따라 동작을 결정합니다. README에 제시된 예시는 "k8s-no-secrets" 규칙처럼 특정 리소스(k8s.resource == 'secrets')를 기준으로 거부(verdict = "deny")할 수 있음을 보여줍니다.

예시 규칙(원문 발췌):

rule "k8s-no-secrets" {
endpoint = k8s-prod
condition = "k8s.resource == 'secrets'"
verdict = "deny"
reason = "Secret values must not leave the cluster via the agent"
}

위 규칙은 README에 직접 포함된 구성 예시이며, 규칙의 핵심은 다음과 같습니다.

  • endpoint: 규칙이 적용되는 대상(예: k8s-prod)
  • condition: CEL 표현식으로, 게이트웨이가 추출한 wire-level facts에 대해 평가
  • verdict: allow/deny 등 정책 결정
  • reason: 운영자 가시성/감사 목적 설명
용어 해설: 에이전트

쉬운정의: 자동화된 작업을 수행하거나 LLM/봇처럼 외부 서비스와 상호작용하는 프로세스입니다. 일상 예시: CI 파이프라인에서 빌드 결과를 원격 저장소에 업로드하는 스크립트가 에이전트 역할을 할 수 있습니다.

용어 해설: HCL

쉬운정의: HashiCorp Configuration Language의 약자이며, 사람 읽기 쉬운 구성 파일 문법입니다. 일상 예시: Terraform 구성 파일을 작성할 때 사용하는 문법과 유사합니다.

용어 해설: CEL

쉬운정의: Common Expression Language의 약자로, 안전하고 임베디드하기 쉬운 표현식 언어입니다. 정책의 조건식에 쓰입니다. 일상 예시: "user.age > 18" 같은 간단한 논리식을 정책 조건으로 쓰는 것과 유사합니다.

용어 해설: wire-level facts

쉬운정의: 네트워크 흐름을 파싱해 게이트웨이가 추출한 프로토콜별 필드(예: SQL 동사, Kubernetes 리소스, HTTP 경로)입니다. 일상 예시: HTTP 요청의 경우 method와 path를 추출해 "method == 'POST' && path.startsWith('/admin')"처럼 조건을 만들 수 있습니다.

배포 및 운영 형태

README는 세 가지 운영 형태를 명확히 제시합니다.

  • gateway: 중앙 프록시 바이너리(단일 바이너리로 HCL 구성 로드)
  • join: WireGuard(또는 Tailscale)를 통해 호스트 전체를 게이트웨이에 연결
  • run: 개별 프로세스의 트래픽만 터널링(리눅스에서는 네임스페이스, macOS에서는 NetworkExtension 사용)

이 구성은 에이전트 격리 수준을 세밀하게 조정할 수 있게 해 주며, "run" 모드는 개발 환경에서 특정 프로세스만 검사하려는 경우 유용합니다. 반면 "join"은 호스트 전체 트래픽을 게이트웨이로 라우팅할 때 간편합니다.

용어 해설: WireGuard

쉬운정의: 간단하고 성능 좋은 VPN 프로토콜/구현으로, 호스트 간 안전한 터널을 만듭니다. 일상 예시: 원격 근무자가 사내 네트워크에 접속할 때 사용하는 가벼운 VPN과 유사합니다.

운영 고려사항 (README 기반 관찰)

  • 정책 가시성: 규칙은 이유(reason)를 명시할 수 있어 감사 로그나 운영자 알림에 활용 가능.
  • 프로토콜별 파싱 정확도: README는 여러 프로토콜(Postgres, ClickHouse, Kubernetes, HTTP)을 다루며, 각 프로토콜에서 어떤 사실을 추출하는지는 config reference에 정의되어 있다고 명시합니다. 구체적 사실 목록은 공식 문서(config reference)를 참고해야 합니다.
  • 성능 및 레이턴시: README는 게이트웨이가 "wire-level"에서 작동한다고 하지만, 실제 처리 지연과 확장성 수치는 명시하지 않습니다 — 이 부분은 레포지토리의 구현·벤치마크나 운영자 경험을 통해 검증해야 합니다.

제한 사항과 자료의 불확실성

본 글은 공개된 README와 레포지토리 상단 설명을 근거로 작성했습니다. 내부 구현의 모든 세부(예: 파싱 엔진의 내부 로직, 캐싱 전략, 고가용성 구성 가이드 등)는 제공된 증거에 포함되어 있지 않아 추정하지 않았습니다. 운영 환경에서의 성능 특성, 대량 트래픽 처리 한계, 실패 모드 등은 실험 또는 추가 문서화가 필요합니다.

참고(레포지토리에서 확인된 사항)

  • 설치 스크립트: curl -fsSL https://clawpatrol.dev/install.sh | sh
  • 소스 빌드: make (Go 및 Node.js 필요)
  • 라이선스: MIT
  • 예시 규칙과 config reference 링크는 README에 명시되어 있으며, 더 상세한 필드 목록은 공식 문서를 참조하라고 안내하고 있습니다.

결론

Claw Patrol은 에이전트-발신 트래픽을 세밀하게 제어하려는 조직에 적합한 접근법을 제공합니다. HCL 기반 구성과 CEL 조건식을 결합해 프로토콜 수준의 사실로 정책을 기술하는 모델은 운영자에게 높은 표현력을 줍니다. 다만, 실제 배포 전에는 파싱 정확성, 지연/성능 영향, 고가용성 구성 등을 자체 검증할 필요가 있습니다. 본 포스트는 공개 README를 기반으로 한 요약이며, 세부 구현과 운영 지침은 공식 문서와 레포지토리의 추가 자료를 확인하시기 바랍니다.

Sources