다음을 통해 공유


API Management에서 MCP 서버에 대한 보안 액세스

적용 대상: 개발자 | 기본 | 기본 v2 | 표준 | 표준 v2 | 프리미엄 | 프리미엄 v2

API Management에서 MCP 서버 지원을 사용하면 MCP 서버 및 해당 도구에 대한 액세스를 노출하고 제어할 수 있습니다. 이 문서에서는 관리되는 REST API에서 노출된 MCP 서버와 API Management 외부에서 호스트되는 기존 MCP 서버를 포함하여 API Management에서 관리되는 MCP 서버에 대한 액세스를 보호하는 방법을 설명합니다.

MCP 서버에 대한 인바운드 액세스(MCP 클라이언트에서 API Management로) 및 아웃바운드 액세스(API Management에서 MCP 서버로)를 둘 다 보호할 수 있습니다.

보안 인바운드 액세스

키 기반 인증

MCP 서버가 헤더에 Ocp-Apim-Subscription-Key 전달된 API Management 구독 키로 보호되는 경우 MCP 클라이언트는 들어오는 요청에 키를 표시할 수 있으며 MCP 서버는 키의 유효성을 검사할 수 있습니다. 예를 들어 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에서 발급하고 API Management에서 유효성을 검사한 OAuth 토큰 또는 JWT를 표시할 수 있습니다.

예를 들어 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)을 사용하여 토큰을 안전하게 전달합니다. 자세한 내용은 보안 아웃바운드 액세스를 참조하세요.

인바운드 권한 부여 옵션 및 샘플에 대한 자세한 내용은 다음을 참조하세요.

아웃바운드 액세스 보호

API Management의 자격 증명 관리자 를 사용하여 MCP 서버 도구에서 수행한 백 엔드 API 요청에 OAuth 2.0 토큰을 안전하게 삽입합니다.

OAuth 2 기반 아웃바운드 액세스를 구성하는 단계

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를 참조하세요.