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:
- Estar en la nube pública.
- Familiarícese con:
- Debe tener un rol de Propietario en el grupo de recursos si desea conceder acceso mediante roles integrados de Azure.
- Entienda los escenarios no admitidos.
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:
- SDK de Java 2.x para Application Insights.
La autenticación de Microsoft Entra solo está disponible para el agente de Java de Application Insights versión 3.2.0 o superior. - SDK web de JavaScript para Application Insights.
- SDK de Python de OpenCensus para Application Insights con Python versión 3.4 y 3.5.
- De forma predeterminada, la implementación automática o la supervisión sin código (para lenguajes) para Azure App Service, Azure Virtual Machines/Azure Virtual Machine Scale Sets y Azure Functions.
- Profiler.
Configuración y habilitación de la autenticación basada en Microsoft Entra ID
Si aún no tiene una identidad, cree una mediante una identidad administrada o una entidad de servicio.
Se recomienda usar una identidad administrada:
Configure una identidad administrada para el servicio de Azure (Virtual Machines o App Service).
No se recomienda usar una entidad de servicio:
Para más información sobre cómo crear una entidad de servicio y una aplicación de Microsoft Entra que puedan acceder a los recursos, consulte Creación de una entidad de servicio.
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.
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
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.
Seleccione Deshabilitado y aplique los cambios.
Una vez que haya deshabilitado la autenticación local en el recurso, verá la información correspondiente en el panel Información general.
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:
.