Geoplats- och IP-adresshantering
Den här artikeln beskriver hur uppslag och IP-adresshantering fungerar i Application Insights, samt hur du ändrar standardbeteendet.
Standardbeteende
Som standard samlas IP-adresser in tillfälligt, men de lagras inte i Application Insights. Den här processen följer några grundläggande steg.
När telemetri skickas till Azure använder Application Insights IP-adressen för att göra en geoplatssökning. Application Insights använder resultatet av den här sökningen för att fylla i fälten client_City
, client_StateOrProvince
och client_CountryOrRegion
. Adressen tas sedan bort och 0.0.0.0
skrivs till fältet client_IP
.
Information om hur du tar bort geoplatsdata finns i följande artiklar:
Telemetrityperna är:
- Webbläsartelemetri: Application Insights samlar in avsändarens IP-adress. Inmatningsslutpunkten beräknar IP-adressen.
- Servertelemetri: Application Insights-telemetrimodulen samlar tillfälligt in klientens IP-adress. IP-adressen samlas inte in lokalt när
X-Forwarded-For
rubriken anges. När listan över inkommande IP-adresser har fler än ett objekt används den sista IP-adressen för att fylla i geoplatsfält.
Det här beteendet är avsiktligt för att undvika onödig insamling av personuppgifter och ip-adressplatsinformation. När det är möjligt rekommenderar vi att du undviker insamling av personuppgifter.
Anteckning
Även om standardinställningen är att inte samla in IP-adresser, kan du åsidosätta det här beteendet. Vi rekommenderar att du kontrollerar att samlingen inte bryter mot några efterlevnadskrav eller lokala regler.
Mer information om hur du hanterar personuppgifter i Application Insights finns i Vägledning för personuppgifter.
När IP-adresser inte samlas in samlas inte heller ort och andra geoplatsattribut in som fylls i av vår pipeline med hjälp av IP-adressen. Du kan maskera IP-samlingen vid källan. Det finns två sätt att göra det på. Du kan:
- Ta bort klientens IP-initierare. Mer information finns i Konfiguration med Application Insights-konfiguration.
- Ange en egen anpassad initierare. Mer information finns i ett API-filtreringsexempel.
Lagring av IP-adressdata
Om du vill aktivera IP-insamling och lagring DisableIpMasking
måste egenskapen för Application Insights-komponenten anges till true
. Du kan ange den här egenskapen via Azure Resource Manager-mallar (ARM-mallar) eller genom att anropa REST-API:et.
ARM-mall
{
"id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/microsoft.insights/components/<resource-name>",
"name": "<resource-name>",
"type": "microsoft.insights/components",
"location": "westcentralus",
"tags": {
},
"kind": "web",
"properties": {
"Application_Type": "web",
"Flow_Type": "Redfield",
"Request_Source": "IbizaAIExtension",
// ...
"DisableIpMasking": true
}
}
Portal
Om du bara behöver ändra beteendet för en enda Application Insights-resurs använder du Azure Portal.
Gå till application insights-resursen och välj sedanMall för automationsexport>.
Välj Distribuera.
Välj Redigera mall.
Anteckning
Om du får felet som visas i föregående skärmbild kan du lösa det. Det står: "Resursgruppen finns på en plats som inte stöds av en eller flera resurser i mallen. Välj en annan resursgrupp." Välj tillfälligt en annan resursgrupp i listrutan och välj sedan den ursprungliga resursgruppen igen.
Leta upp
properties
inutiresources
i JSON-mallen. Lägg till ett kommatecken i det sista JSON-fältet och lägg sedan till följande nya rad:"DisableIpMasking": true
. Välj sedan Spara.Välj Granska + skapa>Skapa.
Anteckning
Om du ser "Distributionen misslyckades" tittar du igenom distributionsinformationen för den med typen
microsoft.insights/components
och kontrollerar statusen. Om den lyckas distribuerades ändringarna som gjortsDisableIpMasking
.När distributionen är klar registreras nya telemetridata.
Om du väljer och redigerar mallen igen ser du bara standardmallen utan den nyligen tillagda egenskapen. Om du inte ser IP-adressdata och vill bekräfta att har
"DisableIpMasking": true
angetts kör du följande PowerShell-kommandon:# Replace `Fabrikam-dev` with the appropriate resource and resource group name. # If you aren't using Azure Cloud Shell, you need to connect to your Azure account # Connect-AzAccount $AppInsights = Get-AzResource -Name 'Fabrikam-dev' -ResourceType 'microsoft.insights/components' -ResourceGroupName 'Fabrikam-dev' $AppInsights.Properties
Därför returneras en lista med egenskaper. En av egenskaperna ska läsa
DisableIpMasking: true
. Om du kör PowerShell-kommandona innan du distribuerar den nya egenskapen med Azure Resource Manager finns inte egenskapen.
REST-API
Följande REST API-nyttolast gör samma ändringar:
PATCH https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/microsoft.insights/components/<resource-name>?api-version=2018-05-01-preview HTTP/1.1
Host: management.azure.com
Authorization: AUTH_TOKEN
Content-Type: application/json
Content-Length: 54
{
"location": "<resource location>",
"kind": "web",
"properties": {
"Application_Type": "web",
"DisableIpMasking": true
}
}
PowerShell
PoweShell-cmdleten Update-AzApplicationInsights kan inaktivera IP-maskering med parametern DisableIPMasking
.
Update-AzApplicationInsights -Name "aiName" -ResourceGroupName "rgName" -DisableIPMasking:$true
Mer information om cmdleten "Update-AzApplicationInsights" finns i Update-AzApplicationInsights
Telemetriinitierare
Om du behöver ett mer flexibelt alternativ än DisableIpMasking
kan du använda en telemetriinitierare för att kopiera hela eller delar av IP-adressen till ett anpassat fält. Koden för den här klassen är densamma i .NET-versioner.
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
namespace MyWebApp
{
public class CloneIPAddress : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
ISupportProperties propTelemetry = telemetry as ISupportProperties;
if (propTelemetry !=null && !propTelemetry.Properties.ContainsKey("client-ip"))
{
string clientIPValue = telemetry.Context.Location.Ip;
propTelemetry.Properties.Add("client-ip", clientIPValue);
}
}
}
}
Anteckning
Om du inte kan komma åt ISupportProperties
kontrollerar du att du kör den senaste stabila versionen av Application Insights SDK. ISupportProperties
är avsett för värden med hög kardinalitet. GlobalProperties
är lämpligare för värden med låg kardinalitet som regionnamn och miljönamn.
using Microsoft.ApplicationInsights.Extensibility;
using CustomInitializer.Telemetry;
builder.services.AddSingleton<ITelemetryInitializer, CloneIPAddress>();
Node.js
appInsights.defaultClient.addTelemetryProcessor((envelope) => {
const baseData = envelope.data.baseData;
if (appInsights.Contracts.domainSupportsProperties(baseData)) {
const ipAddress = envelope.tags[appInsights.defaultClient.context.keys.locationIp];
if (ipAddress) {
baseData.properties["client-ip"] = ipAddress;
}
}
});
Visa resultatet av telemetriinitieraren
Om du skickar ny trafik till webbplatsen och väntar några minuter kan du köra en fråga för att bekräfta att samlingen fungerar:
requests
| where timestamp > ago(1h)
| project appName, operation_Name, url, resultCode, client_IP, customDimensions.["client-ip"]
Nyligen insamlade IP-adresser visas i customDimensions_client-ip
kolumnen. client-ip
Standardkolumnen har fortfarande alla fyra oktetterna nollade.
Om du testar från localhost och värdet för customDimensions_client-ip
är ::1
är det här värdet förväntat beteende. Värdet ::1
representerar loopback-adressen i IPv6. Det motsvarar 127.0.0.1
i IPv4.
Vanliga frågor och svar
Det här avsnittet innehåller svar på vanliga frågor.
Hur beräknas stad, land/region och andra geoplatsdata?
Vi letar upp IP-adressen (IPv4 eller IPv6) för webbklienten:
- Webbläsartelemetri: Vi samlar in avsändarens IP-adress.
- Servertelemetri: Application Insights-modulen samlar in klientens IP-adress. Den samlas inte in om
X-Forwarded-For
den har angetts. - Mer information om hur IP-adress- och geoplatsdata samlas in i Application Insights finns i Geoplats- och IP-adresshantering.
Du kan konfigurera ClientIpHeaderTelemetryInitializer
att ta IP-adressen från ett annat huvud. I vissa system flyttas den till exempel av en proxy, lastbalanserare eller CDN till X-Originating-IP
. Läs mer.
Du kan använda Power BI för att visa telemetrin för begäran på en karta om du har migrerat till en arbetsytebaserad resurs.
Nästa steg
- Läs mer om insamling av personliga data i Application Insights.
- Läs mer om hur IP-adressinsamling fungerar i Application Insights. Den här artikeln är ett äldre externt blogginlägg skrivet av en av våra tekniker. Den föregår det aktuella standardbeteendet där IP-adressen registreras som
0.0.0.0
. Artikeln går in närmare på den inbyggda telemetriinitierarens mekanik.