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 découvrez comment authentifier et autoriser des points de terminaison d’API Azure OpenAI managé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 :

Conditions préalables requises

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

  • Une instance API Management. Pour obtenir un exemple des étapes à suivre, 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 à la création d’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 comme 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>

S’authentifier avec une identité gérée

Une autre méthode recommandée pour s’authentifier auprès d’une API Azure OpenAI consiste à utiliser une identité managée dans Microsoft Entra ID. Pour plus d’informations, consultez Comment configurer Azure OpenAI Service avec une identité managée.

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 des requêtes adressées à l’API Azure OpenAI à l’aide d’une 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> 
    

Conseil / Astuce

Une alternative à l’utilisation des stratégies authentication-managed-identity et set-header indiquées dans cet exemple consiste à configurer une ressource back-end qui dirige les demandes d’API vers le point de terminaison d’Azure OpenAI Service. Dans la configuration du back-end, activez l’authentification par identité managée auprès d’Azure OpenAI Service. La Gestion des API Azure automatise ces étapes lors de l’importation d’une API directement à partir d’Azure OpenAI Service. Pour plus d’informations, consultez Importer une API à partir d’Azure OpenAI Service.

Autorisation OAuth 2.0 à l’aide d’un 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 la Gestion des API Azure à l’aide de 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 permettant de 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>