Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 pode optar por não utilizar a autenticação local para garantir que apenas a telemetria exclusivamente autenticada usando Identidades Geridas e o Microsoft Entra ID seja incorporada no 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.
Pré-requisitos
As etapas preliminares a seguir são necessárias para habilitar a ingestão autenticada do Microsoft Entra. Precisa de:
- Esteja na nuvem pública.
- Esteja familiarizado com:
- Conceder acesso usando funções internas do Azure requer ter uma função de Proprietário para o grupo de recursos.
- Entenda os cenários sem suporte.
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. - Web SDK do ApplicationInsights em JavaScript.
- Application Insights OpenCensus Python SDK com Python versão 3.4 e 3.5.
- Instrumentação automática para Python no Serviço de Aplicativo do Azure
- Application Insights Profiler para .NET.
Configurar e habilitar a autenticação baseada em ID do Microsoft Entra
Crie uma identidade utilizando uma identidade gerida ou um principal de serviço, caso ainda não tenha um.
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 um principal de serviço:
Para obter mais informações sobre como criar uma aplicação Microsoft Entra e um principal de serviço que possa acessar recursos, consulte Criar um principal de serviço.
Atribua a função RBAC (controlo de acesso baseado em funções) necessária à identidade de Azure, ao principal de serviço ou à conta de utilizador do Azure.
Siga as etapas em Atribuir funções do Azure para adicionar a função Monitoring Metrics Publisher à identidade esperada, entidade de serviço ou conta de usuário do Azure definindo o recurso Application Insights de destino como o escopo da função.
Nota
Embora a função Monitoring Metrics Publisher diga "métricas", ela publica toda a telemetria no recurso do Application Insights.
Siga as orientações de configuração de acordo com o idioma a seguir.
Nota
- O suporte para o Microsoft Entra ID no SDK .NET do Application Insights está incluído desde a versão 2.18-Beta3.
- Damos suporte às classes de credenciais fornecidas pela Identidade do Azure.
- Recomendamos
DefaultAzureCredential
para o desenvolvimento local. - Autentique-se no Visual Studio com a conta de usuário esperada do Azure. Para obter mais informações, consulte Autenticar via Visual Studio.
- Recomendamos
ManagedIdentityCredential
para identidades gerenciadas atribuídas pelo sistema e pelo usuário.- Para valores atribuídos pelo sistema, utilize o construtor padrão sem parâmetros.
- Para o usuário atribuído, forneça o ID do cliente para o construtor.
Instale o pacote Azure.Identity mais recente:
dotnet add package Azure.Identity
Forneça a classe de credencial desejada:
// Create a new ASP.NET Core web application builder. var builder = WebApplication.CreateBuilder(args); // Add the OpenTelemetry telemetry service to the application. // This service will collect and send telemetry data to Azure Monitor. builder.Services.AddOpenTelemetry().UseAzureMonitor(options => { // Set the Azure Monitor credential to the DefaultAzureCredential. // This credential will use the Azure identity of the current user or // the service principal that the application is running as to authenticate // to Azure Monitor. options.Credential = new DefaultAzureCredential(); }); // Build the ASP.NET Core web application. var app = builder.Build(); // Start the ASP.NET Core web application. app.Run();
Configuração da variável de ambiente
Use a variável de ambiente APPLICATIONINSIGHTS_AUTHENTICATION_STRING
para que o Application Insights possa autenticar-se com o Microsoft Entra ID e enviar telemetria ao usar a autoinstrumentação dos Serviços de Aplicativo do Azure.
- Para a identidade atribuída ao sistema:
Definição da aplicação | Valor |
---|---|
STRING_AUTENTICAÇÃO_APPLICATIONINSIGHTS | Authorization=AAD |
- Para identidade atribuída pelo usuário:
Definição da aplicação | Valor |
---|---|
If needed, possible translations could maintain the technical meaning while offering a pt-PT version, such as "CADEIA_DE_AUTENTICAÇÃO_DA_APPLICATIONINSIGHTS". However, it depends on the technical context's requirements for translation or not. In this particular case, due to lack of additional context, the string remains untranslated. | Authorization=AAD;ClientId={Client id of the User-Assigned Identity} |
API clássica
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/"
});
Consultar o Application Insights usando a autenticação do Microsoft Entra
Você pode enviar um pedido de consulta através do endpoint do Azure Monitor Application Insights https://api.applicationinsights.io
. Para aceder ao ponto de extremidade, é necessário autenticar-se através do Microsoft Entra ID.
Configurar a autenticação
Para acessar a API, registre um aplicativo cliente com o Microsoft Entra ID e solicite um token.
Na página de visão geral do aplicativo, selecione Permissões de API.
Selecione Adicionar uma permissão.
Na guia APIs que minha organização usa, procure Application Insights e selecione Application Insights API na lista.
Selecione Permissões delegadas.
Marque a caixa de seleção Data.Read.
Selecione Adicionar permissões.
Agora que seu aplicativo está registrado e tem permissões para usar a API, conceda ao aplicativo acesso ao recurso do Application Insights.
Na página de visão geral dos recursos do Application Insights, selecione Controle de acesso (IAM).
Selecione Adicionar atribuição de função.
Selecione a função Leitor e, em seguida, selecione Membros.
Na guia Membros, escolha Selecionar membros.
Digite o nome do seu aplicativo na caixa Selecionar .
Selecione seu aplicativo e escolha Selecionar.
Selecione Rever + atribuir.
Depois de concluir a configuração e as permissões do Ative Directory, solicite um token de autorização.
Nota
Para este exemplo, aplicamos a função Leitor. Essa função é uma das muitas funções internas e pode incluir mais permissões do que você precisa. Funções e permissões mais granulares podem ser criadas.
Solicitar um token de autorização
Antes de começar, certifique-se de que tem todos os valores necessários para fazer o pedido com sucesso. Todos os pedidos requerem:
- A ID de tenant do Microsoft Entra.
- ID do aplicativo do App Insights - Se você estiver usando chaves de API no momento, é o mesmo ID do aplicativo.
- Sua ID de cliente do Microsoft Entra para o aplicativo.
- Um segredo de cliente Microsoft Entra para a aplicação.
A API do Application Insights oferece suporte à autenticação do Microsoft Entra com três fluxos diferentes do Microsoft Entra ID OAuth2 :
- Credenciais de cliente
- Código de autorização
- Implícito
Fluxo de credenciais do cliente
No fluxo de credenciais do cliente, o token é usado com o ponto de extremidade do Application Insights. Uma única solicitação é feita para receber um token usando as credenciais fornecidas para seu aplicativo na etapa anterior quando você registra um aplicativo no Microsoft Entra ID.
Use o ponto de https://api.applicationinsights.io
extremidade.
URL do token de credenciais do cliente (solicitação POST)
POST /<your-tenant-id>/oauth2/token
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=<app-client-id>
&resource=https://api.applicationinsights.io
&client_secret=<app-client-secret>
Uma solicitação bem-sucedida recebe um token de acesso na resposta:
{
token_type": "Bearer",
"expires_in": "86399",
"ext_expires_in": "86399",
"access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax"
}
Use o token em solicitações para o ponto de extremidade do Application Insights:
POST /v1/apps/yous_app_id/query?timespan=P1D
Host: https://api.applicationinsights.io
Content-Type: application/json
Authorization: Bearer <your access token>
Body:
{
"query": "requests | take 10"
}
Resposta de exemplo:
"tables": [
{
"name": "PrimaryResult",
"columns": [
{
"name": "timestamp",
"type": "datetime"
},
{
"name": "id",
"type": "string"
},
{
"name": "source",
"type": "string"
},
{
"name": "name",
"type": "string"
},
{
"name": "url",
"type": "string"
},
{
"name": "success",
"type": "string"
},
{
"name": "resultCode",
"type": "string"
},
{
"name": "duration",
"type": "real"
},
{
"name": "performanceBucket",
"type": "string"
},
{
"name": "customDimensions",
"type": "dynamic"
},
{
"name": "customMeasurements",
"type": "dynamic"
},
{
"name": "operation_Name",
"type": "string"
},
{
"name": "operation_Id",
"type": "string"
},
{
"name": "operation_ParentId",
"type": "string"
},
{
"name": "operation_SyntheticSource",
"type": "string"
},
{
"name": "session_Id",
"type": "string"
},
{
"name": "user_Id",
"type": "string"
},
{
"name": "user_AuthenticatedId",
"type": "string"
},
{
"name": "user_AccountId",
"type": "string"
},
{
"name": "application_Version",
"type": "string"
},
{
"name": "client_Type",
"type": "string"
},
{
"name": "client_Model",
"type": "string"
},
{
"name": "client_OS",
"type": "string"
},
{
"name": "client_IP",
"type": "string"
},
{
"name": "client_City",
"type": "string"
},
{
"name": "client_StateOrProvince",
"type": "string"
},
{
"name": "client_CountryOrRegion",
"type": "string"
},
{
"name": "client_Browser",
"type": "string"
},
{
"name": "cloud_RoleName",
"type": "string"
},
{
"name": "cloud_RoleInstance",
"type": "string"
},
{
"name": "appId",
"type": "string"
},
{
"name": "appName",
"type": "string"
},
{
"name": "iKey",
"type": "string"
},
{
"name": "sdkVersion",
"type": "string"
},
{
"name": "itemId",
"type": "string"
},
{
"name": "itemType",
"type": "string"
},
{
"name": "itemCount",
"type": "int"
}
],
"rows": [
[
"2018-02-01T17:33:09.788Z",
"|0qRud6jz3k0=.c32c2659_",
null,
"GET Reports/Index",
"http://fabrikamfiberapp.azurewebsites.net/Reports",
"True",
"200",
"3.3833",
"<250ms",
"{\"_MS.ProcessedByMetricExtractors\":\"(Name:'Requests', Ver:'1.0')\"}",
null,
"GET Reports/Index",
"0qRud6jz3k0=",
"0qRud6jz3k0=",
"Application Insights Availability Monitoring",
"9fc6738d-7e26-44f0-b88e-6fae8ccb6b26",
"us-va-ash-azr_9fc6738d-7e26-44f0-b88e-6fae8ccb6b26",
null,
null,
"AutoGen_49c3aea0-4641-4675-93b5-55f7a62d22d3",
"PC",
null,
null,
"52.168.8.0",
"Boydton",
"Virginia",
"United States",
null,
"fabrikamfiberapp",
"RD00155D5053D1",
"cf58dcfd-0683-487c-bc84-048789bca8e5",
"fabrikamprod",
"5a2e4e0c-e136-4a15-9824-90ba859b0a89",
"web:2.5.0-33031",
"051ad4ef-0776-11e8-ac6e-e30599af6943",
"request",
"1"
],
[
"2018-02-01T17:33:15.786Z",
"|x/Ysh+M1TfU=.c32c265a_",
null,
"GET Home/Index",
"http://fabrikamfiberapp.azurewebsites.net/",
"True",
"200",
"716.2912",
"500ms-1sec",
"{\"_MS.ProcessedByMetricExtractors\":\"(Name:'Requests', Ver:'1.0')\"}",
null,
"GET Home/Index",
"x/Ysh+M1TfU=",
"x/Ysh+M1TfU=",
"Application Insights Availability Monitoring",
"58b15be6-d1e6-4d89-9919-52f63b840913",
"emea-se-sto-edge_58b15be6-d1e6-4d89-9919-52f63b840913",
null,
null,
"AutoGen_49c3aea0-4641-4675-93b5-55f7a62d22d3",
"PC",
null,
null,
"51.141.32.0",
"Cardiff",
"Cardiff",
"United Kingdom",
null,
"fabrikamfiberapp",
"RD00155D5053D1",
"cf58dcfd-0683-487c-bc84-048789bca8e5",
"fabrikamprod",
"5a2e4e0c-e136-4a15-9824-90ba859b0a89",
"web:2.5.0-33031",
"051ad4f0-0776-11e8-ac6e-e30599af6943",
"request",
"1"
]
]
}
]
}
Fluxo de código de autorização
O principal fluxo OAuth2 suportado é através de códigos de autorização. Esse método requer duas solicitações HTTP para adquirir um token com o qual chamar a API do Azure Monitor Application Insights. Há duas URLs, com um endpoint por solicitação. Os seus formatos são descritos nas secções seguintes.
URL do código de autorização (solicitação GET)
GET https://login.microsoftonline.com/YOUR_Azure AD_TENANT/oauth2/authorize?
client_id=<app-client-id>
&response_type=code
&redirect_uri=<app-redirect-uri>
&resource=https://api.applicationinsights.io
Quando uma solicitação é feita para a URL autorizada, o client\_id
é o ID da aplicação do seu aplicativo Microsoft Entra, copiado do menu de propriedades do aplicativo. O redirect\_uri
é o homepage/login
URL da mesma aplicação Microsoft Entra. Quando uma solicitação é bem-sucedida, este endpoint redireciona-o para a página de início de sessão fornecida no registo com o código de autorização anexado à URL. Veja o seguinte exemplo:
http://<app-client-id>/?code=AUTHORIZATION_CODE&session_state=STATE_GUID
Neste ponto, você obtém um código de autorização, que agora você usa para solicitar um token de acesso.
URL do token do código de autorização (solicitação POST)
POST /YOUR_Azure AD_TENANT/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&client_id=<app client id>
&code=<auth code fom GET request>
&redirect_uri=<app-client-id>
&resource=https://api.applicationinsights.io
&client_secret=<app-client-secret>
Todos os valores são os mesmos de antes, com algumas adições. O código de autorização é o mesmo código que você recebeu na solicitação anterior após um redirecionamento bem-sucedido. O código é combinado com a chave obtida do aplicativo Microsoft Entra. Se não guardou a chave, pode eliminá-la e criar uma nova a partir do separador teclas do menu da aplicação Microsoft Entra. A resposta é uma cadeia de caracteres JSON que contém o token com o esquema a seguir. Os tipos são indicados para os valores de token.
Exemplo de resposta:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
"expires_in": "3600",
"ext_expires_in": "1503641912",
"id_token": "not_needed_for_app_insights",
"not_before": "1503638012",
"refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az",
"resource": "https://api.applicationinsights.io",
"scope": "Data.Read",
"token_type": "bearer"
}
A parte do token de acesso dessa resposta é o que você apresenta à API do Application Insights no Authorization: Bearer
cabeçalho. Você também pode usar o token de atualização no futuro para adquirir um novo access_token e refresh_token quando o seu ficar obsoleto. Para esta solicitação, o formato e o endereço final são:
POST /YOUR_AAD_TENANT/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
client_id=<app-client-id>
&refresh_token=<refresh-token>
&grant_type=refresh_token
&resource=https://api.applicationinsights.io
&client_secret=<app-client-secret>
Exemplo de resposta:
{
"token_type": "Bearer",
"expires_in": "3600",
"expires_on": "1460404526",
"resource": "https://api.applicationinsights.io",
"access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
"refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az"
}
Fluxo de código implícito
A API do Application Insights suporta o fluxo implícito OAuth2. Para esse fluxo, apenas uma única solicitação é necessária, mas nenhum token de atualização pode ser adquirido.
URL de autorização de código implícito
GET https://login.microsoftonline.com/YOUR_AAD_TENANT/oauth2/authorize?
client_id=<app-client-id>
&response_type=token
&redirect_uri=<app-redirect-uri>
&resource=https://api.applicationinsights.io
Uma solicitação bem-sucedida produz um redirecionamento para seu URI de redirecionamento com o token na URL:
http://YOUR_REDIRECT_URI/#access_token=YOUR_ACCESS_TOKEN&token_type=Bearer&expires_in=3600&session_state=STATE_GUID
Este access_token serve como o valor do cabeçalho Authorization: Bearer
quando é passado para a API do Application Insights para autorizar pedidos.
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
No recurso do Application Insights, selecione Propriedades em Configurar no menu à esquerda. Selecione Ativado (clique para alterar) se a autenticação local estiver ativada.
Selecione Desativado e aplique alterações.
Depois de desativar a autenticação local no seu recurso, você verá as informações correspondentes no painel Visão geral .
Política do Azure
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-Azure Active Directory based 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-Azure Active Directory based 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 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 string de audiência apropriada para o seu ambiente de alojamento específico.
Versão na nuvem do Azure | Valor do público para o token |
---|---|
Nuvem pública do Azure | https://monitor.azure.com |
Microsoft Azure operado pela nuvem 21Vianet | https://monitor.azure.cn |
Nuvem da Azure para o governo dos EUA | 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 endereço de ingestão definido na string 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 está configurado corretamente, a telemetria é 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.
Resolução de problemas relacionada ao idioma
O SDK .NET do Application Insights emite logs de erro usando a origem 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:
.