피드로 돌아가기
Dev.toBackend
원문 읽기
개발자가 MCP 서버를 통해 Claude에 프로덕션 데이터베이스 접근을 제공하고 SQL 파싱 및 allowlist 검증으로 안전하게 관리
I Gave Claude Code Access to My Prod Database with MCP
AI 요약
Context
고객 이슈를 디버깅할 때 Claude와의 대화 스레드에서 벗어나 데이터베이스 클라이언트를 별도로 열어야 했다. 쿼리를 작성하고 결과를 복사해 다시 붙이는 과정이 매주 50회 이상 반복되면서 컨텍스트 전환의 비효율이 누적되었다.
Technical Solution
- MCP 서버를 데이터베이스와 Claude 사이의 중개층으로 구축: 직접 연결 문자열이나 인증 정보 없이 도구 호출 기반 인터페이스 제공
- SQL 쿼리 검증 파이프라인 구현: AST 파싱으로 SELECT만 허용하고 INSERT/UPDATE/DELETE 차단
- 테이블 allowlist와 민감 열 제거: 허용된 테이블만 접근 가능하고 민감한 컬럼은 응답에서 제거
- 서버 측 타임아웃 및 행 제한 강제: 장시간 실행되는 쿼리는 종료되고 행 수는 쿼리 재작성으로 제한
- 읽기 전용 트랜잭션과 완전 로깅: 모든 쿼리는 읽기 전용 트랜잭션 내에서 실행되고 모든 시도가 기록됨
Impact
고객 이슈 디버깅 시 데이터베이스 조회 결과가 3초 내에 반환되었고, 반복된 쿼리들(일별 분류, 참조 출처별 분류, 교차 참조)이 모두 올바른 결과를 제공했다.
Key Takeaway
AI에 데이터베이스 접근을 제공할 때 직접 인증 정보 제공 대신 검증된 중개층을 통해 SQL 파싱, allowlist, 타임아웃 제한을 다층으로 적용하면 보안 위험을 크게 낮추면서도 개발 효율을 높일 수 있다.
실천 포인트
프로덕션 데이터베이스 접근이 필요한 개발 환경에서 Claude나 다른 AI와 통합할 때, AST 기반 SQL 검증과 테이블/컬럼 allowlist를 MCP 서버 같은 중개층에 구현하면 쿼리 결과를 신뢰하면서도 위험한 쓰기 작업을 원천 차단할 수 있다.