Autenticação do Microsoft Entra para o Application Insights

O Application Insights agora oferece suporte à autenticação Microsoft Entra. Usando o Microsoft Entra ID, você pode garantir que apenas a telemetria autenticada seja ingerida em seus recursos do Application Insights.

Usar vários sistemas de autenticação pode ser complicado e arriscado porque é difícil gerenciar credenciais em escala. Agora você pode optar por desativar a autenticação local para garantir que apenas a telemetria exclusivamente autenticada usando identidades gerenciadas e o Microsoft Entra ID seja ingerido em seu recurso. Esse recurso é uma etapa para aumentar 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.

Nota

Este documento aborda a ingestão de dados no Application Insights usando a autenticação baseada em ID do Microsoft Entra. Para obter informações sobre como consultar dados no Application Insights, consulte Consultar o Application Insights usando a autenticação do Microsoft Entra.

Pré-requisitos

As etapas preliminares a seguir são necessárias para habilitar a ingestão autenticada do Microsoft Entra. Precisa de:

Cenários não suportados

Os seguintes SDKs (Software Development Kits) e recursos não são suportados para uso com a ingestão autenticada do Microsoft Entra:

  • SDK Java 2.x do Application Insights.
    A autenticação do Microsoft Entra só está disponível para o Application Insights Java Agent maior ou igual a 3.2.0.
  • SDK da Web JavaScript do ApplicationInsights.
  • Application Insights OpenCensus Python SDK com Python versão 3.4 e 3.5.
  • Autoinstrumentação por padrão /monitoramento sem código (para idiomas) para o Serviço de Aplicativo do Azure, Máquinas Virtuais do Azure/Conjuntos de Dimensionamento de Máquina Virtual do Azure e Azure Functions.
  • Criador de perfil.

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.

    • Recomendamos o uso de uma identidade gerenciada:

      Configure uma identidade gerenciada para seu serviço do Azure (Máquinas Virtuais ou Serviço de Aplicativo).

    • Não recomendamos o uso de uma entidade de serviço:

      Para obter mais informações sobre como criar um aplicativo Microsoft Entra e uma entidade de serviço que possa acessar recursos, consulte Criar uma entidade de serviço.

  2. Atribua uma função ao serviço do Azure.

    Siga as etapas em Atribuir funções do Azure para adicionar a função Monitoring Metrics Publisher do recurso de destino do Application Insights ao recurso do Azure do qual a telemetria é enviada.

    Nota

    Embora a função Monitoring Metrics Publisher diga "métricas", ela publicará toda a telemetria no recurso do Application Insights.

  3. Siga as orientações de configuração de acordo com o idioma a seguir.

Nota

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

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

  • Recomendamos para o DefaultAzureCredential desenvolvimento local.
  • Recomendamos ManagedIdentityCredential para identidades gerenciadas atribuídas pelo sistema e pelo usuário.
    • Para system-assigned, use o construtor padrão sem parâmetros.
    • Para o usuário atribuído, 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/"
});

Desativar 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 que você ingira telemetria autenticada exclusivamente pelo ID do Microsoft Entra e afeta o acesso aos dados (por exemplo, por meio de chaves de API).

Você pode desabilitar a autenticação local usando o portal do Azure ou a Política do Azure ou programaticamente.

Portal do Azure

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

    Captura de ecrã que mostra Propriedades na secção Configurar e no botão de autenticação local Ativado (selecione para alterar).

  2. Selecione Desativado e aplique alterações.

    Captura de ecrã que mostra a autenticação local com o botão Ativado/Desativado.

  3. Depois de desativar 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 de autenticação local Desabilitado (selecione para alterar).

Azure Policy

A Política do Azure para DisableLocalAuth nega aos usuários a capacidade de criar um novo recurso do Application Insights sem essa propriedade definida como true. O nome da política é Application Insights components should block non-AAD auth ingestion.

Para aplicar esta definição de política à sua subscrição, crie uma nova atribuição de política e atribua a política.

O exemplo a seguir mostra a definição do 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')]"
            }
        }
    }
}

Capacitação programática

A propriedade DisableLocalAuth é usada para desabilitar qualquer autenticação local em seu recurso do Application Insights. Quando essa propriedade é definida como true, ela impõe que a autenticação do Microsoft Entra deve 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 espaço de trabalho com LocalAuth desabilitado.

{
    "$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 para enviar telemetria ao Application Insights, consulte a tabela a seguir para determinar a cadeia de caracteres de audiência apropriada para seu ambiente de host específico.

Versão na nuvem do Azure Valor do público do token
Nuvem pública do Azure https://monitor.azure.com
Microsoft Azure operado pela nuvem 21Vianet https://monitor.azure.cn
Azure US Government nuvem https://monitor.azure.us

Se você estiver usando nuvens soberanas, também poderá encontrar as informações do público 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 audiência, AADAudience, pode variar dependendo do seu ambiente específico.

Resolução de Problemas

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

Erros HTTP de ingestão

O serviço de ingestão retorna erros específicos, independentemente do idioma 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.

Autenticação HTTP/1.1 400 não suportada

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

Nota

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

Em seguida, você deve revisar a configuração do SDK.

HTTP/1.1 401 Autorização necessária

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

Em seguida, 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 usa credenciais sem permissão para o recurso ou assinatura do Application Insights.

Primeiro, verifique o controle de acesso do recurso do Application Insights. Você deve configurar o SDK com credenciais que tenham a função Monitoring Metrics Publisher.

Solução de problemas específica do idioma

Origem do evento

O SDK do .NET do Application Insights emite logs de erro usando a fonte de eventos. Para saber mais sobre como coletar logs de origem de eventos, consulte Solução de problemas sem 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óximos passos