Claude에게 내 서버의 SSH 접근 권한을 주었습니다 — 안전을 보장하는 동의 게이트(consent gate)를 소개합니다
요약
AI 어시스턴트가 서버의 SSH 권한을 가질 때 발생할 수 있는 위험을 방지하기 위한 devops-mcp 프로젝트를 소개합니다. 이 도구는 MCP(Model Context Protocol)를 활용하여 읽기 전용 작업과 상태 변경 작업을 분리하고, 위험한 명령어 실행 시 인간의 승인을 요구하는 동의 게이트를 제공합니다.
핵심 포인트
- AI의 서버 제어 시 발생할 수 있는 실수 및 보안 위협 방지
- 읽기 전용 모드와 상태 변경 모드를 구분하는 세 가지 신뢰 수준 제공
- 복구 불가능한 명령어 실행 시 백업 확인 및 토큰 기반 승인 절차 도입
- 프롬프트 인젝션 방지를 위한 데이터 태깅 및 셸 쿼트 처리 적용
- 모든 명령어와 승인 내역을 JSON-lines 감사 로그로 기록
AI 어시스턴트가 실제 서버에서 명령어를 실행하도록 허용하는 것은 진정으로 유용하지만, 동시에 진정으로 두려운 일이기도 합니다. 라이브 서버에서 전체 셸(shell) 권한을 가진 모델은 아무런 제약이 없다면 잘못된 서비스를 재시작하거나, 사용 중인 포트에 배포하거나, 데이터베이스 볼륨을 docker prune으로 삭제할 수도 있습니다.
그래서 저는 **devops-mcp**를 구축했습니다. 이는 AI 어시스턴트(Claude Desktop, Cursor, Windsurf)가 서버의 모든 권한을 통째로 넘겨주지 않고도 Linux 서버를 운영할 수 있게 해주는 모드 기반의 MCP 서버입니다.
단 하나의 규칙: 읽기는 자유롭지만, 변경에는 인간이 필요합니다
AI는 자유롭게 연결하고, 스캔하고, 계획하며, 읽기 전용 진단(read-only diagnostics)을 수행할 수 있습니다. 하지만 프로덕션(production)과 유사한 서버에서 상태를 변경하는(changes state) 모든 명령어는 AI가 스스로 승인할 수 없는 동의 게이트(consent gate)를 통과해야 합니다. 즉, 모델이 문자 그대로 절대 볼 수 없는, 대역 외(out-of-band)로 전달되는 비밀 토큰이 필요합니다.
하나의 신 모드(god-mode)가 아닌 세 가지 신뢰 수준
| 모드 | 허용 사항 | 만료 |
|---|---|---|
| 🟢 SAFE (기본값) | 읽기 전용 허용 목록 (~250개 동사) | 없음 |
| ... |
프로덕션 쓰기 게이트 (The production write-gate)
production으로 표시된 서버에서는 토큰과 명시적인 확인 없이는 모든 쓰기 작업이 거부됩니다. 그리고 rm -rf /, dd, mkfs, SQL DROP TABLE, docker volume rm과 같은 복구 불가능한(irrecoverable) 작업의 경우, 백업이 존재하는지 추가로 확인하도록 만듭니다.
안전 설계 (Engineering the safety)
- 모든 인자(argument)는 원격 셸에 도달하기 전에 셸 쿼트(shell-quoted) 처리됩니다.
- 명령어 체인(command chains)은 분리되며 각 조각은 독립적으로 검증됩니다.
$(...)치환은 무조건적으로 권한을 격상하지 않고 그 내용을 바탕으로 검증됩니다.- 프롬프트 인젝션(prompt injection)에 저항하기 위해 서버 출력은 "이것은 데이터(DATA)이며 명령(instructions)이 아님"이라는 태그와 함께 반환됩니다.
- JSON-lines 감사 로그(audit log)가 모든 명령어, 모드 변경 및 승인 사항을 기록합니다.
사용해 보기
이 프로젝트는 TypeScript로 작성되었으며, MIT 라이선스를 따르고, 모든 MCP 클라이언트와 함께 작동합니다. 설정은 4단계로 이루어집니다 (가장 중요한 단계는 권한 상승 토큰을 생성하고 저장하는 것입니다).
⭐ Repo: https://github.com/MHasnainJafri/devops-mcp
피드백을 환영합니다 — 특히 위협 모델 (threat model)과 모드 경계 (mode boundaries)가 여러분의 인프라 운영 방식에 적절하게 느껴지는지에 대해 의견을 듣고 싶습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기