Mengelola data pribadi di Log Azure Monitor dan Application Insights

Log Analytics adalah penyimpanan data tempat data pribadi kemungkinan ditemukan. Application Insights menyimpan datanya dalam partisi Analitik Log. Artikel ini menjelaskan tempat Log Analytics and Application Insights menyimpan data pribadi dan cara mengelola data ini.

Dalam artikel ini, data log mengacu pada data yang dikirim ke ruang kerja Log Analytics, sedangkan data aplikasi mengacu pada data yang dikumpulkan oleh Application Insights. Jika Anda menggunakan sumber daya Application Insights berbasis ruang kerja, informasi tentang data log berlaku. Jika Anda menggunakan sumber daya Application Insights klasik, data aplikasi berlaku.

Catatan

Untuk informasi tentang menampilkan atau menghapus data pribadi, lihat Permintaan Subjek Data Azure untuk GDPR. Untuk informasi selengkapnya tentang GDPR, lihat bagian GDPR di Microsoft Trust Center dan bagian GDPR dari portal Service Trust.

Strategi penanganan data pribadi

Meskipun terserah Anda dan perusahaan Anda untuk menentukan strategi untuk menangani data pribadi, berikut adalah beberapa pendekatan, yang tercantum dari yang paling tidak lebih disukai dari sudut pandang teknis:

  • Berhenti mengumpulkan data pribadi, atau mengaburkan, menganonimkan, atau menyesuaikan data yang dikumpulkan untuk mengecualikannya agar tidak dianggap "pribadi". Ini adalah sejauh ini pendekatan yang disukai, yang menghemat kebutuhan Anda untuk membuat strategi penanganan data yang mahal dan berdampak.
  • Menormalkan data untuk mengurangi dampak negatif pada platform dan performa data. Misalnya, alih-alih mencatat ID Pengguna eksplisit, buat pencarian untuk menghubungkan nama pengguna dan detailnya ke ID internal yang kemudian bisa dicatat di tempat lain. Dengan begitu, jika pengguna meminta Anda untuk menghapus informasi pribadi mereka, Anda hanya dapat menghapus baris dalam tabel pencarian yang sesuai dengan pengguna.
  • Jika Anda perlu mengumpulkan data pribadi, buat proses menggunakan jalur API penghapusan menyeluruh dan API kueri yang ada untuk memenuhi kewajiban apa pun untuk mengekspor dan menghapus data pribadi apa pun yang terkait dengan pengguna.

Tempat mencari data pribadi di Log Analytics

Log Analytics menetapkan skema untuk data Anda, tetapi memungkinkan Anda untuk mengganti setiap bidang dengan nilai khusus. Anda juga dapat menyerap skema kustom. Dengan demikian, tidak mungkin untuk mengatakan dengan tepat di mana data pribadi akan ditemukan di ruang kerja spesifik Anda. Namun, lokasi berikut adalah titik awal yang baik dalam inventaris Anda.

Catatan

Beberapa kueri di bawah ini menggunakan search * untuk mengkueri semua tabel di ruang kerja. Kami sangat menyarankan Anda menghindari penggunaan search *, yang membuat kueri yang sangat tidak efisien, jika memungkinkan. Sebagai gantinya, kueri tabel tertentu.

Data log

  • Alamat IP: Log Analytics mengumpulkan berbagai informasi IP dalam beberapa tabel. Misalnya, kueri berikut ini memperlihatkan semua tabel yang alamat IPv4-nya telah dikumpulkan selama 24 jam terakhir:

    search * 
    | where * matches regex @'\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b' //RegEx originally provided on https://stackoverflow.com/questions/5284147/validating-ipv4-addresses-with-regexp
    | summarize count() by $table
    
  • ID pengguna: Anda akan menemukan nama pengguna dan ID pengguna di berbagai solusi dan tabel. Anda dapat mencari nama pengguna atau ID pengguna tertentu di seluruh kumpulan data Anda menggunakan perintah pencarian:

    search "<username or user ID>"
    

    Ingatlah untuk tidak hanya mencari nama pengguna yang dapat dibaca manusia tetapi juga untuk GUID yang dapat dilacak kembali ke pengguna tertentu.

  • ID Perangkat: Seperti ID pengguna, ID perangkat terkadang dianggap sebagai data pribadi. Gunakan pendekatan yang tercantum di atas untuk ID pengguna untuk mengidentifikasi tabel yang menyimpan data pribadi.

  • Data kustom: Log Analytics memungkinkan Anda mengumpulkan data kustom melalui log kustom, bidang kustom, API Pengumpul Data HTTP, dan sebagai bagian dari log peristiwa sistem. Periksa semua data kustom untuk data pribadi.

  • Data yang diambil solusi: Karena mekanisme solusi bersifat terbuka, sebaiknya tinjau semua tabel yang dihasilkan oleh solusi untuk memastikan kepatuhan.

Data aplikasi

  • Alamat IP: Meskipun Application Insights mengaburkan semua bidang alamat IP ke 0.0.0.0 secara default, cukup umum untuk mengganti nilai ini dengan IP pengguna yang sebenarnya untuk mempertahankan informasi sesi. Gunakan kueri di bawah untuk menemukan tabel apa pun yang berisi nilai di kolom alamat IP selain 0.0.0.0 dalam 24 jam terakhir:

    search client_IP != "0.0.0.0"
    | where timestamp > ago(1d)
    | summarize numNonObfuscatedIPs_24h = count() by $table
    
  • ID Pengguna: Secara default, Application Insights menggunakan ID yang dihasilkan secara acak untuk pelacakan pengguna dan sesi di bidang seperti session_Id, user_Id, user_AuthenticatedId, user_AccountId, dan customDimensions. Namun, umum untuk mengambil alih bidang ini dengan ID yang lebih relevan dengan aplikasi, seperti nama pengguna atau GUID Microsoft Entra. ID ini sering dianggap sebagai data pribadi. Sebaiknya anda mengaburkan atau menganonimkan ID ini.

  • Data kustom: Application Insights memungkinkan Anda untuk menambahkan sekumpulan dimensi kustom ke tipe data apa pun. Gunakan kueri berikut untuk mengidentifikasi dimensi khusus yang dikumpulkan dalam 24 jam terakhir:

    search * 
    | where isnotempty(customDimensions)
    | where timestamp > ago(1d)
    | project $table, timestamp, name, customDimensions 
    
  • Data dalam memori dan dalam transit: Application Insights melacak pengecualian, permintaan, panggilan dependensi, dan jejak. Anda akan sering menemukan data pribadi di tingkat kode dan panggilan HTTP. Tinjau pengecualian, permintaan, dependensi, dan lacak tabel untuk mengidentifikasi data tersebut. Gunakan inisialisasi telemetri bila memungkinkan untuk menyamarkan data ini.

  • Snapshot Debugger menangkap: Fitur Snapshot Debugger di Application Insights memungkinkan Anda mengumpulkan snapshot debug saat Application Insights mendeteksi pengecualian pada instans produksi aplikasi Anda. Snapshot mengekspos jejak tumpukan penuh yang mengarah ke pengecualian dan nilai untuk variabel lokal di setiap langkah dalam tumpukan. Sayangnya, fitur ini tidak mengizinkan penghapusan titik lekat secara selektif atau akses terprogram ke data di dalam snapshot. Oleh karena itu, jika tingkat retensi snapshot default tidak memenuhi persyaratan kepatuhan Anda, sebaiknya nonaktifkan fitur tersebut.

Mengekspor dan menghapus data pribadi

Kami sangat menyarankan Anda merestrukturisasi kebijakan pengumpulan data Anda untuk berhenti mengumpulkan data pribadi, mengaburkan atau menganonimkan data pribadi, atau memodifikasi data tersebut sampai tidak lagi dianggap pribadi. Dalam menangani pribadi, data anda akan dikenakan biaya dalam menentukan dan mengotomatiskan strategi, membangun antarmuka tempat pelanggan Anda berinteraksi dengan data mereka, dan pemeliharaan yang sedang berlangsung. Selain itu, hal tersebut secara komputasi mahal untuk Log Analytics dan Application Insights, dan volume besar kueri bersamaan atau pembersihan panggilan API berpotensi berdampak negatif pada semua interaksi lain dengan fungsionalitas Log Analytics. Namun, jika Anda harus mengumpulkan data pribadi, ikuti panduan di bagian ini.

Penting

Meskipun sebagian besar operasi pembersihan selesai lebih cepat, SLA formal untuk penyelesaian operasi pembersihan ditetapkan pada 30 hari karena dampaknya yang besar pada platform data. SLA ini memenuhi persyaratan GDPR. Ini adalah proses otomatis, jadi tidak ada cara untuk mempercepat operasi.

Lihat dan Ekspor

Gunakan API kueri Log Analytics atau API kueri Application Insights untuk melihat dan mengekspor permintaan data.

Anda perlu menerapkan logika untuk mengonversi data ke format yang sesuai untuk pengiriman kepada pengguna Anda. Azure Functions adalah tempat yang sangat bagus untuk menghosting logika tersebut.

Hapus

Peringatan

Penghapusan di Analitik Log merusak dan tidak dapat dibalik! Harap gunakan dengan sangat hati-hati dalam penerapannya.

API Penghapusan Menyeluruh Azure Monitor memungkinkan Anda menghapus data pribadi. Gunakan operasi pembersihan dengan hemat untuk menghindari potensi risiko, dampak performa, dan potensi untuk mencondongkan agregasi, pengukuran, dan aspek lain dari data Log Analytics Anda. Lihat bagian Strategi penanganan data pribadi untuk pendekatan alternatif dalam menangani data pribadi.

Penghapusan menyeluruh adalah operasi yang sangat istimewa. Berikan peran Data Purger di Azure Resource Manager dengan hati-hati karena potensi kehilangan data.

Untuk mengelola sumber daya sistem, kami membatasi permintaan penghapusan menyeluruh hingga 50 permintaan per jam. Kelompokkan eksekusi permintaan penghapusan menyeluruh dengan mengirim satu perintah yang predikatnya mencakup semua identitas pengguna yang memerlukan penghapusan menyeluruh. Gunakan operator dalam untuk menentukan beberapa identitas. Jalankan kueri sebelum menjalankan permintaan pembersihan untuk memverifikasi hasil yang diharapkan.

Penting

Penggunaan Log Analytics atau Application Insights Purge API tidak memengaruhi biaya retensi Anda. Untuk menurunkan biaya retensi, Anda harus mengurangi periode retensi data Anda.

Data log

  • Workspace Purge POST API mengambil objek yang menetapkan parameter data untuk dihapus dan mengembalikan GUID referensi.

  • GET Purge Status POST API mengembalikan header 'x-ms-status-location' yang menyertakan URL yang dapat Anda panggil untuk menentukan status operasi penghapusan menyeluruh Anda. Contohnya:

    x-ms-status-location: https://management.azure.com/subscriptions/[SubscriptionId]/resourceGroups/[ResourceGroupName]/providers/Microsoft.OperationalInsights/workspaces/[WorkspaceName]/operations/purge-[PurgeOperationId]?api-version=2015-03-20
    

Data aplikasi

  • Komponen - Purge POST API mengambil objek yang menetapkan parameter data untuk dihapus dan mengembalikan GUID referensi.

  • API GET Components - Get Purge Status mengembalikan header 'x-ms-status-location' yang menyertakan URL yang dapat Anda panggil untuk menentukan status operasi penghapusan menyeluruh. Contohnya:

    x-ms-status-location: https://management.azure.com/subscriptions/[SubscriptionId]/resourceGroups/[ResourceGroupName]/providers/microsoft.insights/components/[ComponentName]/operations/purge-[PurgeOperationId]?api-version=2015-05-01
    

Langkah berikutnya