Verwerking van geolocatie en IP-adres
In dit artikel wordt uitgelegd hoe het opzoeken van geolocatie en de verwerking van IP-adressen werken in Application Insights, en hoe u het standaardgedrag kunt wijzigen.
Standaardgedrag
Standaard worden IP-adressen tijdelijk verzameld, maar niet opgeslagen in Application Insights. Dit proces volgt enkele eenvoudige stappen.
Wanneer telemetrie naar Azure wordt verzonden, gebruikt Application Insights het IP-adres om een geolocatiezoekactie uit te voeren. Application Insights gebruikt de resultaten van deze zoekactie om de velden client_City
, client_StateOrProvince
en client_CountryOrRegion
in te vullen. Het adres wordt vervolgens verwijderd en 0.0.0.0
naar het client_IP
veld geschreven.
Als u geolocatiegegevens wilt verwijderen, raadpleegt u de volgende artikelen:
De telemetrietypen zijn:
- Browsertelemetrie: Application Insights verzamelt het IP-adres van de afzender. Het opname-eindpunt berekent het IP-adres.
- Servertelemetrie: de Application Insights-telemetriemodule verzamelt tijdelijk het IP-adres van de client. Het IP-adres wordt niet lokaal verzameld wanneer de
X-Forwarded-For
header is ingesteld. Wanneer de lijst met binnenkomende IP-adressen meer dan één item bevat, wordt het laatste IP-adres gebruikt om geolocatievelden in te vullen.
Dit gedrag is ontworpen om onnodige verzameling van persoonlijke gegevens en locatiegegevens van IP-adressen te voorkomen. Waar mogelijk raden we aan om het verzamelen van persoonsgegevens te vermijden.
Notitie
Hoewel het standaard is om geen IP-adressen te verzamelen, kunt u dit gedrag overschrijven. U wordt aangeraden te controleren of de verzameling geen nalevingsvereisten of lokale voorschriften overbreekt.
Zie Richtlijnen voor persoonsgegevens voor meer informatie over het verwerken van persoonsgegevens in Application Insights.
Wanneer IP-adressen niet worden verzameld, worden plaats en andere geolocatiekenmerken die door onze pijplijn worden gevuld met behulp van het IP-adres ook niet verzameld. U kunt IP-verzameling bij de bron maskeren. Er zijn twee manieren om dit te doen. U kunt:
- Verwijder de IP-initialisatiefunctie van de client. Zie Configuratie met Application Insights-configuratie voor meer informatie.
- Geef uw eigen aangepaste initialisatiefunctie op. Zie een voorbeeld van API-filtering voor meer informatie.
Opslag van IP-adresgegevens
Als u IP-verzameling en -opslag wilt inschakelen, moet de DisableIpMasking
eigenschap van het Application Insights-onderdeel worden ingesteld op true
. U kunt deze eigenschap instellen via Azure Resource Manager-sjablonen (ARM-sjablonen) of door de REST API aan te roepen.
ARM-sjabloon
{
"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
Als u het gedrag voor slechts één Application Insights-resource wilt wijzigen, gebruikt u de Azure Portal.
Ga naar uw Application Insights-resource en selecteer vervolgens Automation>Exportsjabloon.
Selecteer Implementeren.
Selecteer Sjabloon bewerken.
Notitie
Als de fout in de vorige schermopname wordt weergegeven, kunt u deze oplossen. Er wordt aangegeven: 'De resourcegroep bevindt zich op een locatie die niet wordt ondersteund door een of meer resources in de sjabloon. Kies een andere resourcegroep.' Selecteer tijdelijk een andere resourcegroep in de vervolgkeuzelijst en selecteer vervolgens de oorspronkelijke resourcegroep opnieuw.
Zoek in de JSON-sjabloon in
properties
resources
. Voeg een komma toe aan het laatste JSON-veld en voeg vervolgens de volgende nieuwe regel toe:"DisableIpMasking": true
. Selecteer vervolgens Opslaan.Selecteer Beoordelen en maken>Maken.
Notitie
Als u 'Uw implementatie is mislukt' ziet, bekijkt u de implementatiedetails voor de implementatie met het type
microsoft.insights/components
en controleert u de status. Als dat lukt, zijn de aangebrachte wijzigingen geïmplementeerdDisableIpMasking
.Nadat de implementatie is voltooid, worden nieuwe telemetriegegevens vastgelegd.
Als u de sjabloon opnieuw selecteert en bewerkt, ziet u alleen de standaardsjabloon zonder de zojuist toegevoegde eigenschap. Als u geen IP-adresgegevens ziet en wilt bevestigen dat is
"DisableIpMasking": true
ingesteld, voert u de volgende PowerShell-opdrachten uit:# 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
Als gevolg hiervan wordt een lijst met eigenschappen geretourneerd. Een van de eigenschappen moet worden gelezen
DisableIpMasking: true
. Als u de PowerShell-opdrachten uitvoert voordat u de nieuwe eigenschap implementeert met Azure Resource Manager, bestaat de eigenschap niet.
REST-API
De volgende REST API-nettolading brengt dezelfde wijzigingen aan:
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
Met de PoweShell-cmdlet Update-AzApplicationInsights kunt u IP-maskering uitschakelen met de DisableIPMasking
parameter .
Update-AzApplicationInsights -Name "aiName" -ResourceGroupName "rgName" -DisableIPMasking:$true
Zie Update-AzApplicationInsights voor meer informatie over de cmdlet Update-AzApplicationInsights
Initialisatiefunctie voor telemetrie
Als u een flexibeler alternatief nodig hebt dan DisableIpMasking
, kunt u een telemetrie-initialisatiefunctie gebruiken om het ip-adres geheel of gedeeltelijk naar een aangepast veld te kopiëren. De code voor deze klasse is hetzelfde voor alle .NET-versies.
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);
}
}
}
}
Notitie
Als u geen toegang hebt tot ISupportProperties
, controleert u of u de nieuwste stabiele release van de Application Insights SDK uitvoert. ISupportProperties
is bedoeld voor hoge kardinaliteitswaarden. GlobalProperties
is geschikter voor lage kardinaliteitswaarden, zoals regionaam en omgevingsnaam.
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;
}
}
});
De resultaten van uw telemetrie-initialisatiefunctie weergeven
Als u nieuw verkeer naar uw site verzendt en een paar minuten wacht, kunt u vervolgens een query uitvoeren om te bevestigen dat de verzameling werkt:
requests
| where timestamp > ago(1h)
| project appName, operation_Name, url, resultCode, client_IP, customDimensions.["client-ip"]
Nieuw verzamelde IP-adressen worden weergegeven in de customDimensions_client-ip
kolom. In de standaardkolom client-ip
worden nog steeds alle vier de octetten uitgeschakeld.
Als u test vanuit localhost en de waarde voor customDimensions_client-ip
is, is ::1
deze waarde verwacht gedrag. De ::1
waarde vertegenwoordigt het loopback-adres in IPv6. Dit is gelijk aan 127.0.0.1
in IPv4.
Veelgestelde vragen
Deze sectie bevat antwoorden op veelgestelde vragen.
Hoe worden gegevens over plaats, land/regio en andere geolocatie berekend?
We zoeken het IP-adres (IPv4 of IPv6) van de webclient op:
- Browsertelemetrie: We verzamelen het IP-adres van de afzender.
- Servertelemetrie: de Application Insights-module verzamelt het IP-adres van de client. Deze wordt niet verzameld als
X-Forwarded-For
is ingesteld. - Zie Verwerking van geolocatie en IP-adressen voor meer informatie over hoe IP-adres- en geolocatiegegevens worden verzameld in Application Insights.
U kunt configureren ClientIpHeaderTelemetryInitializer
om het IP-adres uit een andere header te halen. In sommige systemen wordt het bijvoorbeeld verplaatst door een proxy, load balancer of CDN naar X-Originating-IP
. Meer informatie.
U kunt Power BI gebruiken om de telemetrie van uw aanvraag op een kaart weer te geven als u bent gemigreerd naar een resource op basis van een werkruimte.
Volgende stappen
- Meer informatie over het verzamelen van persoonsgegevens vindt u in Application Insights.
- Meer informatie over hoe het verzamelen van IP-adressen werkt in Application Insights. Dit artikel is een oudere externe blogpost geschreven door een van onze technici. Het dateert van vóór het huidige standaardgedrag waarbij het IP-adres wordt vastgelegd als
0.0.0.0
. In het artikel wordt dieper ingegaan op de mechanismen van de ingebouwde telemetrie-initialisatiefunctie.