Aracılığıyla paylaş


API Management'ta MCP sunucularına güvenli erişim

ŞUNLAR IÇIN GEÇERLIDIR: Geliştirici | Temel | Temel v2 | Standart | Standart v2 | Premium | Premium v2

API Management'taki MCP sunucusu desteğiyle, MCP sunucularına ve araçlarına erişimi kullanıma açabilir ve yönetebilirsiniz. Bu makalede, hem yönetilen REST API'lerinden kullanıma sunulan MCP sunucuları hem de API Management dışında barındırılan mevcut MCP sunucuları da dahil olmak üzere API Management'ta yönetilen MCP sunucularına erişimin nasıl güvenli bir şekilde sağlandığı açıklanır.

MCP sunucusuna gelen erişimi (bir MCP istemcisinden API Management'e) ve giden erişimi (API Management'tan MCP sunucusuna) veya her ikisinin güvenliğini sağlayabilirsiniz.

Gelen erişimin güvenliğini sağlama

Anahtar tabanlı kimlik doğrulaması

MCP sunucusu üst bilgide Ocp-Apim-Subscription-Key geçirilen bir API Management abonelik anahtarıyla korunuyorsa, MCP istemcileri gelen isteklerde anahtarı sunabilir ve MCP sunucusu anahtarı doğrulayabilir. Örneğin, Visual Studio Code'da, istek üst bilgilerinde abonelik anahtarını gerektirmek için MCP sunucu yapılandırmasına bir headers bölüm ekleyebilirsiniz:

{
  "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>"
  }
}

Uyarı

Visual Studio Code çalışma alanı ayarlarını veya güvenli girişleri kullanarak abonelik anahtarlarını güvenli bir şekilde yönetin.

Belirteç tabanlı kimlik doğrulaması (Microsoft Entra Kimliği ile OAuth 2.1)

MCP istemcileri, Microsoft Entra ID tarafından verilen ve API Management tarafından doğrulanan OAuth jetonlarını veya JWT'lerini bir Authorization üst bilgi kullanarak sunabilir.

Örneğin, Microsoft Entra Id belirteçlerini doğrulamak için validate-azure-ad-token ilkesini kullanın:

<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>

Belirteçleri backend'e iletme

İstek üst bilgileri otomatik olarak MCP aracı çağrılarına iletilir (belirli dışlamalarla birlikte), yönlendirme, bağlam veya kimlik doğrulaması için üst bilgileri kullanan aşağı akış API'leriyle tümleştirmeyi basitleştirir.

Gelen istekleri doğrulamak için Authorization üst bilgisinin açık bir şekilde iletilmesi gerekiyorsa, aşağıdaki yaklaşımlardan birini kullanabilirsiniz:

  • API ayarlarında Authorization öğesini gerekli bir üst bilgi olarak açıkça tanımlayın ve Outbound politikasında üst bilgiyi iletin.

    Örnek ilke parçacığı:

    <!-- Forward Authorization header to backend --> 
    <set-header name="Authorization" exists-action="override"> 
        <value>@(context.Request.Headers.GetValueOrDefault("Authorization"))</value> 
    </set-header> 
    
  • Belirteci güvenli bir şekilde iletmek için API Management kimlik bilgileri yöneticisini ve ilkelerini (get-authorization-context, set-header) kullanın. Ayrıntılar için Giden erişimin güvenliğine ilişkin bilgi bölümüne bakın.

Daha fazla gelen yetkilendirme seçeneği ve örneği için bkz:

Giden erişimin güvence altına alınması

MCP sunucu araçları tarafından yapılan arka uç API istekleri için OAuth 2.0 belirteçlerini güvenli bir şekilde eklemek için API Management'ın kimlik bilgisi yöneticisini kullanın.

OAuth 2 tabanlı giden erişimi yapılandırma adımları

1. Adım: Kimlik sağlayıcısına bir uygulama kaydedin.

2. Adım: API Management'ta kimlik sağlayıcısına bağlı bir kimlik bilgisi sağlayıcısı oluşturun.

Adım 3: Kimlik bilgileri yöneticisi içindeki bağlantıları yapılandırın.

4. Adım: Kimlik bilgilerini dinamik olarak getirmek ve eklemek için API Management ilkeleri uygulayın.

Örneğin, aşağıdaki ilke kimlik bilgisi yöneticisinden bir erişim belirteci alır ve bunu giden isteğin Authorization üst bilgisinde ayarlar:

<!-- 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>

Kimlik bilgisi yöneticisinde oluşturulan kimlik bilgilerini kullanarak örnek bir arka ucu çağırmaya yönelik adım adım kılavuz için bkz. Kimlik bilgisi yöneticisini yapılandırma - GitHub.