Aracılığıyla paylaş


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

UYGULANANLAR: Tüm API Management katmanları

Bu makalede, Azure API Management kullanılarak yönetilen Azure OpenAI API uç noktalarının kimliğini doğrulamanın ve yetkilendirmenin yollarını öğ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 kullanarak kimlik doğrulaması sağlayan ilkeleri kullanarak Azure OpenAI 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 adımları takip etmeden önce şunlara sahip olmanız gerekir:

  • Api Management örneği. Örneğin adımlar için bkz . Azure API Management örneği oluşturma.
  • API Management örneğine eklenen bir Azure OpenAI kaynağı ve modeli. Örneğin adımlar için bkz . Azure OpenAI API'sini REST API olarak içeri aktarma.
  • Azure aboneliğinizle ilişkili bir Microsoft Entra kiracısı gibi bir kimlik sağlayıcısında uygulama kaydı oluşturma izinleri (OAuth 2.0 yetkilendirmesi için).

API anahtarıyla kimlik doğrulaması

Azure OpenAI 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 HTTP üst bilgisinde api-key geçerli bir API anahtarı içermelidir.

  • API Management, adlandırılmış bir değer kullanarak API anahtarını güvenli bir şekilde yönetebilir.
  • Adlandırılmış değere bir API ilkesinde başvurarak Azure OpenAI API'sine yapılan isteklerdeki üst bilgi ayarlanabilir api-key . Bunun nasıl yapılacağını gösteren iki örnek sunuyoruz: biri ilkeyi set-backend-service , diğeri ilkeyi set-header kullanır.

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

  1. Azure OpenAI kaynağından bir API anahtarı alın. Azure portalında, Azure OpenAI kaynağının Anahtarlar ve Uç Nokta sayfasında bir anahtar bulun.
  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 gizli dizi olarak ekleyin veya isteğe bağlı olarak daha fazla güvenlik için bir anahtar kasası başvurusu 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 arka uç için açıklayıcı bir ad girin. Örnek: openai-backend.
    3. Tür'ün altında Özel'i seçin ve Azure OpenAI uç noktasının URL'sini girin. Örnek: https://contoso.openai.azure.com/openai.
    4. Yetkilendirme kimlik bilgileri'nin altında Üst Bilgiler'i seçin ve üst bilgi adı olarak api-key, değer olarak da adlandırılmış değer girin.
    5. Oluştur'u belirleyin.
  2. api anahtarını Azure OpenAI API'sine inbound gelen isteklere geçirmek için ilke bölümüne 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'sine inbound gelen isteklere geçirmek için ilke bölümüne aşağıdaki set-header ilke parçacığını ekleyin. Bu ilke parçacığı api-key , üst bilgiyi ayarladığınız adlandırılmış değerle ayarlar.

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>

Yönetilen kimlikle kimlik doğrulaması

Microsoft Entra Id'de yönetilen kimlik kullanarak Azure OpenAI API'sinde kimlik doğrulaması yapmak için alternatif bir yol. Arka plan için bkz . Azure OpenAI Hizmetini yönetilen kimlikle yapılandırma.

Azure OpenAI API'sine yönelik isteklerin kimliğini doğrulamak için API Management örneğinizi yönetilen kimlik kullanacak şekilde yapılandırma adımları aşağıda verilmiştir.

  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. Yönetilen kimliği uygun kaynak kapsamına sahip Bilişsel Hizmetler OpenAI Kullanıcı rolüne atayın. Örneğin, sistem tarafından atanan yönetilen kimliği Azure OpenAI 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 Azure OpenAI API'sine 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> 
    

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

Belirli kullanıcılar veya istemciler tarafından OpenAPI 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 Azure OpenAI API'sine erişimi önceden doğrulayabilirsiniz. Arka plan için bkz . Microsoft Entra Id ile OAuth 2.0 yetkilendirmesini kullanarak Azure API Management'ta API'yi koruma.

Not

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

Aşağıda, kimlik sağlayıcısı kullanılarak yetkilendirilmiş kullanıcılara veya uygulamalara API erişimini kısıtlamaya yönelik üst düzey adımlar verilmiştir.

  1. Azure API Management'ta OpenAI 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ı Azure OpenAI API'sine erişmek için gereken ayrıntılı izinleri temsil eden rollere veya kapsamlara sahip olacak şekilde yapılandırın.

  2. Üst bilgide JSON inbound web belirteci (JWT) Authorization sunan istekleri doğrulamak için API Management örneğinize bir ilke parçacığı ekleyin. Bu kod parçacığını Azure OpenAI API'sinde kimlik doğrulaması yapmak için ayarladığınız diğer inbound ilkelerin önüne yerleştirin.

    Not

    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 ilke başvurusuna 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 ilke başvurusuna 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>