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 birimi oluşturma.
  • API Yönetimi örneğinize 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ğer daha sonra bir API ilkesinde referans alınarak Azure OpenAI API'sine yapılan isteklerde üst bilgi ayarlanabilir. 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 değer olarak ekleyin veya isteğe bağlı olarak daha fazla güvenlik için 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.openai.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'u belirleyin.
  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

Azure OpenAI API'sinde kimlik doğrulamanın alternatif ve önerilen bir yolu, Microsoft Entra Id'de yönetilen kimlik kullanmaktır. Arka plan bilgisi 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. 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 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 istekleri doğrulamak için inbound 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 ve authentication-managed-identity ilkelerini kullanmanın set-header bir alternatifi, API isteklerini Azure OpenAI Hizmeti uç noktasına yönlendiren bir arka uç kaynağı yapılandırmaktır. Arka uç yapılandırmasında Azure OpenAI Hizmeti'nde yönetilen kimlik kimlik doğrulamasını etkinleştirin. Azure API Management, bir API'yi doğrudan Azure OpenAI Hizmetinden içeri aktarırken bu adımları otomatikleştirir. Daha fazla bilgi için bkz. Azure OpenAI Hizmetinden API'yi içeri aktarma.

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ı doğrulaması veya yönetilen 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. 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.

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