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_StateOrProvinceoch 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:

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.

  1. Gå till application insights-resursen och välj sedanMall för automationsexport>.

  2. Välj Distribuera.

    Skärmbild som visar knappen Distribuera.

  3. Välj Redigera mall.

    Skärmbild som visar knappen Redigera tillsammans med en varning om resursgruppen.

    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.

  4. Leta upp properties inuti resourcesi 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.

    Skärmbild som visar tillägget av ett kommatecken och en ny rad efter egenskapen för begärandekällan.

  5. 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 gjorts DisableIpMasking .

  6. 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 DisableIpMaskingkan 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 ISupportPropertieskontrollerar 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.