Autenticação do Microsoft Entra para Application Insights

O Application Insights agora dá suporte à autenticação do Microsoft Entra. Ao usar o Microsoft Entra ID, você pode garantir que somente a telemetria autenticada seja ingerida em seus recursos do Application Insights.

O uso de muitos sistemas de autenticação pode ser trabalhoso e arriscado, pois é difícil gerenciar credenciais em escala. Agora você pode optar por recusar a autenticação local e garantir que apenas a telemetria seja autenticada exclusivamente usando identidades gerenciadas e que o Microsoft Entra ID seja ingerido no seu recurso. Esse recurso é uma etapa para proteger a segurança e a confiabilidade da telemetria usada para tomar decisões operacionais críticas (alertas e dimensionamento automático) e de negócios.

Observação

Este documento aborda a ingestão de dados no Application Insights usando a autenticação baseada no Microsoft Entra ID. Se você estiver procurando informações sobre como consultar dados no Application Insights, confira Consultar o Application Insights por meio da autenticação do Microsoft Entra.

Pré-requisitos

As etapas preliminares a seguir são requeridas para habilitar a ingestão autenticada do Microsoft Entra. Você precisa:

Cenários sem suporte

Os seguintes kits de desenvolvimento de software (SDKs) e recursos não têm suporte para uso com a ingestão autenticada do Microsoft Entra:

Configurar e habilitar a autenticação baseada em ID do Microsoft Entra

  1. Se você ainda não tiver uma identidade, crie uma usando uma identidade gerenciada ou uma entidade de serviço.

  2. Atribuir uma função à entidade de serviço do Azure.

    Siga as etapas em Atribuir funções do Azure para adicionar a função Publicador de Métricas de Monitoramento do recurso de Application Insights de destino ao recurso do Azure do qual a telemetria é enviada.

    Observação

    Embora a função Publicador de Métricas de Monitoramento cite “métricas”, ela publicará toda a telemetria para o recurso de Insights de aplicativo.

  3. Siga as diretrizes de configuração de acordo com o idioma a seguir.

Observação

O suporte para o Microsoft Entra ID no SDK do .NET do Application Insights está incluído da versão 2.18-Beta3 em diante.

O SDK do .NET do Application Insights dá suporte às classes de credenciais fornecidas pela Identidade do Azure.

  • Recomendamos DefaultAzureCredential para o desenvolvimento local.
  • ManagedIdentityCredential é recomendado para identidades gerenciadas atribuídas pelo usuário e atribuídas pelo sistema.
    • Para atribuído pelo sistema, use o construtor padrão sem parâmetros.
    • Para atribuído pelo usuário, forneça o ID do cliente para o construtor.

O exemplo a seguir mostra como criar e configurar TelemetryConfiguration manualmente usando o .NET:

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

O exemplo a seguir mostra como configurar TelemetryConfiguration usando o .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/"
});

Desabilitar autenticação local

Depois que a autenticação do Microsoft Entra estiver habilitada, você poderá optar por desabilitar a autenticação local. Essa configuração permite a ingestão der telemetria autenticada exclusivamente pelo Microsoft Entra ID e afetará o acesso a dados (por exemplo, por meio de chaves de API).

Você pode desabilitar a autenticação local usando o portal do Azure, o Azure Policy ou programaticamente.

Portal do Azure

  1. No recurso do Application Insights, selecione Propriedades no título Configurar no menu à esquerda. Selecione Habilitado (clique para alterar) se a autenticação local estiver habilitada.

    Captura de tela que mostra Propriedades na seção Configurar e o botão Habilitado (selecione para alterar) autenticação local.

  2. Selecione Desabilitado e aplique as alterações.

    Captura de tela que mostra a autenticação local com o botão habilitado/desabilitado.

  3. Depois de desabilitar a autenticação local no seu recurso, você verá as informações correspondentes no painel Visão Geral.

    Captura de tela que mostra a guia Visão geral com o botão Autenticação local desativada (selecione para alterar).

Azure Policy

O Azure Policy para DisableLocalAuth impede que um recurso do Application Insights seja criado se essa propriedade não está definida como true. O nome da política é Application Insights components should block non-AAD auth ingestion.

Para aplicar essa política à sua assinatura, crie uma atribuição de política e atribua a política.

O exemplo a seguir mostra a definição de modelo de política:

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

Habilitação programática

A propriedade DisableLocalAuth é usada para desabilitar qualquer autenticação local em seu recurso do Application Insights. Quando definida como true, essa propriedade impõe que a autenticação do Microsoft Entra precisa ser usada para todo o acesso.

O exemplo a seguir mostra o modelo do Azure Resource Manager que você pode usar para criar um recurso do Application Insights baseado em workspace Insights com LocalAuth desabilitada.

{
    "$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 do token

Ao desenvolver um cliente personalizado para obter um token de acesso do Microsoft Entra ID com a finalidade de enviar telemetria ao Application Insights, consulte a tabela a seguir para determinar a cadeia de caracteres da audiência apropriada para seu ambiente de host específico.

Versão de nuvem do Azure Valor da audiência do token
Nuvem pública do Azure https://monitor.azure.com
Microsoft Azure operado pela nuvem da 21Vianet https://monitor.azure.cn
Nuvem do governo dos EUA do Azure https://monitor.azure.us

Se você estiver usando nuvens soberanas, também poderá encontrar as informações da audiência na cadeia de conexão. A cadeia de conexão segue esta estrutura:

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

O parâmetro de público, AADAudience, pode variar dependendo do seu ambiente específico.

Solução de problemas

Esta seção fornece diferentes cenários de solução de problemas e etapas que você pode seguir para resolver qualquer problema antes de adicionar um tíquete de suporte.

Erros HTTP de ingestão

O serviço de ingestão retorna erros específicos (erros HTTP de ingestão), independentemente da linguagem do SDK. O tráfego de rede pode ser coletado usando uma ferramenta como o Fiddler. Você deve filtrar o tráfego para o ponto de extremidade de ingestão definido na Cadeia de conexão.

Não há suporte para a Autenticação HTTP/1.1 400

Esse erro mostra que o recurso está definido apenas para Microsoft Entra. Você precisa configurar corretamente o SDK porque ele está enviando para a API errada.

Observação

"v2/track" não dá suporte ao Microsoft Entra ID. Quando o SDK estiver configurado corretamente, a telemetria será enviada para "v2.1/track".

A seguir, você deve examinar a configuração do SDK.

Autorização HTTP/1.1 401 necessária

Esse erro indica que o SDK está configurado corretamente, mas não consegue adquirir um token válido. Esse erro pode indicar um problema com o Microsoft Entra ID.

A seguir, você deve identificar exceções nos logs do SDK ou erros de rede da Identidade do Azure.

HTTP/1.1 403 Não autorizado

Esse erro significa que o SDK utiliza credenciais sem permissão para o recurso ou subscrição do Application Insights.

Primeiro, verifique o controlo de acesso do recurso Application Insights. Você deve configurar o SDK com credenciais que tenham a função de Publicador de Métricas de Monitoramento.

Solução de problemas específica do idioma

Origem do Evento

O SDK do .NET do Application Insights emite logs de erro usando a origem do evento. Para saber mais sobre como coletar logs de origem do evento, confira Solução de problemas de ausência de dados – coletar logs com o PerfView.

Se o SDK não conseguir obter um token, a mensagem de exceção será registrada como: Failed to get AAD Token. Error message:.

Próximas etapas