Azure API Management'ı kullanarak LLM API'lerine erişimin kimliğini doğrulama ve erişimi yetkilendirme

UYGULANANLAR: Tüm API Management katmanları

Bu makalede, Azure API Management'ın yönettiği yapay zeka API uç noktalarına erişimin kimliğini doğrulamayı ve erişimi yetkilendirmeyi öğreneceksiniz. Bu makalede aşağıdaki yaygın yöntemler gösterilmektedir:

  • Kimlik doğrulaması - API anahtarı veya Microsoft Entra ID yönetilen kimliği kullanan ilkeleri kullanarak yapay zeka API'sinde kimlik doğrulaması yapın.

  • Yetkilendirme - Daha ayrıntılı erişim denetimi için, Microsoft Entra ID gibi bir kimlik sağlayıcısı tarafından oluşturulan OAuth 2.0 belirteçlerini geçiren istekleri önceden yetkilendileyin.

Arka plan için bkz:

Önkoşullar

Bu makaledeki örnekleri takip etmek için şunlara sahip olmanız gerekir:

API anahtarını kullanarak kimlik doğrulaması yapma

Yapay zeka API'sinde kimlik doğrulamanın varsayılan yolu API anahtarı kullanmaktır. Bu kimlik doğrulaması türü için, tüm API istekleri bir HTTP üst bilgisinde geçerli bir API anahtarı içermelidir. Üst bilgi adı API'ye bağlıdır. Örneğin, Microsoft Foundry API'lerinde, Azure OpenAI api-key üst bilgi başlığını kullanır.

  • API Management , adlandırılmış bir değer kullanarak API anahtarını güvenli bir şekilde yönetebilir.
  • API isteklerindeki api-key üst bilgisini ayarlamak için bir API ilkesindeki adlandırılmış değere başvurabilirsiniz. Aşağıdaki iki örnek bunun nasıl yapılacağını gösterir: biri ilkeyi set-backend-service , diğeri ilkeyi set-header kullanır.

API anahtarını adlandırılmış bir değerde depolama

Azure OpenAI API anahtarını API Management'ta adlandırılmış bir değerde depolamaya yönelik bir örnek aşağıda verilmiştır:

  1. Yapay zeka modeli dağıtımından bir API anahtarı alın. Azure OpenAI modeli dağıtımı için bu bilgileri Microsoft Foundry portalındaki projenizin Giriş sayfasında bulabilirsiniz.
  2. API Management örneğinize gidin ve soldaki menüden Adlandırılmış değerler'i seçin.
  3. + Ekle'yi seçin ve değeri bir sır olarak ekleyin. Daha fazla güvenlik için isteğe bağlı olarak bir anahtar kasası referansı kullanın.

API isteklerinde API anahtarını geçirme - set-backend-service ilkesi

  1. Azure OpenAI API'sine işaret eden bir arka uç oluşturun.

    1. API Management örneğinizin sol menüsünde Arka uçlar'ı seçin.
    2. + Ekle'yi seçin ve back-end için açıklayıcı bir ad girin. Örnek: openai-backend.
    3. Tür altında Özel'i seçin ve Azure OpenAI uç noktasının URL'sini girin. Örnek: https://contoso.services.ai.azure.com/openai.
    4. Yetkilendirme kimlik bilgileri altında, Üst Bilgiler'i seçin ve üst bilgi adı olarak api-key'i, değer olarak da belirtilen değeri girin.
    5. Oluştur'i seçin.
  2. Azure OpenAI API'sine gelen isteklere API anahtarını geçirmek için ilke kısmına aşağıdaki set-backend-service ilke parçacığını ekleyin.

    Bu örnekte arka uç kaynağı openai-backend şeklindedir.

    <set-backend-service backend-id="openai-backend" />
    

API isteklerinde API anahtarını geçirme - set-header ilkesi

Alternatif olarak, api anahtarını Azure OpenAI API'ye yapılan isteklere eklemek için set-header ilke bölümüne aşağıdaki inbound ilke parçacığını ekleyin. Bu ilke parçacığı, ayarladığınız adlandırılmış değerle api-key üst bilginin ayarlanmasını sağlar.

Bu örnekte, API Management'taki adlandırılmış değer openai-api-key'dir.

<set-header name="api-key" exists-action="override">
    <value>{{openai-api-key}}</value>
</set-header>

Kimlik doğrulamayı yönetilen kimlikle yapın

Microsoft Foundry'deki Azure OpenAI ve diğer model dağıtımları için, kimlik doğrulaması için Microsoft Entra Id'de yönetilen bir kimlik kullanın. Arka plan için bkz. Microsoft Foundry Modellerinde Azure OpenAI'yi Microsoft Entra Id kimlik doğrulamasıyla yapılandırma.

API Management örneğinizi kimlik doğrulaması için yönetilen kimlik kullanacak şekilde yapılandırmak için bu adımları izleyin.

  1. API Management örneğiniz için sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği etkinleştirin . Aşağıdaki örnekte, örneğin sistem tarafından atanan yönetilen kimliğini etkinleştirdiğiniz varsayılır.

  2. Cognitive Services OpenAI Kullanıcı rolünü, uygun kaynakla sınırlı olacak şekilde yönetilen kimliğe atayın. Örneğin, sistem tarafından atanan yönetilen kimliği Microsoft Foundry kaynağında Bilişsel Hizmetler OpenAI Kullanıcı rolüne atayın. Ayrıntılı adımlar için bkz . Azure OpenAI hizmeti için rol tabanlı erişim denetimi.

  3. Yönetilen kimliği kullanarak API'ye yönelik isteklerin inbound kimliğini doğrulamak için ilke bölümüne aşağıdaki ilke parçacığını ekleyin.

    Bu örnekte:

    <authentication-managed-identity resource="https://cognitiveservices.azure.com" output-token-variable-name="managed-id-access-token" ignore-error="false" /> 
    <set-header name="Authorization" exists-action="override"> 
        <value>@("Bearer " + (string)context.Variables["managed-id-access-token"])</value> 
    </set-header> 
    

Tavsiye

Bu örnekte gösterilen authentication-managed-identity ve set-header ilkeleri yerine, API isteklerini yapay zeka hizmet uç noktasına yönlendiren bir arka uç kaynağı yapılandırabilirsiniz. Arka uç yapılandırmasında, https://cognitiveservices.azure.com/ kaynağı için yönetilen kimlik bilgilerini yapılandırın. Azure API Management, bir API'yi doğrudan Microsoft Foundry'den içeri aktardığınızda bu adımları otomatikleştirir.

Kimlik sağlayıcısını kullanarak OAuth 2.0 yetkilendirmesi

Belirli kullanıcılar veya istemciler tarafından Azure OpenAPI veya diğer LLM API'lerine daha ayrıntılı erişim sağlamak için, Microsoft Entra Id veya başka bir kimlik sağlayıcısıyla OAuth 2.0 yetkilendirmesini kullanarak API'ye erişimi önceden yetkilendirerek. Arka plan için bkz . Microsoft Entra Id ile OAuth 2.0 yetkilendirmesini kullanarak Azure API Management'ta API'yi koruma.

Uyarı

Derinlemesine savunma stratejisinin bir parçası olarak OAuth 2.0 yetkilendirmesini kullanın. Azure OpenAI API'sine API anahtarı doğrulaması veya yönetilen kimlik doğrulamasının yerini almaz.

Aşağıdaki adımlarda, kimlik sağlayıcısı kullanılarak yetkilendirilmiş kullanıcılara veya uygulamalara API erişiminin nasıl kısıtlandığı gösterilmektedir.

  1. Azure API Management'ta yapay zeka API'sini temsil etmek için kimlik sağlayıcınızda bir uygulama oluşturun. Microsoft Entra Id kullanıyorsanız, Microsoft Entra ID kiracınıza bir uygulama kaydedin . Uygulama kimliği ve hedef kitle URI'si gibi ayrıntıları kaydedin.

    Gerektiğinde, uygulamayı yapay zeka API'sine erişmek için gereken ayrıntılı izinleri temsil eden rollere veya kapsamlara sahip olacak şekilde yapılandırın.

  2. API Management örneğinize, başlıkta JSON web belirteci (JWT) sunan istekleri doğrulamak için bir inbound ilke parçacığı Authorization ekleyin. Bu kod parçacığını yerleştirin.

    Uyarı

    Aşağıdaki örneklerde bir JWT'yi doğrulamak için ilkelerin genel yapısı gösterilmektedir. Bunları kimlik sağlayıcınıza ve uygulamanızın ve API'nizin gereksinimlerine göre özelleştirin.

    • validate-azure-ad-token - Microsoft Entra Id kullanıyorsanız JWT'deki hedef kitleyi ve talepleri doğrulamak için ilkeyi yapılandırın validate-azure-ad-token . Ayrıntılar için politika referansına bakın.

      <validate-azure-ad-token tenant-id={{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>{{CLIENT_APP_ID}}</application-id>
          </client-application-ids>
         <audiences>
              <audience>...</audience> 
          </audiences>
          <required-claims>
              <claim name=...>
                  <value>...</value>
              </claim>
          </required-claims>
      </validate-azure-ad-token>
      
    • validate-jwt - Başka bir kimlik sağlayıcısı kullanıyorsanız, JWT'deki hedef kitleyi ve talepleri doğrulamak için ilkeyi yapılandırın validate-jwt . Ayrıntılar için politika referansına bakın.

      <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
          <openid-config url={{OPENID_CONFIGURATION_URL}} />
          <issuers>
              <issuer>{{ISSUER_URL}}</issuer>
          </issuers>
          <audiences>
              <audience>...</audience> 
          </audiences>
          <required-claims>
              <claim name=...>
                  <value>...</value>
              </claim>
          </required-claims>
      </validate-jwt>