Partager via


Authentifier et autoriser l’accès aux API Azure OpenAI à l’aide de Gestion des API Azure

S’APPLIQUE À : Tous les niveaux de Gestion des API

Dans cet article, vous allez découvrir comment authentifier et autoriser des points de terminaison d’API Azure OpenAI gérés à l’aide de Gestion des API Azure. Cet article présente les méthodes courantes suivantes :

  • Authentification : authentifiez-vous auprès d’une API Azure OpenAI en utilisant des stratégies qui font appel à une clé API ou à une identité managée Microsoft Entra ID pour l’authentification.

  • Autorisation : pour un contrôle d’accès plus précis, préauthorisez les demandes qui transmettent les jetons OAuth 2.0 générés par un fournisseur d’identité tel que Microsoft Entra ID.

Pour plus d’informations, consultez :

Prérequis

Avant de suivre les étapes décrites dans cet article, vous devez avoir :

  • Une instance APIM. Pour voir un exemple de procédure, consultez Créer une instance Gestion des API Azure.
  • Une ressource et un modèle Azure OpenAI ajoutés à votre instance Gestion des API. Pour voir un exemple de procédure, consultez Importer une API Azure OpenAI en tant qu’API REST.
  • Les autorisations nécessaires pour créer une inscription d’application auprès d’un fournisseur d’identité tel qu’un locataire Microsoft Entra associé à votre abonnement Azure (pour l’autorisation OAuth 2.0).

S’authentifier avec la clé API

L’une des méthodes par défaut pour s’authentifier auprès d’une API Azure OpenAI consiste à utiliser une clé API. Pour ce type d’authentification, toutes les requêtes d’API doivent inclure une clé API valide dans l’en-tête HTTP api-key.

  • Gestion des API peut gérer la clé API de manière sécurisée à l’aide d’une valeur nommée.
  • La valeur nommée peut ensuite être référencée dans une stratégie d’API pour définir l’en-tête api-key dans les requêtes adressées à l’API Azure OpenAI. Nous fournissons ici deux exemples de méthode : l’une qui utilise la stratégie set-backend-service et l’autre qui utilise la stratégie set-header.

Stocker la clé API dans une valeur nommée

  1. Obtenez une clé API à partir de la ressource Azure OpenAI. Dans le portail Azure, recherchez une clé dans la page Clés et point de terminaison de la ressource Azure OpenAI.
  2. Accédez à votre instance Gestion des API, puis sélectionnez Valeurs nommées dans le menu de gauche.
  3. Sélectionnez + Ajouter, ajoutez la valeur en tant que secret ou, pour plus de sécurité, utilisez éventuellement une référence de coffre de clés.

Transmettre la clé API des requêtes d’API – stratégie set-backend-service

  1. Créez un back-end qui pointe vers l’API Azure OpenAI.

    1. Dans le menu de gauche de votre instance Gestion des API, sélectionnez Back-ends.
    2. Sélectionnez + Ajouter, puis entrez un nom descriptif pour le back-end. Exemple : openai-backend.
    3. Sous Type, sélectionnez Personnalisé, puis entrez l’URL du point de terminaison Azure OpenAI. Exemple : https://contoso.openai.azure.com/openai.
    4. Sous Informations d’identification d’autorisation, sélectionnez En-têtes, puis entrez api-key pour le nom d’en-tête et la valeur nommée comme valeur.
    5. Sélectionnez Créer.
  2. Ajoutez l’extrait de code de stratégie set-backend-service suivant dans la section de stratégie inbound pour transmettre la clé API des requêtes à l’API Azure OpenAI.

    Dans cet exemple, la ressource back-end est openai-backend.

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

Transmettre la clé API des requêtes d’API – stratégie set-header

Il est également possible d’ajouter l’extrait de code de stratégie set-header suivant dans la section de stratégie inbound pour transmettre la clé API des requêtes à l’API Azure OpenAI. Cet extrait de code de stratégie définit l’en-tête api-key avec la valeur nommée que vous avez configurée.

Dans cet exemple, la valeur nommée dans Gestion des API est openai-api-key.

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

Authentifier avec l’identité gérée

Une autre façon de s’authentifier auprès d’une API Azure OpenAI à l’aide d’une identité managée dans Microsoft Entra ID. Pour plus d’informations, consultez Guide pratique pour configurer Azure OpenAI Service avec des identités managées.

Exécutez la procédure suivante pour configurer votre instance Gestion des API de sorte qu’elle utilise une identité managée pour authentifier les requêtes adressées à une API Azure OpenAI.

  1. Activez une identité managée affectée par le système ou par l’utilisateur dans l’instance Gestion des API. L’exemple suivant suppose que vous avez activé l’identité managée affectée par le système de l’instance.

  2. Affectez à l’identité managée le rôle Utilisateur OpenAI Cognitive Services, dans les limites de la ressource appropriée. Par exemple, affectez à l’identité managée affectée par le système le rôle Utilisateur OpenAI Cognitive Services pour la ressource Azure OpenAI. Pour une procédure détaillée, consultez Contrôle d’accès en fonction du rôle pour Azure OpenAI Service.

  3. Ajoutez l’extrait de code de stratégie suivant dans la section de stratégie inbound pour authentifier les requêtes adressées à l’API Azure OpenAI à l’aide de l’identité managée.

    Dans cet exemple :

    • La stratégie authentication-managed-identity obtient un jeton d’accès pour l’identité managée.
    • La stratégie set-header définit l’en-tête Authorization de la requête avec le jeton d’accès.
    <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> 
    

Autorisation OAuth 2.0 avec le fournisseur d’identité

Pour définir un accès affiné aux API OpenAI pour des utilisateurs ou des clients déterminés, vous pouvez préauthoriser l’accès à l’API Azure OpenAI en utilisant l’autorisation OAuth 2.0 avec Microsoft Entra ID ou un autre fournisseur d’identité. Pour plus d’informations, consultez Protéger une API dans Gestion des API Azure en utilisant l’autorisation OAuth 2.0 avec Microsoft Entra ID.

Remarque

Utilisez l’autorisation OAuth 2.0 dans le cadre d’une stratégie de défense en profondeur. Elle ne remplace pas l’authentification par clé API ni l’authentification par identité managée auprès d’une API Azure OpenAI.

Vous trouverez ci-dessous la procédure générale pour restreindre l’accès API aux utilisateurs ou aux applications autorisés utilisant un fournisseur d’identité.

  1. Créez une application dans votre fournisseur d’identité pour représenter l’API OpenAI dans Gestion des API Azure. Si vous utilisez l’ID Microsoft Entra, inscrivez une application dans votre locataire Microsoft Entra ID. Enregistrez des détails tels que l’ID d’application et l’URI d’audience.

    Si nécessaire, configurez l’application pour qu’elle dispose de rôles ou d’étendues qui représentent les autorisations affinées nécessaires pour accéder à l’API Azure OpenAI.

  2. Ajoutez un extrait de code de stratégie inbound dans votre instance Gestion des API pour valider les requêtes qui présentent un jeton web JSON (JWT) dans l’en-tête Authorization. Placez cet extrait de code avant les autres stratégies inbound que vous avez définies pour vous authentifier auprès de l’API Azure OpenAI.

    Remarque

    Les exemples suivants montrent la structure générale des stratégies pour valider un jeton JWT. Personnalisez-les en fonction de votre fournisseur d’identité et des exigences de votre application et de votre API.

    • validate-azure-ad-token : si vous utilisez Microsoft Entra ID, configurez la stratégie validate-azure-ad-token pour valider l’audience et les revendications dans le jeton JWT. Pour plus d’informations, consultez les informations de référence sur la stratégie.

      <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 : si vous utilisez un autre fournisseur d’identité, configurez la stratégie validate-jwt pour valider l’audience et les revendications dans le jeton JWT. Pour plus d’informations, consultez les informations de référence sur la stratégie.

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