Autenticación de Microsoft Entra para Application Insights

Application Insights ahora admite la autenticación de Microsoft Entra. Mediante Microsoft Entra ID, puede asegurarse de que solo se ingieren los datos de telemetría autenticados en los recursos de Application Insights.

El uso de varios sistemas de autenticación puede ser complicado y suponer un riesgo, ya que es difícil administrar las credenciales a gran escala. Ahora puede optar por excluirse de la autenticación local para asegurarse de que solo la telemetría que se autentica exclusivamente mediante identidades administradas y Microsoft Entra ID se ingiera en el recurso. Esta característica es un paso para mejorar la seguridad y confiabilidad de la telemetría que se usa para realizar operaciones críticas (alertas y escalado automático) y decisiones empresariales.

Nota:

En este documento se describe la ingesta de datos en Application Insights mediante la autenticación basada en Microsoft Entra ID. Para más información sobre cómo consultar datos en Application Insights, consulte Consulta de Application Insights mediante Autenticación de Microsoft Entra.

Requisitos previos

Se requieren los siguientes pasos preliminares para habilitar la ingesta autenticada de Microsoft Entra. Necesita:

Escenarios no admitidos

Las siguientes características y kits de desarrollo de software (SDK) no son compatibles para su uso con la ingesta autenticada de Microsoft Entra:

Configuración y habilitación de la autenticación basada en Microsoft Entra ID

  1. Si aún no tiene una identidad, cree una mediante una identidad administrada o una entidad de servicio.

  2. Asigne un rol al servicio de Azure.

    Siga los pasos descritos en Asignación de roles de Azure para agregar el rol Supervisión del publicador de métricas desde el recurso de destino de Application Insights al recurso de Azure desde el que se envía la telemetría.

    Nota

    Aunque el rol Supervisión del publicador de métricas indica métricas, publicará toda la telemetría en el recurso de Application Insights.

  3. Siga las instrucciones de configuración de acuerdo con el lenguaje de programación siguiente.

Nota:

La compatibilidad con Microsoft Entra ID en el SDK de .NET de Application Insights se incluye a partir de la versión 2.18-Beta3.

El SDK de .NET de Application Insights admite las clases de credenciales proporcionadas por Azure Identity.

  • Se recomienda DefaultAzureCredential para el desarrollo local.
  • Se recomienda ManagedIdentityCredential para identidades administradas asignadas por el sistema y asignadas por el usuario.
    • En el caso de las asignadas por el sistema, use el constructor predeterminado sin parámetros.
    • En el caso de los asignados por el usuario, proporcione el valor del Id. de cliente al constructor.

En el ejemplo siguiente se muestra cómo crear y configurar TelemetryConfiguration manualmente mediante .NET:

TelemetryConfiguration.Active.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/";
var credential = new DefaultAzureCredential();
TelemetryConfiguration.Active.SetAzureTokenCredential(credential);

En el ejemplo siguiente se muestra cómo configurar TelemetryConfiguration mediante .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/"
});

Deshabilitación de la autenticación local

Después de habilitar la autenticación de Microsoft Entra, puede optar por deshabilitar la autenticación local. Esta configuración le permite ingerir telemetría autenticada exclusivamente mediante Microsoft Entra ID y afectará al acceso a los datos (por ejemplo, a través de claves de API).

Puede deshabilitar la autenticación local mediante el Azure Portal, Azure Policy o mediante programación.

Azure portal

  1. En el recurso de Application Insights, seleccione Propiedades en el título Configurar del menú de la izquierda. Seleccione Habilitado (haga clic para cambiar) si la autenticación local está habilitada.

    Captura de pantalla que muestra las Propiedades en la sección Configurar y el botón de autenticación local Habilitado (seleccionar para cambiar).

  2. Seleccione Deshabilitado y aplique los cambios.

    Captura de pantalla de la autenticación local con el botón habilitado o deshabilitado.

  3. Una vez que haya deshabilitado la autenticación local en el recurso, verá la información correspondiente en el panel Información general.

    Captura de pantalla que muestra la pestaña Información general con el botón de autenticación local Deshabilitado (seleccionar para cambiar).

Azure Policy

Azure Policy para DisableLocalAuth deniega a los usuarios la creación de un recurso de Application Insights si esta propiedad no está configurada en true. El nombre de la directiva es Application Insights components should block non-AAD auth ingestion.

Para aplicar esta definición de directiva a la suscripción, cree una nueva asignación de directiva y asigne la directiva.

En el ejemplo siguiente se muestra la definición de la plantilla de directiva:

{
    "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')]"
            }
        }
    }
}

Habilitación mediante programación

La propiedad DisableLocalAuth se usa para deshabilitar cualquier autenticación local en el recurso de Application Insights. Cuando esta propiedad se establece en true, exige que la autenticación de Microsoft Entra se use para todos los accesos.

El siguiente ejemplo muestra una plantilla de Azure Resource Manager que puede usar para crear un recurso de Application Insights basado en área de trabajo con LocalAuth deshabilitada.

{
    "$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')]"
            }
    }
 ]
}

Público del token

Al desarrollar un cliente personalizado para que obtenga un token de acceso de Microsoft Entra ID con el fin de enviar telemetría a Application Insights, consulte la tabla siguiente para determinar la cadena de audiencia adecuada para su entorno host concreto.

Versión de la nube de Azure Valor de audiencia del token
Nube pública de Azure https://monitor.azure.com
Microsoft Azure operado por la nube 21Vianet https://monitor.azure.cn
Nube de Azure US Government https://monitor.azure.us

Si usa nubes soberanas, también puede encontrar la información de audiencia en la cadena de conexión. La cadena de conexión sigue esta estructura:

InstrumentationKey={profile.InstrumentationKey};IngestionEndpoint={ingestionEndpoint};LiveEndpoint={liveDiagnosticsEndpoint};AADAudience={aadAudience}

El parámetro de audiencia, AADAudience, puede variar en función de su entorno específico.

Solución de problemas

En esta sección se proporcionan distintos escenarios de solución de problemas y pasos que puede seguir para resolver cualquier problema antes de generar una incidencia de soporte técnico.

Errores HTTP de ingesta

El servicio de ingesta devolverá errores específicos, independientemente del lenguaje del SDK. El tráfico de red se puede recopilar mediante una herramienta como Fiddler. Debe filtrar el tráfico al punto de conexión de ingesta establecido en la cadena de conexión.

No se admite la autenticación HTTP/1.1 400

Este error muestra que el recurso está establecido solo para Microsoft Entra. Debe configurar correctamente el SDK porque se está enviando a la API incorrecta.

Nota:

"v2/track" no admite la autenticación de Microsoft Entra ID. Cuando el SDK esté configurado correctamente, la telemetría se enviará a "v2.1/track".

Después, revise la configuración del SDK.

Se requiere autorización de HTTP/1.1 401

Este error indica que el SDK se configuró correctamente, pero no pudo adquirir un token válido. Este error podría indicar un problema con Microsoft Entra ID.

Seguidamente, debe identificar las excepciones en los registros del SDK o los errores de red de la identidad de Azure.

HTTP/1.1 403 no autorizado

Este error significa que el SDK usa credenciales sin permiso para el recurso o la suscripción de Application Insights.

Primero, revise el control de acceso del recurso de Application Insights. Debe configurar el SDK con credenciales que tengan el rol Publicador de métricas de supervisión.

Solución de problemas específicos del lenguaje

Origen del evento

El SDK de .NET de Application Insights emite registros de errores mediante el origen del evento. Para obtener más información sobre la recopilación de registros de origen del evento, visite Solución de problemas cuando no hay datos: recopilación de registros con PerfView.

Si el SDK no puede obtener un token, el mensaje de excepción se registra como Failed to get AAD Token. Error message:.

Pasos siguientes