적용 대상: 개발자 | 기본 | 기본 v2 | 표준 | 표준 v2 | 프리미엄 | 프리미엄 v2
API 관리에서 MCP 서버 지원을 사용하면 MCP 서버와 그 도구에 대한 접근을 노출하고 관리할 수 있습니다. 본 가이드에서는 API Management를 통해 관리되는 REST API 기반 MCP 서버는 물론, 외부에서 호스팅되는 기존 MCP 서버에 대한 보안 액세스 설정 방법을 상세히 다룹니다.
API Management를 통해 MCP 클라이언트에서 MCP 서버로의 인바운드 액세스와 MCP 서버에서 돌아오는 아웃바운드 액세스 양쪽을 모두 보호할 수 있습니다.
보안 인바운드 액세스
키 기반 인증
만약 MCP 서버가 헤더에 Ocp-Apim-Subscription-Key 전달된 API Management 구독 키로 보호되어 있다면, MCP 클라이언트는 들어오는 요청에서 키를 제시할 수 있고, API Management는 키를 검증합니다. 예를 들어, Visual Studio Code에서는 MCP 서버 구성에 요청 헤더에 구독 키를 포함하는 섹션을 추가할 headers 수 있습니다:
{
"name": "My MCP Server",
"type": "remote",
"url": "https://my-api-management-instance.azure-api.net/my-mcp-server",
"transport": "streamable-http",
"headers": {
"Ocp-Apim-Subscription-Key": "<subscription-key>"
}
}
비고
Visual Studio Code 작업 공간 설정이나 보안 입력을 사용하여 구독 키를 안전하게 관리할 수 있습니다.
토큰 기반 인증(Microsoft Entra ID를 사용하는 OAuth 2.1)
MCP 클라이언트는 Authorization 헤더를 사용하여 Microsoft Entra ID에서 발급된 OAuth 토큰 또는 JWT를 제시할 수 있으며, 이러한 토큰은 API Management에서 유효성이 검사됩니다.
예를 들어, validate-azure-ad-token 정책을 적용하면 Microsoft Entra ID 토큰의 유효성을 검증할 수 있습니다.
<validate-azure-ad-token tenant-id="your-entra-tenant-id" header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
<client-application-ids>
<application-id>your-client-application-id</application-id>
</client-application-ids>
</validate-azure-ad-token>
백 엔드에 토큰 전달
요청 헤더는 특정 제외 사항을 제외하고) 자동으로 MCP 도구 호출로 전달됩니다. 이 기능은 라우팅, 컨텍스트 또는 인증을 위해 헤더에 의존하는 다운스트림 API와의 통합을 단순화합니다.
수신 요청을 검증하기 위해 헤더를 Authorization 명시적으로 전달해야 한다면, 다음 방법 중 하나를 사용하세요:
API 설정에서 필수 헤더를 명시적으로
Authorization정의한 후,Outbound정책을 통해 해당 헤더를 전달하도록 구성합니다.정책 코드 조각 예제:
<!-- Forward Authorization header to backend --> <set-header name="Authorization" exists-action="override"> <value>@(context.Request.Headers.GetValueOrDefault("Authorization"))</value> </set-header>API Management의 자격 증명 관리자와 정책(
get-authorization-context,set-header)을 활용하면 토큰을 더욱 안전하게 전달할 수 있습니다. 자세한 내용은 Secure outbound access를 참조하세요.
인바운드 권한 부여 옵션 및 샘플에 대한 자세한 정보는 아래를 참고하시기 바랍니다.
아웃바운드 액세스 보호
API Management의 자격 증명 관리자 를 사용해 MCP 서버 도구가 수행하는 백엔드 API 요청에 대해 OAuth 2.0 토큰을 안전하게 주입하세요.
OAuth 2.0 기반 아웃바운드 액세스 구성 단계
1단계: 애플리케이션을 ID 공급자에 등록해야 합니다.
2단계: ID 공급자와 연동된 API Management 내에서 자격 증명 공급자를 새롭게 생성합니다.
3단계: 자격 증명 관리자에서 연결을 설정하세요.
4단계: API Management 정책을 통해 자격 증명을 동적으로 획득한 후 이를 연결합니다.
예를 들어, 다음 정책에서는 자격 증명 관리자로부터 액세스 토큰을 가져와 발신 요청의 Authorization 헤더에 추가합니다.
<!-- Add to inbound policy. -->
<get-authorization-context
provider-id="your-credential-provider-id"
authorization-id="auth-01"
context-variable-name="auth-context"
identity-type="managed"
ignore-error="false" />
<!-- Attach the token to the backend call -->
<set-header name="Authorization" exists-action="override">
<value>@("Bearer " + ((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</value>
</set-header>
자격 증명 관리자로 생성한 자격 증명으로 예제 백엔드를 호출하는 방법에 대한 단계별 가이드는 GitHub의 자격 증명 관리자 구성을 참조하세요.