Utiliser Azure OpenAI en toute sécurité sur vos données
Remarque
À partir de juin 2024, le formulaire de demande de point de terminaison privé géré Microsoft pour Recherche Azure AI n’est plus nécessaire.
Le point de terminaison privé géré sera supprimé du réseau virtuel managé Microsoft en juillet 2025. Si vous avez déjà approvisionné un point de terminaison privé géré via le processus de demande avant juin 2024, activez le service approuvé Recherche Azure AI le plus tôt possible pour éviter toute interruption de service.
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.
- 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 la planification déclenche l’ingestion, 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 :
- Utilise en interne le premier indexeur créé précédemment pour décoder les documents.
- Utilise un algorithme heuristique pour effectuer la segmentation. Il respecte les dispositions du tableau et les autres éléments de mise en forme dans les limites du bloc pour garantir la meilleure qualité de segmentation possible.
- Si vous choisissez d’activer la recherche vectorielle, Azure OpenAI utilise le paramètre d’incorporation sélectionné pour vectoriser les blocs.
- 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
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 durant l’inférence pour effectuer le mappage des champs. 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 une dépendance d’incorporation est fournie dans la requête d’inférence, Azure OpenAI vectorise la requête réécrite, puis la requête et le vecteur sont envoyés au service 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 du document, le service Recherche Azure AI découpe les résultats de la recherche en fonction de l’appartenance de l’utilisateur au groupe Microsoft Entra spécifié dans le filtre. 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 :
Pour inscrire votre application, et créer des utilisateurs et des groupes, suivez les étapes décrites dans la documentation relative à Recherche Azure AI.
Indexez vos documents avec leurs groupes autorisés. Vérifiez que vos nouveaux champs de sécurité ont le schéma :
{"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 quemy_group_ids
, vous pouvez mapper le champ dans le mappage de champs d’index.Vérifiez que chaque document sensible de l’index a cette valeur de champ de sécurité définie pour les groupes autorisés du document.
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 est désactivé.
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 :
Important
Ce qui suit est fourni à titre d’exemple uniquement. Si vous utilisez une clé API, stockez-la en toute sécurité dans un autre emplacement, par exemple dans Azure Key Vault. N'incluez pas la clé API directement dans votre code et ne la diffusez jamais publiquement.
Pour découvrir plus d’informations sur la sécurité des services IA, consultez Authentifier les requêtes auprès d’Azure AI services.
{
"messages": [
{
"role": "user",
"content": "who is my manager?"
}
],
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": "<AZURE_AI_SEARCH_ENDPOINT>",
"key": "<AZURE_AI_SEARCH_API_KEY>",
"index_name": "<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 prévoyez de sécuriser uniquement une partie de vos ressources, vous devez quand même suivre toutes les étapes.
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.
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.
- Le premier sous-réseau est utilisé pour la passerelle réseau virtuelle.
- Le deuxième sous-réseau est utilisé pour les points de terminaison privés des trois services clés.
- Le troisième sous-réseau est vide, et utilisé pour l’intégration de réseau virtuel sortant d’application web.
Configurer Azure OpenAI
Sous-domaine personnalisé activé
Le sous-domaine personnalisé est obligatoire pour l’authentification basée sur Microsoft Entra ID et la zone DNS privée. Si la ressource Azure OpenAI est créée à l’aide d’un modèle ARM, le sous-domaine personnalisé doit être spécifié explicitement.
Activer une identité managée
Pour permettre à votre compte Recherche Azure AI et à votre compte de stockage de reconnaître votre instance Azure OpenAI Service via l’authentification Microsoft Entra ID, vous devez attribuer une identité managée pour votre instance Azure OpenAI Service. Le moyen le plus simple consiste à activer l’identité managée affectée par le système sur 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": "<YOUR-PRINCIPAL-ID>",
"tenantId": "<YOUR-TENNANT-ID>",
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<YOUR-SUBSCIRPTION-ID>/resourceGroups/my-resource-group",
"principalId": "<YOUR-PRINCIPAL-ID>",
"clientId": "<YOUR-CLIENT-ID>"
}
}
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 instance Azure OpenAI Service à 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.
Configurer Recherche Azure AI
Vous pouvez utiliser le niveau tarifaire Essentiel et des niveaux tarifaires supérieurs pour la ressource de recherche. Bien que cela ne soit pas nécessaire, si vous utilisez le niveau tarifaire S2, des options avancées sont disponibles.
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.
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 ou Contrôle d’accès en fonction du rôle sous l’onglet Clés du portail Azure.
Pour plus d’informations, consultez l’article sur le contrôle d’accès en fonction du rôle (RBAC) dans 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 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.
Activer le service approuvé
Vous pouvez activer le service approuvé de votre ressource de recherche à partir du portail Azure.
Accédez à l’onglet réseau de votre ressource de recherche. Une fois l’accès au réseau public défini à désactivé, sélectionnez Autoriser les services Azure dans la liste des services approuvés à accéder à ce service de recherche.
Vous pouvez également utiliser l’API REST pour activer le service approuvé. Cet exemple utilise Azure CLI et l’outil jq
.
rid=/subscriptions/<YOUR-SUBSCRIPTION-ID>/resourceGroups/<YOUR-RESOURCE-GROUP>/providers/Microsoft.Search/searchServices/<YOUR-RESOURCE-NAME>
apiVersion=2024-03-01-Preview
#store the resource properties in a variable
az rest --uri "https://management.azure.com$rid?api-version=$apiVersion" > search.json
#replace bypass with AzureServices using jq
jq '.properties.networkRuleSet.bypass = "AzureServices"' search.json > search_updated.json
#apply the updated properties to the resource
az rest --uri "https://management.azure.com$rid?api-version=$apiVersion" \
--method PUT \
--body @search_updated.json
Créer une liaison privée partagée
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 8 du diagramme d’architecture d’ingestion des données passe de contourner le service approuvé à liaison privée partagée.
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, vous devez configurer un compte de stockage afin de contourner Azure OpenAI et Recherche Azure AI en tant que services approuvés basés sur 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 prétraité dans le conteneur de sortie. |
Cognitive Services OpenAI Contributor |
Azure AI Search | Azure OpenAI | Compétence personnalisée. |
Storage Blob Data Reader |
Recherche Azure AI | Compte de stockage | Lit les blobs de documents et les blobs de blocs. |
Reader |
Projet Azure AI Studio | Points de terminaison privés d'Azure Storage (Blob et fichier) | Lit les index de recherche créés dans le stockage d’objets blob dans un projet AI Studio. |
Cognitive Services OpenAI User |
Application web | Azure OpenAI | Inférence. |
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. |
Role Based Access Control Administrator |
Azure OpenAI | Autorisation de configurer l’attribution de rôle nécessaire sur la ressource Azure OpenAI. Permet à l’application web d’appeler Azure Open AI. |
Configurer la passerelle et le client
Pour accéder à Azure OpenAI Service à 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.
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.
- Créez une zone DNS privée dans votre groupe de ressources.
- 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.
- 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.
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.
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.