Authentification et autorisation des services Azure AI à l'aide de .NET
Les demandes d'application adressées à Azure AI Services doivent être authentifiées. Dans cet article, vous explorerez les options disponibles pour s'authentifier auprès d’Azure OpenAI et d'autres services d'IA à l'aide de .NET. Ces concepts s'appliquent au Semantic Kernel SDK, ainsi qu'aux SDK de services spécifiques tels que Azure OpenAI. La plupart des services d'IA proposent deux méthodes principales pour authentifier les applications et les utilisateurs :
- L’authentification basée sur des clés permet d’accéder à un service Azure à l’aide de valeurs de clé secrète. Ces valeurs secrètes sont parfois appelées clés API ou clés d'accès, selon le service.
- Microsoft Entra ID fournit une solution complète de gestion des identités et des accès pour s’assurer que les identités correctes disposent du niveau d’accès approprié à différentes ressources Azure.
Les sections suivantes fournissent des aperçus conceptuels de ces deux approches, plutôt que des étapes de mise en œuvre détaillées. Pour plus d’informations sur la connexion aux services Azure, consultez les ressources suivantes :
- Authentifier des applications .NET auprès des services Azure
- Notions de base de l’identité
- Qu’est-ce qu’Azure RBAC ?
Remarque
Les exemples de cet article se concentrent principalement sur les connexions à Azure OpenAI, mais les mêmes concepts et étapes de mise en œuvre s'appliquent directement à de nombreux autres services Azure AI.
Authentification par clés
Les clés d'accès permettent aux applications et aux outils de s'authentifier auprès d'un service Azure AI, tel qu’Azure OpenAI, à l'aide d'une clé secrète fournie par le service. Récupérez la clé secrète à l'aide d'outils tels que le portail Azure ou Azure CLI et utilisez-la pour configurer le code de votre application afin qu'il se connecte au service d'IA :
builder.Services.AddAzureOpenAIChatCompletion(
"deployment-model",
"service-endpoint",
"service-key"); // Secret key
var kernel = builder.Build();
L'utilisation de clés est une option simple, mais cette approche doit être utilisée avec prudence. Les clés ne sont pas l’option d’authentification recommandée, car elles :
- Ne suivent pas le principe du privilège minimum : elles fournissent des autorisations élevées, quelle que soit la personne qui les utilise ou pour quelle tâche.
- Peuvent être archivées accidentellement dans le contrôle de code source ou stockées dans des emplacements non sécurisés.
- Peuvent facilement être partagées avec ou envoyées à des parties qui ne doivent pas avoir accès.
- Nécessitent souvent une administration et une rotation manuelles.
Au lieu de cela, envisagez d’utiliser Microsoft Entra ID pour l’authentification, qui est la solution recommandée pour la plupart des scénarios.
Authentification à l’aide de Microsoft Entra ID
Microsoft Entra ID est un service de gestion des identités et des accès basé sur le cloud qui offre un vaste ensemble de fonctionnalités pour différents scénarios d'entreprise et d'application. Microsoft Entra ID est la solution recommandée pour se connecter à Azure OpenAI et à d’autres services IA et offre les avantages suivants :
- Authentification sans clé à l’aide d’identités.
- Contrôle d'accès basé sur les rôles (RBAC) pour attribuer aux identités les autorisations minimales requises.
- Peut utiliser la bibliothèque cliente
Azure.Identity
pour détecter différentes informations d’identification entre les environnements sans nécessiter de modifications de code. - Traite automatiquement les tâches de maintenance administrative telles que la rotation des clés sous-jacentes.
Le flux de travail pour implémenter l’authentification Microsoft Entra dans votre application inclut généralement les éléments suivants :
Développement local :
- Connectez-vous à Azure à l'aide d'un outil de développement local tel que Azure CLI ou Visual Studio.
- Configurez votre code pour utiliser la bibliothèque cliente
Azure.Identity
et la classeDefaultAzureCredential
. - Attribuez des rôles Azure au compte avec lequel vous vous êtes connecté pour permettre l'accès au service AI.
Application hébergée Azure :
- Déployez l’application sur Azure après l’avoir configuré pour l’authentifier à l’aide de la bibliothèque cliente
Azure.Identity
. - Attribuez une identité managée à l’application hébergée par Azure.
- Attribuez des rôles Azure à l’identité managée pour permettre l'accès au service AI.
- Déployez l’application sur Azure après l’avoir configuré pour l’authentifier à l’aide de la bibliothèque cliente
Les concepts clés de ce flux de travail sont examinés dans les sections suivantes.
S'authentifier localement auprès d’Azure
Lorsque vous développez localement des applications qui se connectent aux services Azure AI, authentifiez-vous auprès d’Azure à l'aide d'un outil tel que Visual Studio ou Azure CLI. Vos informations d’identification locales peuvent être découvertes par la bibliothèque cliente Azure.Identity
et utilisées pour authentifier votre application auprès des services Azure, comme décrit dans la section Configurer le code de l’application.
Par exemple, pour vous authentifier sur Azure localement à l’aide d’Azure CLI, exécutez la commande suivante :
az login
Configurez le code de l’application
Utilisez la bibliothèque cliente Azure.Identity
à partir du Kit de développement logiciel (SDK) Azure pour implémenter l’authentification Microsoft Entra dans votre code. Les bibliothèques Azure.Identity
incluent la classe DefaultAzureCredential
, qui découvre automatiquement les informations d’identification Azure disponibles en fonction de l’environnement actuel et des outils disponibles. Consultez la documentation du Kit de développement logiciel (SDK) Azure pour .NET pour obtenir l’ensemble complet d’informations d’identification d’environnement prises en charge et l’ordre dans lequel ils sont recherchés.
Par exemple, configurez le noyau sémantique pour l’authentification de DefaultAzureCredential
à l’aide du code suivant :
Kernel kernel = Kernel
.CreateBuilder()
.AddAzureOpenAITextGeneration(
"your-model",
"your-endpoint",
new DefaultAzureCredential())
.Build();
DefaultAzureCredential
permet aux applications d’être promues du développement local en production sans modification du code. Par exemple, pendant le développement DefaultAzureCredential
, vous utilisez les informations d’identification de votre utilisateur local à partir de Visual Studio ou d’Azure CLI pour s’authentifier auprès du service IA. Lorsque l’application est déployée sur Azure, DefaultAzureCredential
utilise l’identité managée affectée à votre application.
Attribuer des rôles à votre identité
Le contrôle d’accès en fonction du rôle Azure (Azure RBAC) est un système qui fournit une gestion précise des accès aux ressources Azure. Attribuez un rôle au principal de sécurité utilisé pour DefaultAzureCredential
se connecter à un service Azure AI, qu’il s’agisse d’un utilisateur, d’un groupe, d’un principal de service ou d’une identité managée individuelle. Les rôles Azure sont un ensemble d'autorisations qui permettent à l'identité d'effectuer diverses tâches, telles que générer des compléments ou créer et supprimer des ressources.
Attribuez des rôles tels que Cognitive Services OpenAI User (ID de rôle : 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd
) à l’identité appropriée à l’aide d’outils tels que Azure CLI, Bicep ou le portail Azure. Par exemple, utilisez la commande az role assignment create
pour attribuer un rôle à l’aide d’Azure CLI :
az role assignment create \
--role "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd" \
--assignee-object-id "$PRINCIPAL_ID" \
--scope /subscriptions/"$SUBSCRIPTION_ID"/resourceGroups/"$RESOURCE_GROUP" \
--assignee-principal-type User
Apprenez-en plus sur Azure RBAC en utilisant les ressources suivantes :
Attribuer une identité managée à votre application
Dans la plupart des scénarios, les applications hébergées par Azure doivent utiliser une identité managée pour se connecter à d’autres services tels qu’Azure OpenAI. Les identités gérées fournissent une identité entièrement gérée dans Microsoft Entra ID pour les applications à utiliser lors de la connexion aux ressources qui prennent en charge l'authentification Microsoft Entra. DefaultAzureCredential
découvre l’identité associée à votre application et l’utilise pour s’authentifier auprès d’autres services Azure.
Il existe deux types d’identités managées que vous pouvez affecter à votre application :
- Une identité attribuée par le système est liée à votre application et est supprimée si votre application est supprimée. Une application ne peut avoir qu’une seule identité attribuée par le système.
- Une identité attribuée par l’utilisateur est une ressource Azure autonome qui peut être assignée à votre application. Une application peut avoir plusieurs identités attribuées par l’utilisateur.
Attribuez des rôles à une identité managée comme vous le feriez pour un compte d’utilisateur individuel, tel que le rôle Utilisateur OpenAI Cognitive Services. En savoir plus sur l’utilisation des identités managées à l’aide des ressources suivantes :