Mało kogo ominęły przepastne artykuły na temat RODO i przeróżnych, często przerażających sankcji za jej nieprzestrzeganie. Niewielu za to zagłębia się w takie istotne szczegóły, jak znacznie anonimizacji czy retencji, które pozwalają uniknąć tych wyżej wspomnianych sankcji oraz znacząco ułatwić pracę deweloperów. Z tego też względu postanowiliśmy w przystępny sposób wyjaśnić, czym są anonimizacja i retencja danych osobowych oraz pokazać, dlaczego ich właściwe wykonanie ma takie znaczenie w procesie wytwarzania oprogramowania. Dzisiaj na warsztat bierzemy anonimizację.
Anonimizacja to proces pozwalający na trwałe usunięcie powiązań między danymi osobowymi, a osobą, której dotyczą. W ten sposób informacje, które przed anonimizacją były danymi osobowymi, przestają nimi być.
Powyższa definicja staje się mniej zagmatwana jeśli wesprzemy ją przykładem. Wyobraźmy sobie np. Supermana – komiksowego bohatera pochodzącego z Kryptonu, który chce ukryć swoją tożsamość i wtopić się w tłum.
Nazwa | Superman |
Zawód | Bohater |
Pochodzenie | Krypton |
Podczas procesu anonimizacji Superman wchodzi do budki telefonicznej, zakłada okulary, tweedowy garnitur i staje się w tym momencie Clarkiem Kentem, reporterem z Kansas.
Nazwa | Clark Kent |
Zawód | Reporter |
Pochodzenie | Kansas, USA |
W procesie anonimizacji dane Supermana zamieniły się na dane Clarka Kenta, co więcej nie ma żadnego powiązania między tymi dwiema osobami. To dane fikcyjne, które mogą być bezpiecznie wykorzystywane np. na środowiskach testowych.
Powyższy przykład obrazuje, na czym polega sam proces anonimizacji. Zastanówmy się teraz, dlaczego ważne jest, żeby anonimizacja była dobrej jakości.
Fundamentem anonimizacji jest jej nieodwracalność. Na podstawie zanonimizowanych danych nigdy nie powinniśmy dociec, jak wyglądały dane oryginalne. Współpracownicy Clarka nie powinni odkryć jego prawdziwej tożsamości.
Kiedy zbiór danych poddajemy anonimizacji, to zazwyczaj zmianie ulega jedynie fragment danych. Musimy jednak zadbać o to, aby dane niezanonimizowane nie pozwoliły na odwrócenie procesu anonimizacji dla całego zbioru. W naszym przykładzie nie musielibyśmy zmieniać ulubionego koloru Supermana. Jeżeli jednak nie anonimizujemy jego pochodzenia, to z pewnością wzbudzimy sensację.
Istotną miarą jakościową anonimizacji jest też jej realność i to, jak dobrze odwzorowuje rzeczywistość. Jeżeli Superman i wszystkie inne osoby w zbiorze danych zostaną zanonimizowane w następujący sposób:
Nazwa | X |
Zawód | Y |
Pochodzenie | Z |
to nie mamy wątpliwości, że proces jest nieodwracalny, jednak jego przydatność jest wątpliwa. Pan X nie wygląda na człowieka z krwi i kości, a charakter danych oryginalnych nie został zachowany. Długości nazw nie zostały zachowane, a same dane wyglądają na niewiarygodne i wszystkie osoby nazywają się tak samo. W przypadku systemów informatycznych tester wykorzystując takie dane miałby sporo problemów, nie byłby w stanie nawet rozróżnić osób.
Kolejną cechą dobrej anonimizacji jest jej powtarzalność. Anonimizując zbiór danych chcemy mieć pewność, że za każdym razem zbiór danych zostanie zanonimizowany w taki sam sposób. Chcemy, aby Superman zawsze stawał się Clarkiem Kentem, niezależnie czy jest to pierwsza, czy dziesiąta anonimizacja. Jest to szczególnie ważne z punktu widzenia Quality Assurance. Testerzy często tworzą przypadki testowe opierając się na konkretnych danych. Gdybyśmy je zmieniali za każdym razem, z pewnością praca testera byłaby trudniejsza!
Dzisiejszy świat informatyki to systemy połączone. Prawie żadna aplikacja nie jest samotną wyspą. Systemy łączą się ze sobą, wymieniają danymi, korzystają ze swoich usług. Z tego też względu podchodząc do anonimizacji, musimy myśleć o procesie nie dla jednego, ale dla wielu systemów na raz. Wyzwaniem jest, aby zanonimizowane dane były spójne w całym ekosystemie. Oznacza to, że jeżeli Daily Planet (miejsce pracy Clarka) posiada system kadrowy oraz bloga, to w obu tych aplikacjach Superman stanie się Kentem.
Ostatnim z mojego punktu widzenia, kluczowym parametrem mającym wpływ na jakość anonimizacji jest wydajność. Systemy informatyczne przetwarzają olbrzymie zbiory danych liczonych w gigabajtach czy terabajtach. Anonimizacja takich baz danych może być czasochłonna w związku z czym musimy zapewnić nie tylko bezpieczeństwo, ale również szybkość procesu anonimizacji. Jedną z rzeczy, którą nauczył się Superman po przybyciu na Ziemię, jest to, że czas to pieniądz. To powiedzenie jest jeszcze bardziej prawdziwe w przypadku nowoczesnego IT.
Wszystkich zainteresowanych tematem retencji danych zapraszam do przeczytania kolejnego mojego artykułu, który planuję opublikować już niedługo.
Artur Żórawski, Founder&CTO Wizards
Niedługo minie dwadzieścia lat od momentu, kiedy dołączyłem do świata IT. Przez ten okres obserwowałem, jak zmienia się to środowisko, jak rozwijają się procesy wytwórcze i jakie nowe narzędzia są wykorzystywane. Z czasem wiele procesów, m.in. powtarzalne zadania, ulegało automatyzacji. Firmy wdrażały Continuous Integration i Continuous Delivery. Wszystkiemu przewodziła jedna myśl: pozwolić twórcom oprogramowania skupić się na rozwoju systemów i biznesie.
Wejście RODO wstrząsnęło światem IT i narzuciło nowe reguły gry. Proces wytwórczy stał się bardziej skomplikowany, operowanie na danych osobowych stało się dużym ryzykiem, które trzeba było zaadresować. Pracując w software house widzieliśmy te problemy wyraźnie, ponieważ występowały w każdym z naszych projektów. Teoretycznie byliśmy przygotowani na wejście RODO. Byliśmy po odpowiednich kursach, firma zbroiła się w dokumenty i rejestry. W praktyce okazało się, że obostrzenia prawne i niepewność związana z wejściem w życie tego rozporządzenia, wpłynęły na naszą codzienną pracę. Mój sen o developmencie bez przeszkód, gdzie możemy skupić się tylko na produkcji oprogramowania, prysnął.
Krótko po wdrożeniu RODO rozpoczęło się szukanie rozwiązań. Narzędzia, które udawało nam się znaleźć, nie odpowiadały na nasze potrzeby projektowe, ponieważ na co dzień rozwijaliśmy całe, zintegrowane, tworzone w różnych technologiach ekosystemy wymieniające się danymi osobowymi. Obsługa każdego przypadku, ręcznie i z osobna, była dla mnie nie do przyjęcia. Czułem się tak, jakbym cofnął się o dwie dekady.
Ostatecznie w firmie wyłoniła się grupa ludzi, która postawiła sobie za cel zmianę status quo. Wiedzieliśmy, czego potrzebujemy i jak możemy ten plan zrealizować. Z takim wyzwaniem nigdy wcześniej się nie mierzyliśmy. Wspólnie jednak udało nam się stworzyć zestaw narzędzi, który był dla nas wybawieniem.
Zaczęliśmy od anonimizacji danych na środowiskach testowych. Stworzyliśmy narzędzie, które było w stanie obsłużyć wiele aplikacji na raz, wziąć pod uwagę polską specyfikę i wykonać swoją pracę wydajnie.
Wytworzone rozwiązanie miało obsługiwać wszystkie nasze projekty, dlatego priorytetem była wysoka konfigurowalność i możliwość dostosowania do różnych wymogów. Anonimizację włączyliśmy w procesy Continuous Integration i szybko wdrożyliśmy je w naszych projektach. Okazało się, że te najbardziej bolesne dla nas aspekty RODO są obsługiwane automatycznie i przestały spędzać sen z powiek zespołowi developerskiemu. Zupełnie tak, jakby ten obszar RODO przestał nas dotyczyć.
Kolejnym krokiem była retencja danych osobowych, która jest niezbędna w prawie każdym systemie. Zadbanie o ten aspekt w pojedynczej aplikacji jest łatwe. Wykonanie retencji danych w dziesięciu zintegrowanych systemach jest znacznie trudniejsze, a przy stu – już praktycznie niemożliwe. Było dla nas jasne, że nie chcemy powtarzać tej samej funkcjonalności we wszystkich systemach, które wytwarzamy. W ten sposób narodziło się kolejne narzędzie, które zdejmowało z nas kolejny problem.
Wszystko wróciło na dobre tory, tak jak sobie wymarzyłem. Na szczęście RODO okazało się być jedynie wybojem na drodze w naszych projektach.
Z tą też myślą założyliśmy startup. Doszliśmy do wniosku, że problemy, z którymi borykaliśmy się do tej pory dotyczą wielu zespołów developerskich, a my mamy klucz do ich rozwiązania. Dlatego też postanowiliśmy stworzyć nocturno i oblivio, o których już wkrótce więcej przeczytacie m.in. na naszym firmowym profilu Wizards.
Artur Żórawski, Founder&CTO Wizards