Földrajzi hely és IP-címkezelés

Ez a cikk bemutatja, hogyan működik a geolokációs keresés és az IP-címkezelés az Application Insightsban, valamint az alapértelmezett viselkedés módosításának módját.

Alapértelmezett viselkedés

Alapértelmezés szerint az Application Insights ideiglenesen gyűjti, de nem tárolja az IP-címeket. Ez a folyamat néhány alapvető lépést követ.

Amikor a rendszer telemetriát küld az Azure-ba, az Application Insights az IP-cím használatával végez földrajzi helykeresést. Az Application Insights ennek a keresésnek az eredményeit használja a , client_StateOrProvinceés client_CountryOrRegionmező feltöltéséhezclient_City. A cím ezután el lesz vetve, és 0.0.0.0 a client_IP mezőbe lesz írva.

A földrajzi hely adatainak eltávolításához tekintse meg a következő cikkeket:

A telemetriatípusok a következők:

  • Böngészőtelemetria: Az Application Insights összegyűjti a feladó IP-címét. A betöltési végpont kiszámítja az IP-címet.
  • Kiszolgálói telemetria: Az Application Insights telemetriai modul ideiglenesen gyűjti az ügyfél IP-címét. Az IP-címet a rendszer nem gyűjti helyileg a X-Forwarded-For fejléc beállításakor. Ha a bejövő IP-címlista több elemet tartalmaz, a rendszer az utolsó IP-címet használja a geolokációs mezők feltöltéséhez.

Ennek a viselkedésnek a célja, hogy elkerülje a személyes adatok és IP-címek helyadatainak szükségtelen gyűjtését. Amikor csak lehetséges, javasoljuk, hogy kerülje a személyes adatok gyűjtését.

Megjegyzés

Jóllehet a rendszer alapértelmezés szerint nem gyűjti az IP-címeket, ezt a működést felülbírálhatja. Javasoljuk, hogy ellenőrizze, hogy a gyűjtemény nem szegi-e meg a megfelelőségi követelményeket vagy a helyi előírásokat.

Ha többet szeretne megtudni a személyes adatok Application Insightsban való kezeléséről, olvassa el az Útmutató a személyes adatokhoz című témakört.

Ha az IP-címek gyűjtése nem történik meg, a folyamatunk által az IP-cím használatával kitöltött város- és egyéb földrajzihely-attribútumok gyűjtése szintén nem történik meg. Az IP-gyűjteményt maszkolhatja a forrásnál. Kétféleképpen teheti meg. A következőket teheti:

IP-címadatok tárolása

Az IP-adatgyűjtés és -tárolás engedélyezéséhez az DisableIpMasking Application Insights-összetevő tulajdonságát a következőre kell állítani: true. Ezt a tulajdonságot Azure Resource Manager-sablonokon (ARM-sablonokon) vagy a REST API meghívásával állíthatja be.

ARM-sablon

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

Ha csak egyetlen Application Insights-erőforrás viselkedését kell módosítania, használja a Azure Portal.

  1. Nyissa meg az Application Insights-erőforrást, majd válassza az Automation>Exportálási sablon lehetőséget.

  2. Válassza az Üzembe helyezés lehetőséget.

    Képernyőkép az Üzembe helyezés gombról.

  3. Válassza a Sablon szerkesztése lehetőséget.

    Képernyőkép a Szerkesztés gombról, valamint az erőforráscsoportra vonatkozó figyelmeztetésről.

    Megjegyzés

    Ha az előző képernyőképen látható hibát tapasztalja, megoldhatja. A következőt írja: "Az erőforráscsoport olyan helyen található, amelyet a sablon egy vagy több erőforrása nem támogat. Válasszon másik erőforráscsoportot." Ideiglenesen válasszon ki egy másik erőforráscsoportot a legördülő listából, majd válassza ki újra az eredeti erőforráscsoportot.

  4. A JSON-sablonban keresse meg properties a következőt: resources. Adjon hozzá egy vesszőt az utolsó JSON-mezőhöz, majd adja hozzá a következő új sort: "DisableIpMasking": true. Kattintson a Mentés gombra.

    Képernyőkép egy vessző és egy új sor hozzáadásáról a kérelemforrás tulajdonsága után.

  5. Válassza a Felülvizsgálat + létrehozás>Létrehozás lehetőséget.

    Megjegyzés

    Ha a "Sikertelen üzembe helyezés" szöveget látja, tekintse át az üzembe helyezés részleteit a típussal microsoft.insights/components rendelkező példányhoz, és ellenőrizze az állapotot. Ha ez sikeres, a módosítások DisableIpMasking üzembe lettek helyezve.

  6. Az üzembe helyezés befejezése után a rendszer új telemetriai adatokat rögzít.

    Ha ismét kiválasztja és szerkessze a sablont, csak az alapértelmezett sablon jelenik meg az újonnan hozzáadott tulajdonság nélkül. Ha nem látja az IP-címadatokat, és meg szeretné erősíteni, hogy "DisableIpMasking": true be van állítva, futtassa a következő PowerShell-parancsokat:

    # 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
    

    Ennek eredményeként a függvény visszaadja a tulajdonságok listáját. Az egyik tulajdonságnak a következőt kell olvasnia DisableIpMasking: true: . Ha az új tulajdonság Azure Resource Manager való üzembe helyezése előtt futtatja a PowerShell-parancsokat, a tulajdonság nem létezik.

REST API

Az alábbi REST API-hasznos adatok ugyanazokat a módosításokat végezik:

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

Az Update-AzApplicationInsights PoweShell-parancsmag letilthatja az IP-maszkolást a DisableIPMasking paraméterrel.

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

Az Update-AzApplicationInsights parancsmaggal kapcsolatos további információkért lásd: Update-AzApplicationInsights

Telemetriai inicializáló

Ha a helyett DisableIpMaskingrugalmasabb alternatívára van szüksége, a telemetriai inicializálóval az IP-cím egészét vagy egy részét átmásolhatja egy egyéni mezőre. Az osztály kódja megegyezik a .NET-verziókban.

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

Megjegyzés

Ha nem tud hozzáférni ISupportProperties, győződjön meg arról, hogy az Application Insights SDK legújabb stabil kiadását futtatja. ISupportProperties magas számosságú értékekhez készült. GlobalProperties megfelelőbb az alacsony számosságú értékekhez, például a régiónévhez és a környezet nevéhez.

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

A telemetriai inicializáló eredményeinek megtekintése

Ha új forgalmat küld a webhelyre, és vár néhány percet, futtathat egy lekérdezést, amely megerősíti, hogy a gyűjtemény működik:

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

Az újonnan gyűjtött IP-címek megjelennek az customDimensions_client-ip oszlopban. Az alapértelmezett client-ip oszlopban mind a négy oktett nullázva lesz.

Ha a localhostból tesztel, és a értéke customDimensions_client-ip , ::1ez az érték a várt viselkedés. Az ::1 érték az IPv6 visszacsatolási címét jelöli. Ez egyenértékű az 127.0.0.1 IPv4-ben.

Gyakori kérdések

Ez a szakasz a gyakori kérdésekre ad választ.

Hogyan történik a város, az ország/régió és az egyéb földrajzi helyadatok kiszámítása?

Megkeressük a webes ügyfél IP-címét (IPv4 vagy IPv6):

  • Böngészőtelemetria: Gyűjtjük a feladó IP-címét.
  • Kiszolgálói telemetria: Az Application Insights modul összegyűjti az ügyfél IP-címét. A rendszer nem gyűjti össze, ha X-Forwarded-For be van állítva.
  • Az IP-címek és földrajzi helyadatok Application Insightsban való gyűjtéséről további információt a Földrajzi hely és IP-címkezelés című témakörben talál.

Konfigurálhatja ClientIpHeaderTelemetryInitializer úgy, hogy az IP-címet egy másik fejlécből vegye át. Egyes rendszerekben például egy proxy, terheléselosztó vagy CDN helyezi át a következő helyre X-Originating-IP: . További információ.

Ha munkaterület-alapú erőforrásra migrált, a Power BI használatával megjelenítheti a kérelem telemetriáját egy térképen.

Következő lépések

  • További információ a személyes adatok gyűjtéséről az Application Insightsban.
  • További információ az IP-címgyűjtés működéséről az Application Insightsban. Ez a cikk egy régebbi, külső blogbejegyzés, amelyet az egyik mérnökünk írt. Megelőzi az aktuális alapértelmezett viselkedést, ahol az IP-cím a következőként 0.0.0.0van rögzítve: . A cikk részletesebben ismerteti a beépített telemetriai inicializáló mechanikáját.