Authentification Microsoft Entra pour Application Insights
Application Insights prend désormais en charge l’authentification Microsoft Entra. À l’aide de Microsoft Entra ID, vous pouvez désormais vous assurer que seules les données de télémétrie authentifiées sont ingérées dans les ressources de vos Application Insights.
L’utilisation de différents systèmes d’authentification peut être fastidieuse et risquée, car il est difficile de gérer des informations d’identification à grande échelle. Vous pouvez maintenant choisir de ne pas utiliser l'authentification locale pour vous assurer que seule la télémétrie exclusivement authentifiée à l’aide des identités managées et de Microsoft Entra ID est ingérée dans votre ressource. Cette fonctionnalité est une étape permettant d’améliorer la sécurité et la fiabilité des données de télémétrie utilisées pour prendre les décisions opérationnelles critiques (alertes et mise à l’échelle automatique) et des décisions métier.
Remarque
Ce document aborde l’ingestion de données dans Application Insights en utilisant l’authentification basée sur Microsoft Entra ID. Pour plus d’informations sur l’interrogation de données dans Application Insights, consultez l’article Interroger Application Insights à l’aide de l’authentification Microsoft Entra.
Prérequis
Les étapes préliminaires suivantes permettent d’active l’ingestion authentifiée Microsoft Entra. Vous devez :
- Être dans le cloud public.
- Familiarisez-vous avec :
- Disposer d’un rôle Propriétaire au groupe de ressources si vous souhaitez accorder l’accès à l’aide de rôles intégrés Azure.
- Comprenez les scénarios non pris en charge.
Scénarios non pris en charge
Les kits de développement logiciel suivants (SDK) et les fonctionnalités ne sont pas pris en charge pour une utilisation avec l’ingestion authentifiée de Microsoft Entra :
- SDK Application Insights Java 2.x.
L'authentification Microsoft Entra est uniquement disponible à partir de la version 3.2.0 d’Application Insights Java Agent. - SDK web JavaScript ApplicationInsights.
- Application Insights OpenCensus Python SDK avec Python version 3.4 et 3.5.
- Surveillance sans code/instrumentation automatique activée par défaut (pour les langues) pour Azure App Service, Machines Virtuelles Microsoft Azure/Microsoft Azure Virtual Machine Scale Sets et Azure Functions.
- Profiler.
Configurer et activer l’authentification basée sur Microsoft Entra ID
Si vous n’avez pas encore d’identité, créez-en une à l’aide d’une identité managée ou d’un principal de service.
Nous vous recommandons d’utiliser une identité managée :
Configurez une identité managée pour votre service Azure (Machines Virtuelles ou App Service).
Nous vous déconseillons d’utiliser un principal de service :
Pour plus d'informations sur la création d'une application et d’un principal de service Microsoft Entra pouvant accéder aux ressources, voir Créer un principal de service.
Affecter un rôle au service Azure.
Suivez les étapes décrites dans assigner des rôles Azure pour ajouter le rôle Éditeur des métriques de surveillance de la ressource Application Insights cible à la ressource Azure à partir de laquelle les données de télémétrie sont envoyées.
Notes
Bien que le rôle Éditeur des métriques de surveillance indique « mesures », il publie toutes les données de télémétrie dans la ressource Application Insights.
Suivez les instructions de configuration conformément à la langue qui suit.
Remarque
La prise en charge de Microsoft Entra ID dans le kit de développement logiciel (SDK) Application Insights .NET est incluse à partir de la version 2.18-Beta3.
Application Insights SDK .net prend en charge les classes d’informations d’identification fournies par l' identité Azure.
- Nous vous recommandons
DefaultAzureCredential
pour le développement local. - Nous vous recommandons
ManagedIdentityCredential
pour les identités managées attribuées par le système et par l'utilisateur.- Pour l’affectation par le système, utilisez le constructeur par défaut sans paramètres.
- Pour la valeur assignée à l’utilisateur, fournissez l’ID client au constructeur.
L’exemple suivant montre comment créer et configurer TelemetryConfiguration
manuellement à l’aide de .NET :
TelemetryConfiguration.Active.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/";
var credential = new DefaultAzureCredential();
TelemetryConfiguration.Active.SetAzureTokenCredential(credential);
L’exemple suivant montre comment configurer TelemetryConfiguration
à l’aide de .NET Core :
services.Configure<TelemetryConfiguration>(config =>
{
var credential = new DefaultAzureCredential();
config.SetAzureTokenCredential(credential);
});
services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/"
});
Désactiver l’authentification locale
Une fois l’authentification Microsoft Entra activée, vous pouvez choisir de désactiver l’authentification locale. Cette configuration vous permet d’ingérer des données de télémétrie exclusivement authentifiées par Microsoft Entra ID et affecte l’accès aux données (par exemple, via des clés API).
Vous pouvez désactiver l’authentification locale à l’aide du Portail Azure, Azure Policy ou par programmation.
Portail Azure
À partir de votre ressource Application Insights, sélectionnez Propriétés sous le titre Configurer dans le menu de gauche. Sélectionnez Activé (cliquez pour modifier) si l'authentification locale est activée.
Sélectionnez Désactivé et appliquez les modifications.
Après avoir désactivé l’authentification locale sur votre ressource, les informations correspondantes s’affichent dans le volet Vue d’ensemble .
Azure Policy
Azure Policy pour DisableLocalAuth
empêche les utilisateurs de créer une ressource Application Insights sans définir cette propriété sur true
. Le nom de la stratégie est Application Insights components should block non-AAD auth ingestion
.
Pour appliquer cette définition de stratégie à votre abonnement, créez une nouvelle affectation de stratégie, puis affectez la stratégie.
L’exemple suivant montre la définition du modèle de stratégie :
{
"properties": {
"displayName": "Application Insights components should block non-AAD auth ingestion",
"policyType": "BuiltIn",
"mode": "Indexed",
"description": "Improve Application Insights security by disabling log ingestion that are not AAD-based.",
"metadata": {
"version": "1.0.0",
"category": "Monitoring"
},
"parameters": {
"effect": {
"type": "String",
"metadata": {
"displayName": "Effect",
"description": "The effect determines what happens when the policy rule is evaluated to match"
},
"allowedValues": [
"audit",
"deny",
"disabled"
],
"defaultValue": "audit"
}
},
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Insights/components"
},
{
"field": "Microsoft.Insights/components/DisableLocalAuth",
"notEquals": "true"
}
]
},
"then": {
"effect": "[parameters('effect')]"
}
}
}
}
Activation par programmation
La propriété DisableLocalAuth
est utilisée pour désactiver toute authentification locale sur votre ressource Application Insights. Lorsque la valeur est true
, cette propriété impose l’utilisation de l’authentification Microsoft Entra pour tous les accès.
L’exemple suivant montre le modèle Azure Resource Manager que vous pouvez utiliser pour créer une ressource d’Application Insights basée sur un espace de travail avec LocalAuth
désactivé.
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"regionId": {
"type": "string"
},
"tagsArray": {
"type": "object"
},
"requestSource": {
"type": "string"
},
"workspaceResourceId": {
"type": "string"
},
"disableLocalAuth": {
"type": "bool"
}
},
"resources": [
{
"name": "[parameters('name')]",
"type": "microsoft.insights/components",
"location": "[parameters('regionId')]",
"tags": "[parameters('tagsArray')]",
"apiVersion": "2020-02-02-preview",
"dependsOn": [],
"properties": {
"Application_Type": "[parameters('type')]",
"Flow_Type": "Redfield",
"Request_Source": "[parameters('requestSource')]",
"WorkspaceResourceId": "[parameters('workspaceResourceId')]",
"DisableLocalAuth": "[parameters('disableLocalAuth')]"
}
}
]
}
Audience du jeton
Lorsque vous développez un client personnalisé pour obtenir un jeton d’accès auprès de Microsoft Entra ID dans le but d’envoyer des données de télémétrie à Application Insights, reportez-vous au tableau suivant pour déterminer la chaîne d’audience appropriée pour votre environnement hôte particulier.
Version cloud Azure | Valeur d’audience du jeton |
---|---|
Cloud public Azure | https://monitor.azure.com |
Cloud Microsoft Azure géré par 21Vianet | https://monitor.azure.cn |
Cloud Azure US Government | https://monitor.azure.us |
Si vous utilisez des clouds souverains, vous trouverez également les informations d’audience dans la chaîne de connexion. La chaîne de connexion suit cette structure :
InstrumentationKey={profile.InstrumentationKey};IngestionEndpoint={ingestionEndpoint};LiveEndpoint={liveDiagnosticsEndpoint};AADAudience={aadAudience}
Le paramètre d’audience, AADAudience, peut varier en fonction de votre environnement spécifique.
Dépannage
Cette section fournit des scénarios de résolution des problèmes distincts et des étapes que vous pouvez entreprendre pour résoudre les problèmes avant de générer un ticket de support.
Erreurs HTTP d’ingestion
Le service d'ingestion renvoie des erreurs spécifiques, quelle que soit la langue du SDK. Le trafic réseau peut être collecté à l’aide d’un outil comme Fiddler. Filtrez le trafic destiné au point de terminaison d’ingestion défini dans la chaîne de connexion.
Authentification HTTP/1.1 400 non prise en charge
Cette erreur indique que la ressource est définie pour Microsoft Entra-seulement. Vous devez configurer correctement le Kit de développement logiciel (SDK), car il envoie à l’API incorrecte.
Remarque
« v2/track » ne prend pas en charge Microsoft Entra ID. Lorsque le SDK est correctement configuré, la télémétrie sera envoyée à "v2.1/track".
Ensuite, vous devriez passer en revue la configuration du kit de développement (SDK).
HTTP/1.1 401 Autorisation requise
Cette erreur indique que le kit SDK est correctement configuré, mais qu’il ne parvient pas à acquérir de jeton valide. Cette erreur peut indiquer un problème avec Microsoft Entra ID.
Ensuite, vous devriez identifier les exceptions dans les journaux du kit SDK ou les erreurs réseau provenant de l’identité Azure.
HTTP/1.1 403 Non autorisé
Cette erreur signifie que le Kit de développement logiciel (SDK) utilise des informations d’identification sans autorisation pour la ressource ou l’abonnement Application Insights.
Tout d’abord, vérifiez le contrôle d’accès de la ressource Application Insights. Vous devez configurer le Kit de développement logiciel (SDK) avec les informations d’identification qui ont le rôle Serveur de publication des métriques de surveillance.
Résolution des problèmes propres à la langue
Source de l'événement
Le kit SDK .NET Application Insights émet des journaux d’erreurs à l’aide de la source de l’événement. Pour en savoir plus sur la collecte des journaux des sources d’événements, consultez la section Dépannage des journaux de collecte de données avec PerfView.
Si le kit SDK ne parvient pas à obtenir de jeton, le message d’exception est enregistré Failed to get AAD Token. Error message:
.