Partager via


Utiliser Azure OpenAI en toute sécurité sur vos données

Lisez cet article pour découvrir comment utiliser Azure OpenAI On Your Data de manière sécurisée en protégeant les données et les ressources via le contrôle d’accès en fonction du rôle Microsoft Entra ID, les réseaux virtuels et les points de terminaison privés.

Cet article s’applique uniquement lors de l’utilisation d’Azure OpenAI sur vos données avec du texte. Il ne s’applique pas à l’utilisation d’Azure OpenAI sur vos données avec des images.

Architecture d’ingestion des données

Lorsque vous utilisez Azure OpenAI sur vos données pour ingérer des données à partir de Stockage Blob Azure, de fichiers locaux ou d’URL dans Recherche Azure AI, le processus suivant est utilisé pour traiter les données.

Diagramme montrant le processus d’ingestion de données.

  • Les étapes 1 et 2 sont utilisées uniquement pour le chargement de fichiers.
  • Le téléchargement d’URL vers votre stockage d’objets blob n’est pas illustré dans ce diagramme. Une fois les pages web téléchargées à partir d’Internet et chargées dans le stockage d’objets blob, l’étape 3 et les suivantes sont les mêmes.
  • Deux indexeurs, deux index, deux sources de données et une compétence personnalisée sont créés dans la ressource Recherche Azure AI.
  • Le conteneur de blocs est créé dans le stockage d’objets blob.
  • Si l’ingestion est déclenchée par une actualisation planifiée, le processus d’ingestion démarre à l’étape 7.
  • L’API preprocessing-jobs d’Azure OpenAI implémente le protocole d’API web de compétence personnalisée Recherche Azure AI et traite les documents dans une file d’attente.
  • Azure OpenAI :
    1. Utilise en interne le premier indexeur créé précédemment pour décoder les documents.
    2. Utilise un algorithme heuristique pour effectuer une segmentation, en respectant les dispositions de table et autres éléments de mise en forme dans la limite des segments afin de garantir la meilleure qualité de segmentation.
    3. Si vous choisissez d’activer la recherche vectorielle, Azure OpenAI utilise le déploiement d’incorporation sélectionné pour vectoriser les blocs en interne.
  • Une fois toutes les données monitorées par le service traitées, Azure OpenAI déclenche le deuxième indexeur.
  • L’indexeur stocke les données traitées dans un service Recherche Azure AI.

Pour les identités managées utilisées dans les appels de service, seules celles affectées par le système sont prises en charge. Les identités managées affectées par l’utilisateur ne sont pas prises en charge.

Architecture d’inférence

Diagramme montrant le processus d’utilisation de l’API d’inférence.

Quand vous envoyez des appels d’API pour converser avec un modèle Azure OpenAI sur vos données, le service doit récupérer les champs d’index pendant l’inférence pour mapper automatiquement les champs (si le mappage des champs n’est pas défini explicitement dans la requête). Par conséquent, le service exige que l’identité Azure OpenAI ait le rôle Search Service Contributor pour le service de recherche, même pendant l’inférence.

Si un déploiement d’incorporation est fourni dans la requête d’inférence, la requête réécrite est vectorisée par Azure OpenAI, et la requête et le vecteur sont envoyés à Recherche Azure AI pour la recherche vectorielle.

Contrôle d’accès au niveau du document

Remarque

Le contrôle d’accès au niveau du document est pris en charge uniquement pour la recherche Azure AI.

Azure OpenAI sur vos données vous permet de limiter les documents qui peuvent être utilisés dans les réponses pour différents utilisateurs avec des filtres de sécurité Recherche Azure AI. Quand vous activez l’accès au niveau des documents, les résultats de la recherche retournés par Recherche Azure AI et qui sont utilisés pour générer une réponse sont tronqués en fonction de l’appartenance de l’utilisateur au groupe Microsoft Entra. Vous pouvez activer l’accès au niveau des documents seulement sur les index Recherche Azure AI existants. Pour activer l’accès au niveau du document :

  1. Suivez les étapes de la documentation Recherche Azure AI pour inscrire votre application, et pour créer des utilisateurs et des groupes.

  2. Indexez vos documents avec leurs groupes autorisés. Assurez-vous que vos nouveaux champs de sécurité ont le schéma ci-dessous :

    {"name": "group_ids", "type": "Collection(Edm.String)", "filterable": true }
    

    group_ids est le nom de champ par défaut. Si vous utilisez un autre nom de champ tel que my_group_ids, vous pouvez mapper le champ dans le mappage de champs d’index.

  3. Vérifiez que la valeur de chaque document sensible de l’index est correctement définie sur ce champ de sécurité pour indiquer les groupes autorisés du document.

  4. Dans Azure OpenAI Studio, ajoutez votre source de données. Dans la section Mappage des champs d’index, vous pouvez mapper zéro ou une valeur au champ Groupes autorisés, tant que le schéma est compatible. Si le champ Groupes autorisés n’est pas mappé, l’accès au niveau du document n’est pas activé.

Azure OpenAI Studio

Une fois l’index Recherche Azure AI connecté, vos réponses dans le studio ont accès aux documents en fonction des autorisations Microsoft Entra de l’utilisateur connecté.

Application Web

Si vous utilisez une application web publiée, vous devez la redéployer pour effectuer une mise à niveau vers la dernière version. La dernière version de l’application web inclut la possibilité de récupérer les groupes du compte Microsoft Entra de l’utilisateur connecté, de le mettre en cache et d’inclure les ID de groupe dans chaque requête d’API.

API

Lorsque vous utilisez l’API, transmettez le paramètre filter dans chaque requête d’API. Par exemple :

{
    "messages": [
        {
            "role": "user",
            "content": "who is my manager?"
        }
    ],
    "dataSources": [
        {
            "type": "AzureCognitiveSearch",
            "parameters": {
                "endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
                "key": "'$AZURE_AI_SEARCH_API_KEY'",
                "indexName": "'$AZURE_AI_SEARCH_INDEX'",
                "filter": "my_group_ids/any(g:search.in(g, 'group_id1, group_id2'))"
            }
        }
    ]
}
  • my_group_ids est le nom de champ que vous avez sélectionné pour Groupes autorisés lors du mappage des champs.
  • group_id1, group_id2 sont des groupes attribués à l’utilisateur connecté. L’application cliente peut récupérer et mettre en cache les groupes d’utilisateurs.

Configuration des ressources

Utilisez les sections suivantes afin de configurer vos ressources pour une utilisation sécurisée optimale. Même si vous n'envisagez de sécuriser qu'une partie de vos ressources, vous devez suivre toutes les étapes ci-dessous.

Cet article décrit les paramètres réseau liés à la désactivation du réseau public pour les ressources Azure OpenAI, les ressources de recherche Azure AI et les comptes de stockage. L’utilisation de réseaux sélectionnés avec des règles IP n’est pas prise en charge, car les adresses IP des services sont dynamiques.

Conseil

Vous pouvez utiliser le script bash disponible sur GitHub pour valider votre configuration et déterminer si toutes les exigences répertoriées ici sont remplies.

Créer un groupe de ressources

Créez un groupe de ressources afin de pouvoir organiser toutes les ressources pertinentes. Les ressources du groupe de ressources incluent notamment :

  • Un réseau virtuel
  • Trois services clés : Azure OpenAI, Recherche Azure AI, un compte de stockage
  • Trois points de terminaison privés, chacun lié à un service clé
  • Trois interfaces réseau, chacune associée à un point de terminaison privé
  • Une passerelle de réseau virtuel pour l’accès à partir de machines clientes locales
  • Une application web avec un réseau virtuel intégré
  • Une zone DNS privée, afin que l’application web puisse trouver l’adresse IP de votre instance Azure OpenAI

Création d’un réseau virtuel

Le réseau virtuel comporte trois sous-réseaux.

  1. Le premier sous-réseau est utilisé pour les adresses IP privées des trois points de terminaison privés.
  2. Le deuxième sous-réseau est créé automatiquement lorsque vous créez la passerelle de réseau virtuel.
  3. Le troisième sous-réseau est vide, et utilisé pour l’intégration de réseau virtuel sortant d’application web.

Diagramme montrant l’architecture du réseau virtuel.

Notez que le réseau virtuel managé par Microsoft est créé par Microsoft, et que vous ne pouvez pas le voir. Le réseau virtuel managé par Microsoft est utilisé par Azure OpenAI pour accéder de manière sécurisée à votre service Recherche Azure AI.

Configurer Azure OpenAI

Sous-domaine personnalisé activé

Si vous avez créé Azure OpenAI via le portail Azure, le sous-domaine personnalisé doit déjà avoir été créé. Le sous-domaine personnalisé est requis pour l’authentification basée sur Microsoft Entra ID et la zone DNS privée.

Activer une identité managée

Pour permettre à votre compte Recherche Azure AI et votre compte de stockage de reconnaître votre service Azure OpenAI via l’authentification Microsoft Entra ID, vous devez attribuer une identité managée à votre service Azure OpenAI. Le moyen le plus simple consiste à activer l’identité managée affectée par le système sur le portail Azure. Capture d’écran montrant l’option d’identité managée affectée par le système dans le Portail Azure.

Pour définir les identités managées via l’API de gestion, consultez la documentation de référence sur l’API de gestion.


"identity": {
  "principalId": "12345678-abcd-1234-5678-abc123def",
  "tenantId": "1234567-abcd-1234-1234-abcd1234",
  "type": "SystemAssigned, UserAssigned", 
  "userAssignedIdentities": {
    "/subscriptions/1234-5678-abcd-1234-1234abcd/resourceGroups/my-resource-group",
    "principalId": "12345678-abcd-1234-5678-abcdefg1234", 
    "clientId": "12345678-abcd-efgh-1234-12345678"
  }
}

Activer le service approuvé

Pour autoriser votre service Recherche Azure AI à appeler votre preprocessing-jobs Azure OpenAI en tant qu’API web de compétence personnalisée, alors qu’Azure OpenAI n’a aucun accès au réseau public, vous devez configurer Azure OpenAI de façon à contourner Recherche Azure AI en tant que service approuvé sur l’identité managée. Azure OpenAI identifie le trafic provenant de votre service Recherche Azure AI en vérifiant les revendications dans le jeton JWT (JSON Web Token). Recherche Azure AI doit utiliser l’authentification d’identité managée affectée par le système pour appeler l’API web de compétence personnalisée.

Définissez networkAcls.bypass sur AzureServices à partir de l’API de gestion. Pour plus d’informations, consultez l’article sur les réseaux virtuels.

Vous pouvez ignorer cette étape uniquement si vous disposez d’une liaison privée partagée pour votre ressource Recherche Azure AI.

Désactiver l’accès au réseau public

Vous pouvez désactiver l’accès au réseau public de votre ressource Azure OpenAI dans le portail Azure.

Pour autoriser l’accès à votre service Azure OpenAI à partir de vos machines clientes, par exemple pour utiliser Azure OpenAI Studio, vous devez créer des connexions de point de terminaison privé qui se connectent à votre ressource Azure OpenAI.

Vous pouvez utiliser le niveau tarifaire de base et les niveaux supérieurs pour la configuration ci-dessous. Bien que cela ne soit pas nécessaire, si vous utilisez le niveau tarifaire S2, vous verrez s’afficher les options supplémentaires disponibles pour la sélection.

Activer une identité managée

Pour autoriser vos autres ressources à reconnaître Recherche Azure AI à l’aide de l’authentification Microsoft Entra ID, vous devez affecter une identité managée à votre service Recherche Azure AI. Le moyen le plus simple consiste à activer l’identité managée affectée par le système dans le portail Azure.

Capture d’écran montrant le paramètre d’identité managée pour la Recherche Azure AI dans le Portail Azure.

Activer le contrôle d’accès en fonction du rôle

Comme Azure OpenAI utilise l’identité managée pour accéder à Recherche Azure AI, vous devez activer le contrôle d’accès en fonction du rôle dans votre service Recherche Azure AI. Pour ce faire dans le portail Azure, sélectionnez Les deux sous l’onglet Clés du portail Azure.

Capture d’écran montrant l’option d’identité managée pour la Recherche Azure AI dans le Portail Azure.

Pour activer le contrôle d’accès en fonction du rôle via l’API REST, affectez la valeur aadOrApiKey à authOptions. Pour plus d’informations, consultez l’article sur le contrôle d’accès en fonction du rôle (RBAC) dans Recherche Azure AI.

"disableLocalAuth": false,
"authOptions": { 
    "aadOrApiKey": { 
        "aadAuthFailureMode": "http401WithBearerChallenge"
    }
}

Désactiver l’accès au réseau public

Vous pouvez désactiver l’accès au réseau public de votre ressource Recherche Azure AI dans le portail Azure.

Pour autoriser l’accès à votre ressource Recherche Azure AI à partir de vos machines clientes, par exemple pour utiliser Azure OpenAI Studio, vous devez créer des connexions de point de terminaison privé qui se connectent à votre ressource Recherche Azure AI.

Remarque

Pour autoriser l’accès à votre ressource Recherche Azure AI à partir de la ressource Azure OpenAI, vous devez envoyer un formulaire de demande. La demande sera examinée dans les 5 jours ouvrables, et vous serez contacté par e-mail au sujet des résultats. Si vous êtes éligible, nous provisionnerons le point de terminaison privé dans le réseau virtuel managé par Microsoft, et enverrons une requête de connexion de point de terminaison privé à votre service de recherche, que vous devrez approuver.

Une capture d’écran montrant l’écran d’approbation du point de terminaison privé.

La ressource du point de terminaison privé est approvisionnée dans un locataire géré par Microsoft, tandis que la ressource liée se trouve dans votre locataire. Vous ne pouvez pas accéder à la ressource du point de terminaison privé en cliquant simplement sur la liaison de point de terminaison privé (en police bleue) dans l’onglet Accès privé de la page Mise en réseau. À la place, cliquez ailleurs sur la ligne. Ainsi, le bouton Approuver ci-dessus devrait être cliquable.

En savoir plus sur le workflow d’approbation manuelle.

Conseil

Si vous utilisez un niveau tarifaire de base ou standard, ou si vous configurez toutes vos ressources de manière sécurisée pour la première fois, ignorez cette rubrique avancée.

Cette section s’applique uniquement à la ressource de recherche de niveau tarifaire S2, car elle nécessite la prise en charge des points de terminaison privés pour les indexeurs ayant un ensemble de compétences.

Pour créer une liaison privée partagée entre votre ressource de recherche et votre ressource Azure OpenAI, consultez la documentation de recherche. Sélectionnez le Type de ressource en tant que Microsoft.CognitiveServices/accounts, et l’ID de groupe en tant que openai_account.

Avec une liaison privée partagée, l’étape huit du diagramme d’architecture d’ingestion des données passe de contourner le service approuvé à point de terminaison privé.

Diagramme montrant le processus d’ingestion de données avec une ressource de recherche S2.

La liaison privée partagée Recherche Azure AI que vous avez créée se trouve également dans un réseau virtuel managé par Microsoft, et non dans votre réseau virtuel. La différence par rapport à l’autre point de terminaison privé géré créé plus tôt réside dans le fait que le point de terminaison privé géré [1] entre Azure OpenAI et Recherche Azure est approvisionné via l’application de formulaire, alors que le point de terminaison privé géré [2] entre Recherche Azure et Azure OpenAI est approvisionné via le portail Azure ou l’API REST de Recherche Azure.

Diagramme montrant l’architecture de réseau virtuel avec la ressource de recherche S2.

Configurer un compte de stockage

Activer le service approuvé

Pour autoriser l’accès à votre compte de stockage à partir d’Azure OpenAI et de Recherche Azure AI, alors que le compte de stockage n’a aucun accès au réseau public, vous devez configurer le compte de stockage pour contourner vos services Azure OpenAI et Recherche Azure AI en tant que services approuvés en fonction de l’identité managée.

Dans le portail Azure, accédez à l’onglet Réseau de votre compte de stockage, choisissez « Réseaux sélectionnés », puis sélectionnez Autorisez les services Azure figurant dans la liste des services approuvés à accéder à ce compte de stockage et cliquez sur Enregistrer.

Désactiver l’accès au réseau public

Vous pouvez désactiver l’accès au réseau public de votre compte de stockage dans le portail Azure.

Pour autoriser l’accès à votre compte de stockage à partir de vos machines clientes, par exemple pour utiliser Azure OpenAI Studio, vous devez créer des connexions de point de terminaison privé qui se connectent à votre stockage d’objets blob.

Affectations de rôles

Jusqu’à présent, vous avez configuré chaque ressource de manière indépendante. Vous devez à présent permettre aux services de s’autoriser les uns les autres.

Rôle Destinataire Ressource Description
Search Index Data Reader Azure OpenAI Azure AI Search Le service d’inférence interroge les données de l’index.
Search Service Contributor Azure OpenAI Azure AI Search Le service d’inférence interroge le schéma d’index concernant le mappage automatique des champs. Le service d’ingestion de données crée un index, des sources de données, un ensemble de compétences et un indexeur et interroge l’état de l’indexeur.
Storage Blob Data Contributor Azure OpenAI Compte de stockage Lit dans le conteneur d’entrée, et écrit le résultat du préprocessus dans le conteneur de sortie.
Cognitive Services OpenAI Contributor Azure AI Search Azure OpenAI Compétence personnalisée
Storage Blob Data Contributor Azure AI Search Compte de stockage Lit le blob et écrit dans la base de connaissances.

Dans le tableau ci-dessus, Assignee signifie l’identité managée affectée par le système de cette ressource.

L’administrateur doit avoir le rôle Owner sur ces ressources pour ajouter des attributions de rôle.

Consultez la documentation sur RBAC Azure pour obtenir des instructions sur la définition de ces rôles dans le portail Azure. Vous pouvez utiliser le script disponible sur GitHub pour ajouter les attributions de rôles par programmation.

Pour permettre aux développeurs d’utiliser ces ressources afin de générer des applications, l’administrateur doit ajouter l’identité des développeurs avec les attributions de rôle suivantes aux ressources.

Rôle Ressource Description
Cognitive Services OpenAI Contributor Azure OpenAI Appeler l’API d’ingestion publique à partir d’Azure OpenAI Studio. Le rôle Contributor n’est pas suffisant, car si vous avez uniquement le rôle Contributor, vous ne pouvez pas appeler l’API de plan de données via l’authentification Microsoft Entra ID, et l’authentification Microsoft Entra ID est requise dans la configuration sécurisée décrite dans cet article.
Cognitive Services User Azure OpenAI Répertoriez les clés API à partir d’Azure OpenAI Studio.
Contributor Recherche Azure AI Dresser la liste des clés API pour répertorier les index à partir d’Azure OpenAI Studio.
Contributor Compte de stockage Dresser la liste des signatures d’accès partagé de compte pour charger des fichiers à partir d’Azure OpenAI Studio.
Contributor Groupe de ressources ou abonnement Azure où le développeur doit déployer l’application web Déployer l’application web sur l’abonnement Azure du développeur.

Configurer la passerelle et le client

Pour accéder au service Azure OpenAI à partir de vos machines clientes locales, l’une des approches consiste à configurer la passerelle VPN Azure et Azure VPN Client.

Suivez ces instructions pour créer une passerelle de réseau virtuel pour votre réseau virtuel.

Suivez ces instructions pour ajouter une configuration de point à site et activer l’authentification basée sur Microsoft Entra ID. Téléchargez le package de configuration du profil Azure VPN Client, décompressez-le et importez le fichier AzureVPN/azurevpnconfig.xml dans votre client VPN Azure.

Capture d’écran montrant l’emplacement dans lequel importer le profil Azure VPN Client.

Configurez le fichier hosts de votre machine locale de façon à ce que les noms d’hôte de vos ressources pointent vers les adresses IP privées de votre réseau virtuel. Le fichier hosts se trouve à C:\Windows\System32\drivers\etc pour Windows et à /etc/hosts pour Linux. Exemple :

10.0.0.5 contoso.openai.azure.com
10.0.0.6 contoso.search.windows.net
10.0.0.7 contoso.blob.core.windows.net

Azure OpenAI Studio

Vous devriez pouvoir utiliser toutes les fonctionnalités d’Azure OpenAI Studio, notamment l’ingestion et l’inférence, à partir de vos machines clientes locales.

Application web

L’application web communique avec votre ressource Azure OpenAI. Étant donné que le réseau public est désactivé sur votre ressource Azure OpenAI, l’application web doit être configurée de façon à utiliser le point de terminaison privé dans votre réseau virtuel pour accéder à votre ressource Azure OpenAI.

L’application web doit résoudre votre nom d’hôte Azure OpenAI en l’adresse IP privée du point de terminaison privé pour Azure OpenAI. Par conséquent, vous devez d’abord configurer la zone DNS privée pour votre réseau virtuel.

  1. Créez une zone DNS privée dans votre groupe de ressources.
  2. Ajoutez un enregistrement DNS. L’adresse IP est l’adresse IP privée du point de terminaison privé de votre ressource Azure OpenAI, et vous pouvez obtenir l’adresse IP à partir de l’interface réseau associée au point de terminaison privé de votre instance Azure OpenAI.
  3. Liez la zone DNS privée à votre réseau virtuel afin que l’application web intégrée dans ce réseau virtuel puisse utiliser cette zone DNS privée.

Lors du déploiement de l’application web à partir d’Azure OpenAI Studio, sélectionnez le même emplacement avec le réseau virtuel, puis sélectionnez une référence SKU appropriée, afin qu’elle puisse prendre en charge la fonctionnalité d’intégration de réseau virtuel.

Une fois l’application web déployée, à partir de l’onglet Mise en réseau du portail Azure, configurez l’intégration du réseau virtuel du trafic sortant de l’application web, et choisissez le troisième sous-réseau que vous avez réservé pour l’application web.

Capture d’écran montrant la configuration du trafic sortant pour l’application web.

Utilisation de l’API

Vérifiez que vos informations d’identification de connexion ont le rôle Cognitive Services OpenAI Contributor sur votre ressource Azure OpenAI, et exécutez az login au préalable.

Capture d’écran montrant le rôle contributeur OpenAI Cognitive Services dans le Portail Azure.

API d’ingestion

Pour plus d’informations sur les objets de demande et de réponse utilisés par l’API d’ingestion, consultez l’article de référence sur l’API d’ingestion.

API d’inférence

Pour plus d’informations sur les objets de demande et de réponse utilisés par l’API d’inférence, consultez l’article de référence sur l’API d’inférence.

Utiliser Microsoft Defender pour le cloud

Vous pouvez désormais intégrer Microsoft Defender pour le Cloud (préversion) à vos ressources Azure pour protéger vos applications. Microsoft Defender pour le Cloud protège vos applications avec la protection contre les menaces pour les charges de travail IA, fournissant aux équipes des alertes de sécurité basées sur des preuves enrichies avec des signaux de veille des menaces Microsoft et permet aux équipes de renforcer leur posture de sécurité avec des recommandations en matière de meilleures pratiques de sécurité intégrée.

Utilisez ce formulaire pour demander l’accès.

Capture d’écran montrant Microsoft Defender pour le cloud.