Microsoft Entra-autentisering för Application Insights.
Application Insights stöder nu Microsoft Entra-autentisering. Genom att använda Microsoft Entra-ID kan du se till att endast autentiserad telemetri matas in i dina Application Insights-resurser.
Att använda olika autentiseringssystem kan vara besvärligt och riskabelt eftersom det är svårt att hantera autentiseringsuppgifter i stor skala. Nu kan du välja att avregistrera dig från lokal autentisering för att säkerställa att endast telemetri uteslutande autentiseras med hjälp av hanterade identiteter och att Microsoft Entra-ID matas in i resursen. Den här funktionen är ett steg för att förbättra säkerheten och tillförlitligheten för den telemetri som används för att göra kritiska operativa (aviseringar och autoskalning) och affärsbeslut.
Kommentar
Det här dokumentet beskriver datainmatning i Application Insights med microsoft entra-ID-baserad autentisering. Information om hur du frågar efter data i Application Insights finns i Fråga Application Insights med Microsoft Entra-autentisering.
Förutsättningar
Följande preliminära steg krävs för att aktivera Microsoft Entra-autentiserad inmatning. Du måste:
- Var i det offentliga molnet.
- Bekanta dig med:
- Ha rollen Ägare till resursgruppen för att bevilja åtkomst med hjälp av inbyggda Azure-roller.
- Förstå scenarierna som inte stöds.
Scenarier som inte stöds
Följande SDK:er (Software Development Kit) och funktioner stöds inte för användning med Microsoft Entra-autentiserad inmatning:
- Application Insights Java 2.x SDK.
Microsoft Entra-autentisering är endast tillgängligt för Application Insights Java Agent som är större än eller lika med 3.2.0. - ApplicationInsights JavaScript-webb-SDK.
- Application Insights OpenCensus Python SDK med Python version 3.4 och 3.5.
- Automatisk instrumentering/kodlös övervakning (för språk) som standard för Azure App Service, Azure Virtual Machines/Azure Virtual Machine Scale Sets och Azure Functions.
- Profilerare.
Konfigurera och aktivera Microsoft Entra ID-baserad autentisering
Om du inte redan har en identitet skapar du en med hjälp av antingen en hanterad identitet eller ett huvudnamn för tjänsten.
Vi rekommenderar att du använder en hanterad identitet:
Konfigurera en hanterad identitet för din Azure-tjänst (virtuella datorer eller App Service).
Vi rekommenderar inte att du använder tjänstens huvudnamn:
Mer information om hur du skapar ett Microsoft Entra-program och tjänstens huvudnamn som kan komma åt resurser finns i Skapa ett huvudnamn för tjänsten.
Tilldela en roll till Azure-tjänsten.
Följ stegen i Tilldela Azure-roller för att lägga till rollen Monitoring Metrics Publisher från application insights-målresursen till den Azure-resurs som telemetrin skickas från.
Kommentar
Även om rollen Monitoring Metrics Publisher säger "mått" publiceras all telemetri till Application Insights-resursen.
Följ konfigurationsvägledningen i enlighet med det språk som följer.
Kommentar
Stöd för Microsoft Entra-ID i Application Insights .NET SDK ingår från och med version 2.18-Beta3.
Application Insights .NET SDK stöder de autentiseringsklasser som tillhandahålls av Azure Identity.
- Vi rekommenderar
DefaultAzureCredential
för lokal utveckling. - Vi rekommenderar
ManagedIdentityCredential
systemtilldelade och användartilldelade hanterade identiteter.- För systemtilldelade använder du standardkonstruktorn utan parametrar.
- För användartilldelad anger du klient-ID:t till konstruktorn.
I följande exempel visas hur du skapar och konfigurerar TelemetryConfiguration
manuellt med hjälp av .NET:
TelemetryConfiguration.Active.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/";
var credential = new DefaultAzureCredential();
TelemetryConfiguration.Active.SetAzureTokenCredential(credential);
I följande exempel visas hur du konfigurerar TelemetryConfiguration
med hjälp av .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/"
});
Inaktivera lokal autentisering
När Microsoft Entra-autentiseringen har aktiverats kan du välja att inaktivera lokal autentisering. Med den här konfigurationen kan du mata in telemetri som autentiseras exklusivt av Microsoft Entra-ID och påverkar dataåtkomst (till exempel via API-nycklar).
Du kan inaktivera lokal autentisering med hjälp av Azure-portalen eller Azure Policy eller programmatiskt.
Azure Portal
Från Application Insights-resursen väljer du Egenskaper under rubriken Konfigurera i menyn till vänster. Välj Aktiverad (klicka för att ändra) om den lokala autentiseringen är aktiverad.
Välj Inaktiverad och tillämpa ändringar.
När du har inaktiverat lokal autentisering på resursen visas motsvarande information i fönstret Översikt .
Azure Policy
Azure Policy för DisableLocalAuth
nekar användare möjligheten att skapa en ny Application Insights-resurs utan den här egenskapen inställd på true
. Principnamnet är Application Insights components should block non-AAD auth ingestion
.
Om du vill tillämpa den här principdefinitionen på din prenumeration skapar du en ny principtilldelning och tilldelar principen.
I följande exempel visas definitionen av principmallen:
{
"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')]"
}
}
}
}
Programmatisk aktivering
Egenskapen DisableLocalAuth
används för att inaktivera lokal autentisering på Application Insights-resursen. När den här egenskapen är inställd på true
framtvingar den att Microsoft Entra-autentisering måste användas för all åtkomst.
I följande exempel visas den Azure Resource Manager-mall som du kan använda för att skapa en arbetsytebaserad Application Insights-resurs med LocalAuth
inaktiverad.
{
"$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')]"
}
}
]
}
Token-målgrupp
När du utvecklar en anpassad klient för att hämta en åtkomsttoken från Microsoft Entra-ID för att skicka telemetri till Application Insights läser du följande tabell för att fastställa lämplig målgruppssträng för din specifika värdmiljö.
Azure-molnversion | Token-målgruppsvärde |
---|---|
Offentligt Azure-moln | https://monitor.azure.com |
Microsoft Azure drivs av 21Vianet-molnet | https://monitor.azure.cn |
Azure US Government-moln | https://monitor.azure.us |
Om du använder nationella moln kan du även hitta målgruppsinformationen i anslutningssträng. Anslutningssträng följer den här strukturen:
InstrumentationKey={profile. InstrumentationKey}; IngestionEndpoint={ingestionEndpoint}; LiveEndpoint={liveDiagnosticsEndpoint}; AADAudience={aadAudience}
Målgruppsparametern AADAudience kan variera beroende på din specifika miljö.
Felsökning
Det här avsnittet innehåller distinkta felsökningsscenarier och steg som du kan vidta för att lösa ett problem innan du skapar ett supportärende.
HTTP-fel för inmatning
Inmatningstjänsten returnerar specifika fel, oavsett SDK-språk. Nätverkstrafik kan samlas in med hjälp av ett verktyg som Fiddler. Du bör filtrera trafik till inmatningsslutpunkten som anges i anslutningssträng.
HTTP/1.1 400-autentisering stöds inte
Det här felet visar att resursen har angetts endast för Microsoft Entra. Du måste konfigurera SDK:n korrekt eftersom den skickar till fel API.
Kommentar
"v2/track" stöder inte Microsoft Entra-ID. När SDK:t är korrekt konfigurerat skickas telemetri till "v2.1/track".
Därefter bör du granska SDK-konfigurationen.
HTTP/1.1 401 Auktorisering krävs
Det här felet anger att SDK:t är korrekt konfigurerat men att det inte går att hämta en giltig token. Det här felet kan tyda på ett problem med Microsoft Entra-ID.
Därefter bör du identifiera undantag i SDK-loggarna eller nätverksfelen från Azure Identity.
HTTP/1.1 403 Obehörig
Det här felet innebär att SDK använder autentiseringsuppgifter utan behörighet för Application Insights-resursen eller prenumerationen.
Kontrollera först åtkomstkontrollen för Application Insights-resursen. Du måste konfigurera SDK med autentiseringsuppgifter som har rollen Monitoring Metrics Publisher.
Språkspecifik felsökning
Händelsekälla
Application Insights .NET SDK genererar felloggar med hjälp av händelsekällan. Mer information om hur du samlar in händelsekällans loggar finns i Felsöka inga data – samla in loggar med PerfView.
Om SDK:t inte hämtar en token loggas undantagsmeddelandet som Failed to get AAD Token. Error message:
.