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:
- Estar na nuvem pública.
- Que será necessário conhecer:
- Ter uma função de "Proprietário" para o grupo de recursos para conceder acesso usando asfunções internas do Azure.
- Entenda os cenários sem suporte.
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:
- Application Insights Java 2.x SDK.
A autenticação do Microsoft Entra está disponível apenas para Application Insights Java Agent maiores ou iguais a 3.2.0. - SDK da Web JavaScript do ApplicationInsights.
- Application Insights OpenCensus Python SDK com Python versão 3.4 e 3.5.
- Ativação por padrão da autoinstrumentação/monitoramento sem0 código (para linguagens) para Serviço de Aplicativo do Azure, Máquinas Virtuais do Microsoft Azure/Conjuntos de Dimensionamento de Máquinas Virtuais do Microsoft Azure e Azure Functions.
- Profiler.
Configurar e habilitar a autenticação baseada em ID do Microsoft Entra
Se você ainda não tiver uma identidade, crie uma usando uma identidade gerenciada ou uma entidade de serviço.
É recomendável usar uma identidade gerenciada:
Configure uma identidade gerenciada para seu serviço do Azure (Máquinas Virtuais ou Serviço de Aplicativo).
Não recomendamos usar uma entidade de serviço:
Para obter mais informações sobre como criar uma entidade de serviço e aplicativo do Microsoft Entra que possa acessar recursos, confira Criar uma entidade de serviço.
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.
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
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.
Selecione Desabilitado e aplique as alterações.
Depois de desabilitar a autenticação local no seu recurso, você verá as informações correspondentes no painel Visão Geral.
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:
.