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 :

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 :

Configurer et activer l’authentification basée sur Microsoft Entra ID

  1. 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.

  2. 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.

  3. 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

  1. À 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.

    Capture d’écran montrant les propriétés sous la section Configurer et le bouton d’authentification locale Activé (sélectionner pour modifier).

  2. Sélectionnez Désactivé et appliquez les modifications.

    Capture d’écran de l’authentification locale avec le bouton activé/désactivé.

  3. Après avoir désactivé l’authentification locale sur votre ressource, les informations correspondantes s’affichent dans le volet Vue d’ensemble .

    Capture d’écran montrant l’onglet Vue d’ensemble avec le bouton d’authentification locale Désactivé (sélectionner pour modifier).

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:.

Étapes suivantes