SQL MCP Server는 Data API builder(DAB) 2.0을 통해 Azure SQL 테이블, 뷰, 저장 프로시저를 MCP 도구로 노출하는 Microsoft의 데이터 접근 경로다. 핵심은 Microsoft Entra ID의 On-Behalf-Of(OBO) 인증을 사용해 에이전트가 실행한 SQL 작업을 서비스 계정이 아니라 실제 사용자 신원으로 감사할 수 있다는 점이다.
세 가지 인증 방식
| 방식 | SQL 감사 로그에 남는 주체 | 장점 | 한계 |
|---|---|---|---|
| 사용자명·비밀번호 | 연결 문자열의 계정 | 설정이 단순하다 | 실제 호출 사용자를 알기 어렵다 |
| 관리 ID | MCP 서버 또는 앱 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 정책과 인증 체계로 노출하고 싶을 때
관련 문서
- mcp — 에이전트와 외부 시스템을 연결하는 표준 프로토콜
- enterprise-managed-authorization — MCP 서버 접근을 조직 IdP로 중앙 관리하는 인증 확장
- zero-trust-ai-agents — 자율 AI 에이전트를 위한 보안 아키텍처
참고 자료
- Audit Frontier AI Agents with SQL MCP Server — Azure SQL Dev Blog (2026-07-01)