Anonimizacja (czyli maskowanie) adresów IP w usłudze Google Analytics

Objaśnienie aspektów technicznych anonimizacji adresów IP w Analytics

W skrócie

Gdy klient usługi Analytics poprosi o anonimizację adresów IP, Analytics ukrywa te adresy najszybciej, jak to tylko technicznie możliwe. Dostępna w Analytics funkcja anonimizacji adresów IP wstawia w pamięci zera w miejsce ostatniego oktetu adresów IP użytkownika korzystającego z protokołu IPv4 i w miejsce ostatnich 80 bitów adresów IPv6 wkrótce po wysłaniu tych adresów do Google Analytics. W takim przypadku pełny adres IP nie jest nigdy zapisywany na dysku.

Podczas tworzenia usługi anonimizacja adresów IP może być realizowana w jeden z następujących sposobów:

Uwaga: w przypadku usług Google Analytics 4 anonimizacja adresów IP jest domyślnie włączona. Poniżej opisujemy proces anonimizacji adresów IP w przypadku tagów Google Analytics starszego typu.

Informacje szczegółowe

Analytics udostępnia funkcję anonymize_ip (gtag('config', '<IDENTYFIKATOR_POMIARU_ANALYTICS>', { 'anonymize_ip': true }) w bibliotece gtag.js), dzięki której właściciele witryn mogą poprosić, aby ta usługa anonimizowała wszystkie adresy IP ich użytkowników. Funkcja ta ma pomagać właścicielom witryn w spełnianiu wymagań własnej polityki prywatności lub (w niektórych krajach) zaleceń miejscowych organów ochrony danych, które mogą zabraniać przechowywania pełnych informacji o adresach IP. Anonimizacja/maskowanie adresów IP zachodzi tuż po odebraniu informacji przez Google Analytics, a przed jakimikolwiek działaniami z zakresu przechowywania lub przetwarzania danych.

Procedura anonimizacji adresów IP jest realizowana w Analytics na 2 etapach procesu zbierania danych: w tagu JavaScriptu i w Collection Network. Etapy te opisano poniżej.

Tag JavaScriptu usługi Analytics

Gdy przeglądarka internetowa z włączoną obsługą JavaScriptu wczytuje stronę z tagiem Analytics, asynchronicznie wykonuje 2 działania: wczytuje i przetwarza kolejkę funkcji Analytics oraz wysyła żądanie kodu JavaScriptu usługi Analytics. Kolejka funkcji jest tablicą w języku JavaScript, w której umieszczane są różne funkcje Analytics związane z konfiguracją i zbieraniem danych. Te funkcje konfiguruje właściciel witryny podczas implementacji kodu Analytics. Mogą one obejmować np. wskazywanie numeru konta Analytics i faktyczne przesyłanie informacji o wyświetlaniu stron do Google Analytics w celu ich przetwarzania.

Gdy kod JavaScriptu usługi Analytics uruchamia z kolejki funkcji taką funkcję, która powoduje wysłanie danych do Google Analytics (zwykle jest to gtag('config', '<IDENTYFIKATOR_POMIARU_ANALYTICS>' w bibliotece gtag.js), wysyła dane jako parametry adresu URL dołączone do żądania HTTP kierowanego do strony http://www.google-analytics.com/collect. Jeśli funkcja anonimizacji została wywołana przed funkcją śledzenia strony, do żądania piksela dołączany jest dodatkowy parametr anonimizacji adresów IP, który wygląda tak:

&aip=1

Sieć Analytics Collection Network

Sieć Analytics Collection Network to zestaw serwerów wykonujących 2 główne działania: dostarczanie kodu gtag.js (czyli kodu JavaScriptu usługi Analytics) oraz zbieranie danych wysyłanych za pomocą żądań „/collect”.

Gdy pojawi się żądanie kodu gtag.js, zawiera ono dodatkowe informacje w nagłówku żądania HTTP (tj. typ używanej przeglądarki) oraz w nagłówku TCP/IP (tj. adres IP, z którego pochodzi żądanie).

Odebrane żądanie zostaje natychmiast zatrzymane w pamięci w celu anonimizacji. Jeśli w adresie URL żądania występuje parametr &aip=1, to ostatni oktet adresu IP użytkownika jest zastępowany zerem, kiedy adres znajduje się jeszcze w pamięci, np. adres IP 12.214.31.144 zostanie zamieniony na 12.214.31.0 (w przypadku adresu IPv6 ostatnie 80 bitów ze wszystkich 128 zostanie zastąpionych zerami). Dopiero po wykonaniu anonimizacji żądanie zostanie zapisane na dysku w celu dalszego przetwarzania. Po zastosowaniu metody anonimizacji adresów IP pełny adres IP nigdy nie zostaje zapisany na dysku, ponieważ cała anonimizacja odbywa się w pamięci niemal od razu po odebraniu żądania.

Czy to było pomocne?
Jak możemy ją poprawić?