Penanganan geolokasi dan alamat IP

Artikel ini menjelaskan cara kerja pencarian geolokasi dan penanganan alamat IP di Application Insights, bersama dengan cara mengubah perilaku default.

Perilaku default

Secara default, alamat IP dikumpulkan untuk sementara tetapi tidak disimpan dalam Application Insights. Proses ini mengikuti beberapa langkah dasar.

Saat telemetri dikirim ke Azure, Application Insights menggunakan alamat IP untuk melakukan pencarian geolokasi. Application Insights menggunakan hasil pencarian ini untuk mengisi bidang client_City, client_StateOrProvince, dan client_CountryOrRegion. Alamat tersebut kemudian dibuang dan 0.0.0.0 ditulis ke bidang client_IP.

Untuk menghapus data geolokasi, lihat artikel berikut ini:

Jenis telemetri adalah:

  • Telemetri browser: Application Insights mengumpulkan alamat IP pengirim. Titik akhir penyerapan menghitung alamat IP.
  • Telemetri server: Modul telemetri Application Insights untuk sementara mengumpulkan alamat IP klien. Alamat IP tidak dikumpulkan secara lokal saat header X-Forwarded-For diatur. Ketika daftar alamat IP masuk memiliki lebih dari satu item, alamat IP terakhir digunakan untuk mengisi bidang geolokasi.

Perilaku ini dirancang untuk membantu menghindari pengumpulan data pribadi dan informasi lokasi alamat IP yang tidak perlu. Jika memungkinkan, sebaiknya Anda menghindari pengumpulan data pribadi.

Catatan

Meskipun defaultnya adalah untuk tidak mengumpulkan alamat IP, Anda dapat mengganti perilaku ini. Sebaiknya Anda memverifikasi bahwa pengumpulan tidak melanggar persyaratan kepatuhan atau peraturan setempat.

Untuk mempelajari selengkapnya tentang menangani data pribadi di Application Insights, lihat Panduan untuk data pribadi.

Saat alamat IP tidak dikumpulkan, kota dan atribut geolokasi lainnya yang diisi oleh alur kami dengan menggunakan alamat IP juga tidak dikumpulkan. Anda dapat menutupi koleksi IP di sumbernya. Ada dua cara untuk melakukannya. Anda dapat:

Penyimpanan data alamat IP

Untuk mengaktifkan pengumpulan dan penyimpanan IP, properti DisableIpMasking dari komponen Application Insights harus diatur ke true. Anda dapat mengatur properti ini melalui templat Azure Resource Manager (templat ARM) atau dengan memanggil REST API.

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

Portal

Jika Anda perlu mengubah perilaku hanya untuk satu sumber daya Application Insights, gunakan portal Azure.

  1. Buka sumber daya Application Insights Anda, lalu pilihtemplat EksporAutomation>.

  2. Pilih Sebarkan.

    Cuplikan layar yang menunjukkan tombol Sebarkan.

  3. Pilih Edit templat.

    Cuplikan layar yang memperlihatkan tombol Edit, bersama dengan peringatan tentang grup sumber daya.

    Catatan

    Jika Anda mengalami kesalahan yang ditampilkan di cuplikan layar sebelumnya, Anda dapat mengatasinya. Ini menyatakan: "Grup sumber daya berada di lokasi yang tidak didukung oleh satu atau beberapa sumber daya dalam templat. Harap memilih grup sumber daya yang berbeda. “Pilih grup sumber daya yang berbeda untuk sementara waktu dari daftar dropdown, lalu pilih kembali grup sumber daya asli Anda.

  4. Di templat JSON, temukan properties di dalam resources. Tambahkan koma ke bidang JSON terakhir, lalu tambahkan baris baru berikut: "DisableIpMasking": true. Lalu pilih Simpan.

    Cuplikan layar yang menunjukkan penambahan koma dan baris baru setelah properti untuk sumber permintaan.

  5. Pilih Tinjau + buat>Buat.

    Catatan

    Jika Anda melihat "Penyebaran Anda gagal," lihat detail penyebaran Anda untuk jenis microsoft.insights/components dan periksa statusnya. Jika itu berhasil, perubahan yang dibuat pada DisableIpMasking disebarkan.

  6. Setelah penyebaran selesai, data telemetri baru akan direkam.

    Jika Anda memilih dan mengedit templat lagi, Anda hanya akan melihat templat default tanpa properti yang baru ditambahkan. Jika Anda tidak melihat data alamat IP dan ingin mengonfirmasi bahwa "DisableIpMasking": true sudah diatur, jalankan perintah PowerShell berikut:

    # 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
    

    Daftar properti dikembalikan sebagai hasilnya. Salah satu properti harus membaca DisableIpMasking: true. Jika Anda menjalankan perintah PowerShell sebelum menyebarkan properti baru dengan Azure Resource Manager, properti tidak akan ada.

REST API

Payload REST API berikut membuat modifikasi yang sama:

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

Cmdlet PoweShell 'Update-AzApplicationInsights' dapat menonaktifkan masking IP dengan DisableIPMasking parameter .

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

Untuk informasi selengkapnya tentang cmdlet 'Update-AzApplicationInsights', lihat Update-AzApplicationInsights

Penginisialisasi telemetri

Jika Anda memerlukan alternatif yang lebih fleksibel daripada DisableIpMasking, Anda dapat menggunakan penginisialisasi telemetri untuk menyalin semua atau sebagian dari alamat IP ke bidang kustom. Kode untuk kelas ini sama di seluruh versi .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);
            }
        }
    } 
}

Catatan

Jika Anda tidak dapat mengakses ISupportProperties, pastikan Anda menjalankan rilis stabil terbaru dari Application Insights SDK. ISupportProperties dimaksudkan untuk nilai-nilai kardinalitas yang tinggi. GlobalProperties lebih tepat untuk nilai kardinalitas rendah seperti nama wilayah dan nama lingkungan.

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

Menampilkan hasil penginisialisasi telemetri Anda

Jika Anda mengirim lalu lintas baru ke situs Anda dan menunggu beberapa menit, Anda kemudian dapat menjalankan kueri untuk mengonfirmasi bahwa koleksi tersebut berfungsi:

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

Alamat IP yang baru dikumpulkan akan muncul di kolom customDimensions_client-ip. Kolom client-ip default akan tetap memiliki keempat oktet yang dinolkan.

Jika Anda menguji dari localhost, dan nilai untuk customDimensions_client-ip adalah ::1, nilai ini adalah perilaku yang diharapkan. Nilai ::1 mewakili alamat loopback di IPv6. Ini setara dengan 127.0.0.1 di IPv4.

Tanya jawab umum

Bagian ini menyediakan jawaban atas pertanyaan umum.

Bagaimana data kota, negara/wilayah, dan geolokasi lainnya dihitung?

Kami mencari alamat IP (IPv4 atau IPv6) klien web:

  • Telemetri browser: Kami mengumpulkan alamat IP pengirim.
  • Telemetri server: Modul Application Insights mengumpulkan alamat IP klien. Ini tidak dikumpulkan jika X-Forwarded-For diatur.
  • Untuk mempelajari selengkapnya tentang bagaimana alamat IP dan data geolokasi dikumpulkan di Application Insights, lihat Penanganan geolokasi dan alamat IP.

Anda dapat mengonfigurasi ClientIpHeaderTelemetryInitializer untuk mengambil alamat IP dari header yang berbeda. Di beberapa sistem, misalnya, ini dipindahkan oleh proksi, load balancer, atau CDN ke X-Originating-IP. Pelajari lebih lanjut.

Anda bisa menggunakan Power BI untuk menampilkan telemetri permintaan Anda di peta jika Anda telah bermigrasi ke sumber daya berbasis ruang kerja.

Langkah berikutnya

  • Pelajari selengkapnya tentang pengumpulan data pribadi di Application Insights.
  • Pelajari selengkapnya tentang cara kerja pengumpulan alamat IP di Application Insights. Artikel ini adalah posting blog eksternal yang lebih lama yang ditulis oleh salah satu insinyur kami. Ini mendahului perilaku default saat ini di mana alamat IP dicatat sebagai 0.0.0.0. Artikel ini masuk ke kedalaman yang lebih mendalam tentang mekanisme penginisialisasi telemetri bawaan.