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 Přehledy aplikace a 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 Přehledy aplikace. Základní proces je tento:

Když se telemetrie odešle do Azure, aplikace Přehledy použije IP adresu k vyhledání geografické polohy pomocí GeoLite2 z MaxMind. Aplikace Přehledy 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.

Poznámka

Aplikace Přehledy používá starší verzi databáze GeoLite2. Pokud dochází k problémům s přesností ip adres na mapování geografické polohy, můžete jako alternativní řešení zakázat maskování IP adres a využít jinou geografickou službu k převodu client_IP pole podkladové telemetrie na přesnější geografické umístění. V současné době pracujeme na aktualizaci, abychom zlepšili přesnost geografické polohy.

Typy telemetrie jsou:

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

Toto chování je záměrně, které pomáhá vyhnout se zbytečnému shromažďování osobních údajů. Kdykoli je to možné, doporučujeme zabránit shromažďování osobních údajů.

Poznámka

I když výchozí nastavení není shromažďování IP adres, můžete toto chování přepsat. Doporučujeme ověřit, že kolekce neporušuje žádné požadavky na dodržování předpisů ani místní předpisy.

Další informace o zpracování osobních údajů v Přehledy aplikace najdete v doprovodných materiálech k osobním údajům.

Storage dat IP adres

Chcete-li povolit shromažďování IP adres a úložiště, DisableIpMasking musí být vlastnost součásti Přehledy aplikace nastavena na true. Tuto vlastnost můžete nastavit prostřednictvím šablon Azure Resource Manager nebo voláním rozhraní REST API.

Šablona Azure Resource Manageru

{
       "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í pouze pro jeden prostředek Přehledy aplikace, použijte Azure Portal.

  1. Přejděte Přehledy prostředku aplikace a vyberte AutomationExport> Template.

  2. Vyberte Nasadit.

    Screenshot that shows the Deploy button highlighted in red.

  3. Vyberte Upravit šablonu.

    Screenshot that shows the Edit button highlighted in red, along with a warning about the resource group.

    Poznámka

    Pokud dojde k následující chybě (jak je znázorněno na snímku obrazovky), můžete ji vyřešit: "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 uvnitř resources, přidejte čárku do posledního pole JSON a pak přidejte následující nový řádek: "DisableIpMasking": true. Pak vyberte Uložit.

    Screenshot that shows the addition of a comma and a new line after the property for request source.

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

    Poznámka

    Pokud se zobrazí zpráva "Vaše nasazení selhalo", projděte si podrobnosti o nasazení s typem microsoft.insights/components a zkontrolujte stav. Pokud to bude úspěšné, změny provedené v DisableIpMasking nasazení.

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

    Pokud šablonu znovu vyberete a upravíte, zobrazí se jenom výchozí šablona bez nově přidané vlastnosti. Pokud se vám 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
    

    V důsledku toho se vrátí seznam vlastností. Jedna z vlastností by měla číst DisableIpMasking: true. Pokud před nasazením nové vlastnosti v Azure Resource Manager spustíte příkazy PowerShellu, vlastnost neexistuje.

REST API

Datová část rozhraní REST API , která provede stejné změny, je následující:

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

Inicializátor telemetrie

Pokud potřebujete flexibilnější alternativu než DisableIpMasking, můžete pomocí inicializátoru telemetrie zkopírovat všechny IP adresy nebo jeho část do vlastního pole.

ASP.NET nebo ASP.NET Core

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řístupISupportProperties, ujistěte se, že používáte nejnovější stabilní verzi sady Application Přehledy 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í.

Povolení inicializátoru telemetrie pro ASP.NET

using Microsoft.ApplicationInsights.Extensibility;


namespace MyWebApp
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
              //Enable your telemetry initializer:
              TelemetryConfiguration.Active.TelemetryInitializers.Add(new CloneIPAddress());
        }
    }
}

Povolení inicializátoru telemetrie pro ASP.NET Core

Inicializátor telemetrie můžete vytvořit stejným způsobem jako pro ASP.NET Core jako pro ASP.NET. Chcete-li povolit inicializátor, použijte následující příklad pro referenci:

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;
 public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, CloneIPAddress>();
}

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 . Výchozí client-ip sloupec bude mít stále všechny čtyři okty vynulované.

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

Další kroky

  • Přečtěte si další informace o shromažďování osobních údajů v Přehledy aplikací.

  • Přečtěte si další informace o tom, jak funguje kolekce IP adres v Přehledy aplikací. Tento článek obsahuje starší externí blogový příspěvek napsaný jedním z našich inženýrů. Předejde aktuálnímu výchozímu chování, kdy se IP adresa zaznamená jako 0.0.0.0, ale do větší hloubky přejde do mechaniky integrovaného inicializátoru telemetrie.