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_StateOrProvince
a 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.
Přejděte Přehledy prostředku aplikace a vyberte AutomationExport> Template.
Vyberte Nasadit.
Vyberte Upravit šablonu.
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ů.
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.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é vDisableIpMasking
nasazení.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.