해킹당하지 않고 AI 에이전트에게 네트워크 액세스 권한을 부여하는 방법
요약
AI 에이전트의 네트워크 송신(egress) 권한을 안전하게 관리하여 데이터 유출을 방지하는 보안 전략을 다룹니다. 기본 거부(default-deny) 원칙과 도메인 기반 허용 목록 관리를 통해 에이전트의 침해 사고가 실제 데이터 유출로 이어지는 것을 차단하는 방법을 제시합니다.
핵심 포인트
- 기본 거부(default-deny) 원칙을 적용하여 필요한 목적지만 허용할 것
- IP가 아닌 도메인 단위로 이그레스 프록시 허용 목록을 관리할 것
- DNS를 통한 데이터 유출을 막기 위해 제어 가능한 리졸버를 사용할 것
- 시스템 단위가 아닌 개별 작업(task) 단위로 네트워크 범위를 제한할 것
- 모든 아웃바운드 호출을 기록하여 비정상적인 트래픽을 모니터링할 것
교차 게시됨. 원문: stellarbytecapital.com/blog/ai-agent-network-egress-control
가장 유용한 AI 에이전트들은 네트워크가 필요합니다. 시장 데이터를 가져오고, API를 호출하며, 데이터베이스에 접속합니다. 하지만 당신의 샌드박스(sandbox)가 공개된 인터넷에 접속할 수 있는 순간, 공격자가 데이터를 유출(exfiltrate)하거나 페이로드(payload)를 가져오는 데 필요한 바로 그 채널을 구축하게 됩니다. 네트워크 송신(Network egress)은 격리된 침해 사고가 실제 사고로 전환되는 지점이며, 통제 팀들이 가장 자주 누락하는 부분입니다.
왜 송신(egress) 제어가 가장 중요한 통제 수단인가
침해된 에이전트가 실제로 피해를 입히기 위해 무엇이 필요한지 생각해 보십시오. 물론 에이전트는 자신의 샌드박스 내에 있는 데이터를 읽을 수 있습니다. 하지만 이를 _유출(exfiltrate)_하려면, 시스템 외부로 나가는 네트워크 경로가 필요합니다. 그 경로를 차단하면, "성공적인" 침해 사고가 발생하더라도 아무것도 보낼 곳이 없게 됩니다.
송신(egress) 권한이 없는 탈출된 에이전트는 대체로 무해합니다. 격리(Isolation)는 코드가 밖으로 빠져나가는 것을 막고, 송신(egress) 제어는 데이터가 밖으로 나가는 것을 막습니다. 당신은 이 두 가지가 모두 필요합니다.
원칙: 기본 거부(default-deny), 그 다음 허용 목록(allowlist)
샌드박스는 외부로 나가는 네트워크가 전혀 없는 상태에서 시작합니다. 작업에 진정으로 필요한 특정 목적지만을 열어주고, 그 외에는 아무것도 허용하지 않습니다. 모든 나쁜 목적지를 열거할 수는 없지만, 작업에 실제로 필요한 소수의 좋은 목적지는 열거할 수 있습니다.
실제로 구현하는 방법
- 경로 없이 시작하십시오 (Start with no route). 샌드박스(sandbox)에 기본 게이트웨이(default gateway)가 없는 네트워크 네임스페이스(network namespace)를 부여하십시오.
- 프록시를 통해 도메인 단위로 허용 목록(Allowlist)을 관리하십시오. 명시적인 목록만 허용하는 이그레스 프록시(egress proxy)를 통해 아웃바운드 트래픽(outbound traffic)을 라우팅하십시오. IP가 아닌 도메인(domain) 단위로 허용 목록을 작성하십시오. IP는 계속 변경되며, 공유 CDN(Content Delivery Network)을 사용하면 하나의 IP가 수천 개의 호스트를 서비스하기 때문입니다.
- DNS를 제어하십시오. 샌드박스에 직접 제어할 수 있는 리졸버(resolver)를 제공하십시오. DNS 그 자체로 데이터 유출 채널(exfiltration channel)이 될 수 있습니다. 데이터가 조회 이름(lookup names) 내부에 숨겨져 밀반출될 수 있기 때문입니다.
- 시스템 단위가 아닌 작업(task) 단위로 범위를 제한하십시오. Bitget의 API가 필요한 작업에는 Bitget의 API만 허용하십시오. 지금까지 모든 작업이 필요로 했던 모든 엔드포인트(endpoint)를 허용해서는 안 됩니다. 일회용 샌드박스(disposable sandboxes)를 사용하면 이를 자연스럽게 구현할 수 있습니다. 허용 목록은 컨테이너와 함께 소멸합니다.
- 모든 아웃바운드 호출을 기록하십시오. 목적지, 크기, 타이밍을 기록하십시오. 비정상적인 이그레스(egress) 볼륨은 무언가 잘못되었다는 실시간 신호입니다.
흔한 실수들
- "작업에 필요할 수도 있으니까"라며 모든 것을 열어두는 것. 기본 거부(Default-deny) 원칙을 세운 뒤, 작동하지 않는 것들을 하나씩 추가하십시오.
- IP 단위로 허용 목록을 작성하는 것. 공유 CDN과 순환하는 IP는 이 방식을 너무 허용적이고 취약하게 만듭니다.
- DNS를 잊어버리는 것. 다른 부분은 모두 잠겨 있더라도 DNS가 열려 있는 샌드박스는 여전히 데이터 유출 채널을 가지고 있습니다.
- 로깅(logging)을 하지 않는 것. 샌드박스 밖으로 무엇이 나갔는지 볼 수 없다면, 오용을 조사하거나 탐지할 수 없습니다.
- 영구적인 글로벌 허용 목록을 사용하는 것. 이는 계속 늘어나기만 하며, 모든 항목은 모든 작업에 대해 공격 표면(attack surface)이 됩니다.
이그레스 제어는 전체 벽이 아니라 하나의 계층입니다
이그레스(egress)를 차단하는 것이 격리(isolation)를 대체하는 것은 아닙니다. 이는 격리를 보완합니다. 제어 계층은 다음과 같이 쌓입니다: 실행 시마다 생성되는 일회용 격리, 최소 권한(least privilege), 샌드박스 내 비밀 정보(secrets) 미보관, 그리고 기본 거부(default-deny) 이그레스. 각 계층은 다른 계층이 막지 못하는 문을 닫아줍니다.
에이전트에게 눈앞의 작업을 수행하는 데 정확히 필요한 네트워크만 부여하십시오. 단 하나의 목적지도 더 허용하지 마십시오.
저희는 Xingyao Byte입니다 — 보안 AI 실행 계층, 퀀트 트레이딩(quant trading) 시스템, 그리고 결제 플랫폼을 구축하고 있습니다. 원격 근무 및 비동기 우선 방식 → stellarbytecapital.com
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기