Wchodzące w życie RODO nakłada na nas jako twórców oprogramowania obowiązek zapewnienia odpowiedniego stopnia ochrony danych osobowych jeżeli nasza aplikacja takie dane przetwarza.
Przy czym termin „przetwarzanie” oznacza:
„operację lub zestaw operacji wykonywanych na danych osobowych lub zestawach danych osobowych w sposób zautomatyzowany lub niezautomatyzowany, taką jak zbieranie, utrwalanie, organizowanie, porządkowanie, przechowywanie, adaptowanie lub modyfikowanie, pobieranie, przeglądanie, wykorzystywanie, ujawnianie poprzez przesłanie, rozpowszechnianie lub innego rodzaju udostępnianie, dopasowywanie lub łączenie, ograniczanie, usuwanie lub niszczenie”,
czyli praktycznie wszystko co z danymi można robić.
W szczególności art. 25 Rozporządzenia ustanawia ochronę danych w fazie projektowania jako obowiązek prawny dla administratorów i podmiotów przetwarzających dane. Wymóg ten jest szczególnie ważny dla architektów i programistów wdrażających programy gromadzące takie dane.
Mikroserwis zgodny z RODO
Platforma Cricket Microservices Framework oferuje bezpłatny, specyficzny zestaw funkcjonalności, które mogą zostać użyte przez programistów w celu zapewnienia zgodności z RODO:
- Bezpieczne połączenia
- Szyfrowanie bazy danych użytkowników
- Autentykacja wywołań API
- Prawa dostępu
- Dwukrokowa rejestracja
- Implementacja „prawa do bycia zapomnianym”
- Rejestr dostępu do danych
- Eksport danych
Bezpieczne połączenia
Szyfrowanie komunikacji jest zazwyczaj delegowane do oddzielnej usługi (np. NGINX, Apache httpd), ale wbudowany serwer http obsługuje również SSL. Dzięki temu możemy natychmiast uruchomić nasz mikroserwis zabezpieczony domyślnym, samopodpisanym certyfikatem.
Szyfrowanie bazy danych użytkowników
Dane użytkownika są przechowywane w osobnej bazie danych, dzięki czemu możemy połączyć się z zewnętrzną, szyfrowaną bazą. Możemy również korzystać z wbudowanej bazy danych H2, która wykorzystuje algorytm AES-128 do zabezpieczenia wydzielonej bazy użytkowników oraz jej kopii zapasowych.
Autentykacja wywołań API
Wszystkie wywołania interfejsów API, z wyjątkiem rejestracji i logowania użytkowników, wymagają dołączenia tokena sesji. Tokeny mają konfigurowalny czas ważności i są zarządzane przez REST API dedykowanego adaptera.
Prawa dostępu
Dane osobowe są dostępne tylko dla danego użytkownika i administratorów, więc standardowe dane są domyślnie chronione. Każde wywołanie API otrzymuje w procesie uwierzytelniania dodatkowy nagłówek identyfikujący użytkownika. Możemy to wykorzystać do zaprojektowania naszego własnego API, w celu sprawdzenia każdego wywołania na zgodność ze specyficznymi regułami autoryzacji.
Dwufazowa rejestracja
Zarejestrowanie użytkownika w serwisie poprzez REST API wymaga dwóch kroków:
- Utworzenie konta użytkownika
- Modyfikacja konta poprzez zmianę parametru” confirmed”
To pozwala nam uzyskać zgodność z wymaganiami RODO o świadomym udzieleniu przez użytkownika zgody na przetwarzanie jego danych osobowych.
Wbududowany mechanizm planisty (scheduler) pomoże nam automatycznie usunąć niepotwierdzone konta.
Implementacja „prawa do bycia zapomnianym”
Prawo do wykasowania danych, o którym mowa w art. 17, wymaga od administratora usunięcia danych osobowych bez zbędnej zwłoki, w ściśle określonych przypadkach.
Domyślnie istnieje możliwość usunięcia własnych danych przez samego użytkownika. Inne przypadki muszą być wdrażane w zależności od charakterystyki wykonywanej usługi. Zaprojektowanie odpowiednich procedur ułatwi architektura platformy, w tym system obsługi zdarzeń.
Rejestr dostępu do danych
Cricket wykorzystuje specjalną kategorię zdarzeń generowanych przez dostęp do danych użytkownika (CRUD). Wydarzenia te wraz z dedykowanym adapterem rejestratora (logger) służą do tworzenia zanonimizowanego pliku dziennika dostępu do danych. Elementy te można również wykorzystać do wdrożenia konkretnej, rozszerzonej polityki w zakresie tworzenia dziennika audytowego.
Eksport danych
Dane użytkownika można wyeksportować jako plik w formacie JSON przy użyciu interfejsu REST API. Zalogowany użytkownik może to zrobić w każdej chwili bez pomocy administratora.
Przykłady użycia
Sposób rejestrowania użytkownika oraz dostępu do danych za pomocą REST API serwisu zbudowanego przy użyciu Cricket Microservices Framework możemy prześledzić na poniższych przykładach. Wykorzystamy do tego celu mikroserwis działający lokalnie na porcie 8080 oraz program cURL jako klienta REST API.
Jeśli mamy zainstalowanego Dockera, to najprościej będzie użyć gotowego kontenara z serwisem „Microsite” platformy Cricket.
Mając uruchomiony serwis, możemy przystąpić do testów.
- Generujemy token sesji dla użytkownika admin
- Rejestrujemy użytkownika z nazwą/loginem user1
- Administrator ma dostęp do danych każdego użytkownika. Korzystając z jego tokena możemy pobrać dane każdego użytkownika
- Zarejestrowany użytkownik nie ma dostępu do systemu (nie może pobrać tokenu sesji), dopóki nie potwierdzi rejestracji (wyrazi zgody na przetwarzanie danych osobowych)
- Administrator może potwierdzić zgodę użytkownika na przetwarzanie danych osobowych (zakładamy, że taką zgodę uzyskał)
- Po potwierdzeniu rejestracji użytkownik może się zalogować i uzyskać token sesji, a następnie pobrać swoje dane
- Jednakże próba pobrania danych innego użytkownika kończy się niepowodzeniem
Podsumowanie
W miarę uświadamiania sobie przez użytkowników aplikacji ich obowiązków wynikających z RODO, możemy coraz częściej spotykać się z pytaniami o zgodność naszych aplikacji z Rozporządzeniem. Warto się na nie przygotować analizując juz istniejące rozwiązania i odpowiednio projektując kolejne.
Grzegorz Skorupa
Posiada ponad 20 letnie doświadczenie w branży IT. Programy w języku Java tworzy niezmiennie od 20 lat, z przerwami na zarządzanie projektami IT i zespołami.
Współzałożyciel i dyrektor ds. Badań i Rozwoju w Signocom Sp. z o.o., koncentrującej się na tworzeniu kompleksowych rozwiązań dla Internetu Rzeczy.
Inicjator łódzkiej społeczności The Things Network, mającej na celu budowę otwartej i powszechnie dostępnej sieci LoRaWAN.
IT-Leaders.pl – to platforma rekrutacyjna dla sektora IT, która odwraca tradycyjne role: Kandydat – Rekruter. Szybki sposób kojarzenia kandydatów z pracodawcami i z góry znane oczekiwania finansowe sprawiają, że strony nie tracą czasu na rozmowy z niedopasowanymi firmami czy kandydatami.
Wystarczy, że raz założysz konto, określisz oczekiwania finansowe a pracodawcy sami będą do Ciebie aplikować.
Zmieniamy zasady gry. To Ty wybierasz pracodawcę!
www.it-leaders.pl