Connect with us

사이버 보안

6 Best Practices for Building a Secure MCP Server

mm

Anthropic이 2024년 말에 Model Context Protocol을 출시한 이후, 많은 회사들이 자신의 데이터에 접근할 수 있도록 MCP 서버를 구축하면서 채택이 급증하고 있습니다.

이것은 AI의 능력을 넓히는 데에는 유익하지만,同時에 이러한 회사들을 상당한 보안 취약성에 노출시킵니다.

적절한 예방 조치 없이, MCP 서버는 이메일, CRM, 파일 저장 도구 및 기타 애플리케이션의 민감한 데이터에 대한 완전한 접근을 제공할 수 있습니다. 또한, 공격적인 보안 조치를 취해도, 악의적인 행위자는 인증 정보를 얻기 위해 프롬프트 주입 공격과 같은 전략을 사용할 수 있습니다.

우리는 이미 보안 사고가 발생하기 시작했습니다. 예를 들어, GitHub는 최근 MCP 취약점을 경험했으며, 이는 개인 저장소를 노출시켰습니다.

우리는 MCP 서버를 구축하고 관리하는 데 필요한 사항을 직접 경험을 통해 배웠습니다.

이와 관련하여, MCP 서버를 구축하고 관리하기 위한 나의 최상위 팁을 공유하겠습니다.

하드 블록과 권한 관리로 보안 보장

MCP의 가장 중요한 보안 원칙은 하드 블록이 항상 에이전트에게 제공된 프롬프트와 기타 소프트 컨트롤을 재정의한다는 것입니다. AI 에이전트는 도구를 호출하고 입력을 보내는 시기를 결정할 수 있는 유연성을 가지고 있지만, 도구 구현 또는 도구 앞에 있는 하드 코딩된 계층은 사용자의 身分이 올바르게 인증된 경우 권한 문제를 방지합니다.

보안을 보장하려면, 확장 프로그램을 엄격한 권한 관리와 함께 구성하여 시작하십시오.

이것은 API 키에 부여된 권한을 관리하는 것으로 시작됩니다. 도구는 정적 코드를 래핑하고 보안 정책을 시행할 수 있는 제어된 인터페이스를 생성하여 에이전트의 동작과 관계없이 보안을 강화합니다.

API 키를 비밀번호처럼 다루기

하드 코딩된 키를 사용하는 대신, 모든 자격 증명을 코드와 구성 파일에서 환경 변수 또는 전용 비밀 관리자(예: HashiCorp Vault 또는 AWS Secrets Manager)로 이동하십시오.

임시 자격 증명은 매우 민감한 데이터 및 영구 연결이 필요하지 않은 사용 사례에 대한 추가 보안 계층을 제공합니다. 이 경우, AWS STS와 같은 도구는 빠르게 만료되는 짧은 기간 토큰을 생성하여 잠재적인 악용의 창을 최소화할 수 있습니다. 그러나 대부분의 구현에서는 적절한 OAuth와 토큰 새로 고침 또는 잘 보안된 기본 인증이 이러한 문제를 효과적으로 해결할 수 있습니다.

중요한 것은 각 도구에 대한 역할 기반 액세스 제어(RBAC)를 구현하고, 내장된 권한 관리 시스템을 사용하여 세분화된 역할을 부여하는 것입니다. 각 MCP 통합에는 필요한 권한으로만 엄격하게 범위가 지정된 자신의 세분화된 역할을 제공하십시오. GitHub에 대한 읽기 전용 액세스만 허용하는 Vault 정책은 루트 토큰보다 훨씬 더 안전합니다. 클라우드 제공업체의 네이티브 ID 및 액세스 관리(IAM) 시스템은 최소 권한 액세스 패턴을 자동으로 적용할 수 있습니다.

DLP 및 PII 감지 소프트웨어로 민감한 데이터 보호

MCP 도구는 조직 전체에서大量의 민감한 데이터에 액세스할 수 있습니다. 적절한 제어가 없으면, 고객의 개인 정보, 금융 기록 또는 제품에 대한 기밀 정보를 우발적으로 노출시킬 수 있습니다.

이를 해결하기 위해, MCP 트래픽을 실시간으로 검사할 수 있는 데이터 손실 방지(DLP) 소프트웨어를 배포하십시오. 신용 카드 번호, 사회 보장 번호, API 키 및 기타 민감한 패턴의 전송을 감지하고 차단하는 DLP 규칙을 구성하십시오.

또한 프롬프트, 도구 응답 및 감사 로그에서 개인 정보를 자동으로 식별하고 마스킹할 수 있는 도구를 사용하십시오. 구조화된 데이터베이스 필드, 비정형 텍스트 및 이미지 콘텐츠를 포함한 다양한 형식에서 PII를 감지할 수 있는 솔루션을 고려하십시오. OCR 또는 NLP와 같은 고급 기술을 사용하여 이미지 콘텐츠에서 개인 정보를 감지할 수 있습니다.

의존성 보안 및 관리

MCP 생태계의 급속한 성장은 잠재적으로 신뢰할 수 없는 바이너리의狂野 서부를 만들었습니다. 커뮤니티에서 게시된 서버는 백도어, 유지 관리가 불량하거나 단순히 버려질 수 있습니다. 검증 없이 의존성을 설치하면 악의적인 코드를 실행할 위험이 있습니다.

디지털 서명 및 체크섬을 사용하여 코드가 조작되지 않았는지 확인하여 엄격한 의존성 관리를 구현하십시오. 또한, 검증된 인증 확인 코드를 재사용하고, 완전한 테스트를 작성하며, 정적 애플리케이션 보안 테스트(SAST), 동적 애플리케이션 보안 테스트(DAST) 및 소프트웨어 구성 분석(SCA)와 같은 자동화된 도구를 사용하여 악용되기 전에 취약성을 식별하십시오.

각 도구를 철저히 테스트

직접 주입 공격은 악의적인 명령을 도구 호출 프롬프트에 삽입하지만, 간접 공격은 더 미묘하고 잠재적으로 더 위험할 수 있습니다. 공격자는 LLM 프롬프트에 포함되는 도구 설명 또는 메타데이터에 악의적인 명령을 삽입할 수 있습니다.

모든 도구는 배포 전에 자동화된 테스트와 보안 전문가의 검토를 결합한 철저한 승인 과정을 거쳐야 합니다. 수동 확인, 시스템 프롬프트와 사용자 입력의 명확한 분리, 사용자 프롬프트 및 도구 메타데이터에서 잠재적인 악의적인 명령을 식별할 수 있는 자동 감지 시스템을 포함한 계층화된 방어 조치를 구현하십시오.

보안 사고를 적극적으로 모니터링

기초적인 제어를 넘어서, 팀은 보안 도구 키트를 사용하여 도구 호출, 사용자 활동 패턴 및 아웃바운드 URL 액세스 패턴을 모니터링하여 보안 사고가 확대되기 전에 감지해야 합니다.

자동 감지 시스템을 배포하여 도구 사용, 데이터 액세스 시도 또는 네트워크 트래픽에서 비정상적인 패턴을 식별할 수 있습니다. 이는 시스템이 손상되었을 수 있음을 나타낼 수 있습니다. 또한, 언어 모델의 추론 및 출력을 모니터링하기 위한 일관된 로그를 유지하는 것이 의도하지 않은 동작을 추적하는 데 중요합니다.

MCP의 최대한 활용

MCP의 힘은 완전히 프로그래밍 가능한 에이전트로 AI 어시스턴트를 변환하는 능력에서 나옵니다. 그러나 그와 같은 힘은 동등하게 정교한 보안 제어가 필요합니다.

해결책은 이국적이지 않습니다. 새로운 아키텍처 패턴에 적용된 검증된 보안 관행의 확장입니다. 이미 사용하고 있는 데이터 손실 방지 소프트웨어, PII 레다کت, 내장된 권한 관리 시스템을 MCP 서버를 보호하는 데 적응시킬 수 있습니다.

이러한 취약성을 지금 해결하는 조직은 MCP의 전체 잠재력을 안전하게 해방시킬 것입니다.

길 피그는 Merge의 공동 설립자이자 최고 기술 책임자입니다. 이전에 길은 Untapped의 엔지니어링 책임자였으며 Wealthfront와 LinkedIn에서 소프트웨어 엔지니어로 일했습니다. 컬럼비아 대학교를 졸업한 그는 뉴욕시에서 살고 일합니다.