AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

SQL MCP Server – 사용자 신원을 보존해 Azure SQL 에이전트 작업을 감사하는 MCP 서버

SQL MCP Server는 Data API builder(DAB) 2.0을 통해 Azure SQL 테이블, 뷰, 저장 프로시저를 MCP 도구로 노출하는 Microsoft의 데이터 접근 경로다. 핵심은 Microsoft Entra ID의 On-Behalf-Of(OBO) 인증을 사용해 에이전트가 실행한 SQL 작업을 서비스 계정이 아니라 실제 사용자 신원으로 감사할 수 있다는 점이다.

세 가지 인증 방식

방식SQL 감사 로그에 남는 주체장점한계
사용자명·비밀번호연결 문자열의 계정설정이 단순하다실제 호출 사용자를 알기 어렵다
관리 IDMCP 서버 또는 앱 ID비밀번호를 제거한다로그에는 앱 주체가 남는다
OBO 인증로그인한 사용자사용자의 권한과 감사 추적을 보존한다Entra ID, 토큰 교환, DAB 설정이 필요하다

OBO에서는 사용자가 Entra ID로 로그인하고, 에이전트 또는 앱이 사용자 토큰을 DAB에 전달한다. DAB는 이 토큰을 Azure SQL용 토큰으로 교환해 사용자 권한으로 연결한다. 결과적으로 SQL은 “어떤 앱이 연결했는가”뿐 아니라 “누가 이 작업을 유발했는가”를 기록할 수 있다.

왜 중요한가

AI 에이전트가 운영 데이터베이스에 접근하면 기업은 단순히 “에이전트가 권한을 가졌는가”가 아니라 “누구의 권한으로 실행됐는가”를 물어야 한다. 서비스 계정만 남는 구조에서는 사고 조사, 권한 회수, 내부 감사가 어렵다. SQL MCP Server와 OBO 조합은 MCP 도구 호출, DAB 권한 정책, Azure SQL 감사 로그를 같은 사용자 맥락으로 이어준다.

구성 포인트

Data API builder의 데이터 소스에는 일반 Azure SQL 연결 문자열을 두고, 사용자 위임 인증을 활성화한다. 연결 문자열에는 User ID, Password, Authentication을 넣지 않는다. DAB가 요청별 사용자 토큰을 주입하기 때문이다.

검증에는 SUSER_NAME()을 반환하는 WhoAmI 뷰를 사용할 수 있다. 같은 DAB 런타임이 REST, GraphQL, MCP를 노출하므로, MCP 도구에서 WhoAmI를 읽었을 때 SQL이 실제 사용자 principal을 반환하는지 확인한다.

감사 로그에서 보는 항목

Azure SQL 감사는 Blob Storage, Event Hubs, Log Analytics로 기록할 수 있다. Log Analytics에서는 database_principal_name, server_principal_name, statement, obo_middle_tier_app_id 같은 필드로 사용자, SQL 문, 중간 계층 앱을 함께 볼 수 있다.

사용 대상 및 케이스

  • 엔터프라이즈 데이터팀: AI 에이전트의 데이터 조회·변경 작업을 사용자 단위로 감사해야 할 때
  • 보안팀: 서비스 계정 남용을 줄이고 민감 데이터 접근의 책임 주체를 남길 때
  • Azure 기반 앱팀: REST·GraphQL·MCP를 같은 DAB 정책과 인증 체계로 노출하고 싶을 때

관련 문서

참고 자료



AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)