Geografické umístění a zpracování IP adres

Tento článek vysvětluje, jak funguje vyhledávání geografické polohy a zpracování IP adres v Application Insights, a také to, jak upravit výchozí chování.

Výchozí chování

Ve výchozím nastavení se IP adresy dočasně shromažďují, ale neukládají se v Application Insights. Tento proces se řídí několika základními kroky.

Když se telemetrie odesílá do Azure, Application Insights použije IP adresu k vyhledání geografické polohy. Application Insights používá výsledky tohoto vyhledávání k naplnění polí client_City, client_StateOrProvincea client_CountryOrRegion. Adresa se pak zahodí a 0.0.0.0 zapíše se do client_IP pole.

Pokud chcete odebrat data o geografické poloze, přečtěte si následující články:

Typy telemetrie jsou:

  • Telemetrie prohlížeče: Application Insights shromažďuje IP adresu odesílatele. Koncový bod příjmu dat vypočítá IP adresu.
  • Telemetrie serveru: Modul telemetrie Application Insights dočasně shromažďuje IP adresu klienta. IP adresa se při nastavení hlavičky neshromažďuje X-Forwarded-For místně. Pokud seznam příchozích IP adres obsahuje více než jednu položku, použije se k naplnění polí geografické polohy poslední IP adresa.

Toto chování je záměrně, aby se zabránilo zbytečnému shromažďování osobních údajů a informací o poloze IP adresy. Kdykoli je to možné, doporučujeme se shromažďování osobních údajů vyhnout.

Poznámka

Ve výchozím nastavení se IP adresy neshromažďují, ale toto chování můžete přepsat. Doporučujeme ověřit, že kolekce neporušuje žádné požadavky na dodržování předpisů nebo místní předpisy.

Další informace o zpracování osobních údajů ve službě Application Insights najdete v pokynech k osobním údajům.

Pokud se IP adresy neshromažďují, neshromažďují se ani atributy města a další geografické polohy, které naplňuje náš kanál pomocí IP adresy. Shromažďování IP adres můžete maskovat ve zdroji. Existují dva způsoby, jak to udělat. Můžete:

Ukládání dat IP adres

Pokud chcete povolit shromažďování a úložiště IP adres, DisableIpMasking musí být vlastnost komponenty Application Insights nastavená na truehodnotu . Tuto vlastnost můžete nastavit prostřednictvím šablon Azure Resource Manager (šablon ARM) nebo voláním rozhraní REST API.

Šablona ARM

{
       "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
       }
}

Portál

Pokud potřebujete změnit chování jenom pro jeden prostředek Application Insights, použijte Azure Portal.

  1. Přejděte do prostředku Application Insights a pak vyberte Šablona exportu automatizace>.

  2. Vyberte Nasadit.

    Snímek obrazovky s tlačítkem Nasadit

  3. Vyberte Upravit šablonu.

    Snímek obrazovky s tlačítkem Upravit a upozorněním na skupinu prostředků

    Poznámka

    Pokud se zobrazí chyba zobrazená na předchozím snímku obrazovky, můžete ji vyřešit. Uvádí: "Skupina prostředků je v umístění, které není podporováno jedním nebo více prostředky v šabloně. Zvolte jinou skupinu prostředků. V rozevíracím seznamu dočasně vyberte jinou skupinu prostředků a pak znovu vyberte původní skupinu prostředků.

  4. V šabloně JSON vyhledejte properties v resourcessouboru . Do posledního pole JSON přidejte čárku a pak přidejte následující nový řádek: "DisableIpMasking": true. Pak vyberte Uložit.

    Snímek obrazovky znázorňující přidání čárky a nového řádku za vlastností pro zdroj žádosti

  5. Vyberte Zkontrolovat a vytvořit>Vytvořit.

    Poznámka

    Pokud se zobrazí "Vaše nasazení selhalo", projděte si podrobnosti o nasazení s typem microsoft.insights/components a zkontrolujte stav. Pokud se to podaří, byly změny provedené v DisableIpMasking nasazovány.

  6. Po dokončení nasazení se zaznamenají nová telemetrická data.

    Pokud šablonu znovu vyberete a upravíte, zobrazí se pouze výchozí šablona bez nově přidané vlastnosti. Pokud se nezobrazují data IP adres a chcete ověřit, že "DisableIpMasking": true je nastavená, spusťte následující příkazy PowerShellu:

    # 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
    

    Jako výsledek se vrátí seznam vlastností. Jedna z vlastností by měla mít hodnotu DisableIpMasking: true. Pokud před nasazením nové vlastnosti pomocí Azure Resource Manager spustíte příkazy PowerShellu, vlastnost nebude existovat.

REST API

Následující datová část rozhraní REST API provede stejné úpravy:

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

Rutina Update-AzApplicationInsights v PoweShellu může zakázat maskování IP adres pomocí parametru DisableIPMasking .

Update-AzApplicationInsights -Name "aiName" -ResourceGroupName "rgName" -DisableIPMasking:$true

Další informace o rutině Update-AzApplicationInsights najdete v tématu Update-AzApplicationInsights.

Inicializátor telemetrie

Pokud potřebujete flexibilnější alternativu než DisableIpMasking, můžete pomocí inicializátoru telemetrie zkopírovat celou IP adresu nebo její část do vlastního pole. Kód pro tuto třídu je stejný ve všech verzích .NET.

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);
            }
        }
    } 
}

Poznámka

Pokud nemáte přístup k ISupportPropertiessadě , ujistěte se, že používáte nejnovější stabilní verzi sady Application Insights SDK. ISupportProperties je určen pro hodnoty vysoké kardinality. GlobalProperties je vhodnější pro hodnoty nízké kardinality, jako je název oblasti a název prostředí.

 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;
        }
    }
});

Zobrazení výsledků inicializátoru telemetrie

Pokud odešlete nový provoz na svůj web a několik minut počkáte, můžete spustit dotaz, abyste potvrdili, že kolekce funguje:

requests
| where timestamp > ago(1h) 
| project appName, operation_Name, url, resultCode, client_IP, customDimensions.["client-ip"]

Nově shromážděné IP adresy se zobrazí ve sloupci customDimensions_client-ip . Ve výchozím client-ip sloupci zůstanou všechny čtyři oktety vynulované.

Pokud testujete z localhost a hodnota pro customDimensions_client-ip je ::1, tato hodnota je očekávané chování. Hodnota ::1 představuje adresu zpětné smyčky v protokolu IPv6. Je to ekvivalent v 127.0.0.1 protokolu IPv4.

Nejčastější dotazy

Tato část obsahuje odpovědi na běžné otázky.

Jak se počítají data o městě, zemi/oblasti a další geografické poloze?

Vyhledáme IP adresu (IPv4 nebo IPv6) webového klienta:

  • Telemetrie prohlížeče: Shromažďujeme IP adresu odesílatele.
  • Telemetrie serveru: Modul Application Insights shromažďuje IP adresu klienta. Pokud je nastavená hodnota, neshromažďuje X-Forwarded-For se.
  • Další informace o tom, jak se data IP adres a geografické polohy shromažďují ve službě Application Insights, najdete v tématu Věnovaném geografické poloze a zpracování IP adres.

Můžete nakonfigurovat ClientIpHeaderTelemetryInitializer tak, aby ip adresu převzala z jiné hlavičky. V některých systémech se například přesouvají proxy serverem, nástrojem pro vyrovnávání zatížení nebo CDN do X-Originating-IP. Další informace.

Pokud jste migrovali na prostředek založený na pracovním prostoru, můžete pomocí Power BI zobrazit telemetrii požadavků na mapě.

Další kroky

  • Přečtěte si další informace o shromažďování osobních údajů v Application Insights.
  • Přečtěte si další informace o tom, jak funguje shromažďování IP adres v Application Insights. Tento článek je starší externí blogový příspěvek, který napsal jeden z našich techniků. Předchází aktuálnímu výchozímu chování, kdy je IP adresa zaznamenána jako 0.0.0.0. Článek se podrobněji zabývá mechanikou integrovaného inicializátoru telemetrie.