Forma: standardowe klauzule umowne Komisji Europejskiej, z wypełnionymi załącznikami.
O niniejszej umowie
Komisja Europejska przyjęła klauzule wzorcowe dla relacji między administratorem a podmiotem przetwarzającym: decyzja wykonawcza (UE) 2021/915 z dnia 4 czerwca 2021 r., wydana na podstawie art. 28 ust. 7 RODO. Przejmujemy te klauzule w całości, zamiast pisać własne.
Oznacza to dla Ciebie dwie rzeczy. Klauzule zostały przyjęte przez samą Komisję, spełniają więc wymogi art. 28. A Twój dział prawny rozpozna ten tekst i nie musi oceniać go wiersz po wierszu.
Praca merytoryczna znajduje się w załącznikach. Decyzja wymaga konkretnego opisu środków bezpieczeństwa; opis ogólny nie wystarcza. Dlatego załącznik III jest opisem tego, co system faktycznie robi.
Umowa
Strony
| Administrator | Klient, zgodnie z załącznikiem I |
| Podmiot przetwarzający | Outflanq B.V., Boekweitstraat 62, 2153 GL Nieuw-Vennep, Holandia, rejestr handlowy (KvK) 42160759, numer VAT NL869980646B01 |
Artykuł 1: Co ma zastosowanie
Do przetwarzania danych osobowych, które podmiot przetwarzający wykonuje w imieniu administratora, mają w całości zastosowanie standardowe klauzule umowne z załącznika do decyzji wykonawczej (UE) 2021/915. Klauzule te stanowią część niniejszej umowy, tak jakby zostały w niej w całości przytoczone.
Artykuł 2: Wybory dokonane w ramach tych klauzul
- Korzystanie z podprocesorów (klauzula 7.7): ogólna zgoda pisemna. Podmiot przetwarzający utrzymuje aktualną listę z załącznika IV i zgłasza zamierzoną zmianę co najmniej trzydzieści dni wcześniej. Administrator może w tym terminie zgłosić sprzeciw; jeżeli strony nie dojdą do porozumienia, może wypowiedzieć umowę ze skutkiem na dzień wejścia zmiany w życie.
- Po zakończeniu przetwarzania (klauzula 8.5): podmiot przetwarzający usuwa dane osobowe, chyba że administrator przed końcem umowy zwróci się pisemnie o ich zwrot. Pełny eksport klient może w każdej chwili pobrać samodzielnie w aplikacji.
- Zgłaszanie naruszenia (klauzula 9): podmiot przetwarzający zgłasza naruszenie ochrony danych osobowych bez zbędnej zwłoki, najpóźniej w ciągu 24 godzin od powzięcia o nim wiadomości, wraz z informacjami dostępnymi w tym momencie; brakujące informacje przekazuje niezwłocznie po ich uzyskaniu.
- Prawo właściwe i właściwość sądu (klauzule 12 i 13): prawo holenderskie, sąd właściwy: sąd w Noord-Holland (Rechtbank Noord-Holland).
Artykuł 3: Audyty (klauzula 7.6)
Administrator może kontrolować przestrzeganie umowy. Odbywa się to w pierwszej kolejności na podstawie informacji przekazanych przez podmiot przetwarzający. Kontrola na miejscu jest możliwa, najwyżej raz w roku, zapowiedziana z rozsądnym wyprzedzeniem, w godzinach pracy i w sposób niezakłócający usługi dla innych klientów. Koszty kontroli, która nie wykaże uchybienia, ponosi administrator.
Załącznik I: Strony
| Administrator | Podmiot przetwarzający | |
|---|---|---|
| Nazwa | klient zarejestrowany w koncie (nazwa firmy) | Outflanq B.V. |
| Adres | adres rozliczeniowy zarejestrowany w koncie, gdy tylko będzie znany | Boekweitstraat 62, 2153 GL Nieuw-Vennep, Holandia |
| Osoba kontaktowa | administrator konta | Prywatność: [email protected] |
| Rola | Administrator | Podmiot przetwarzający |
| Działalność | Korzystanie z priceq do monitoringu cen i ustalania cen | Dostarczanie priceq |
Niniejsza umowa nie jest podpisywana odręcznie. Zostaje zawarta w chwili, gdy klient wyraża zgodę przy rejestracji. Odnotowujemy przy tym: który dokument, którą wersję, odcisk (SHA-256) tekstu w postaci wyświetlonej w tym momencie, czas, adres IP i przeglądarkę. Kto chce własny podpisany egzemplarz, występuje o niego pod adresem kontaktowym podanym na stronie /legal/bedrijfsgegevens.
Załącznik II: Opis przetwarzania
Osoby, których dane dotyczą
Pracownicy administratora posiadający konto w aplikacji oraz osoby, z którymi administrator kontaktuje się za pośrednictwem aplikacji w imieniu organizacji.
Kategorie danych osobowych
- Imię i nazwisko oraz służbowy adres e-mail
- Rola w organizacji (administrator, przełożony, pracownik, czytelnik)
- Skrót hasła wyliczony algorytmem Argon2id oraz numer wersji pozwalający unieważnić sesję
- Ustawienia osobiste: język, sposób wyświetlania, otrzymywane powiadomienia
- W dzienniku audytu: identyfikator użytkownika, czas, czynność, adres IP i przeglądarka oraz dane, których czynność dotyczyła, na przykład adres e-mail osoby zaproszonej
- Czas i adres IP ostatniego logowania
- Informacja, czy wiadomość e-mail wysłana na dany adres wróciła jako niedoręczalna: czas oraz powód podany przez serwer pocztowy odbiorcy
Szczególne kategorie danych
Brak. Usługa nie jest do tego przystosowana i nie ma pola, w którym by się zmieściły.
Co wyraźnie nie jest danymi osobowymi
Ceny, dostępność i oznaczenia produktów pobierane z publicznych stron sklepów oraz katalog dostarczony przez klienta. Są to dane rynkowe i produktowe. Nie są objęte niniejszą umową i wymieniono je tu wyłącznie dla uniknięcia nieporozumień.
Charakter i cel przetwarzania
Udzielanie dostępu do aplikacji, przydzielanie uprawnień, wysyłanie powiadomień i podsumowań ustawionych samodzielnie przez użytkownika, zabezpieczanie usługi (ograniczanie logowań, zarządzanie sesjami, dziennik audytu) oraz usuwanie awarii.
Czas trwania
Na czas trwania umowy. Po zakończeniu dane osobowe są anonimizowane przy zamykaniu akt, najpóźniej trzydzieści dni po zakończeniu. Jeżeli administrator po stronie klienta sam wystąpi w aplikacji o usunięcie, rozpoczyna się najpierw trzydziestodniowy okres do namysłu, w którym konto nadal działa, a wniosek można wycofać; następnie dane są kasowane. Wcześniejsze skasowanie następuje na wyraźne żądanie administratora.
Dziennik audytu ma własny termin: każdy wiersz jest usuwany automatycznie dwanaście miesięcy po jego zapisaniu, także jeśli umowa zakończyła się wcześniej. Do tego czasu zawarte w nim dane osobowe pozostają zachowane, ponieważ dziennik służy właśnie temu, by można było później ustalić, co się wydarzyło.
Częstotliwość
W sposób ciągły, tak długo, jak aplikacja jest używana.
Załącznik III: Środki techniczne i organizacyjne
Opisane konkretnie, zgodnie z wymogiem decyzji.
Rozdzielenie klientów Baza danych wymusza dla każdego wiersza przynależność danej do konkretnego klienta (row-level security), w każdej tabeli z danymi klientów, z jednym świadomym wyjątkiem: tabelami kont użytkowników oraz kodów jednorazowych do zaproszeń i resetu hasła. Te są przy logowaniu wyszukiwane po adresie e-mail, zanim wiadomo, do którego klienta dana osoba należy. Tam rozdzielenie zapewnia aplikacja: każde konto należy do dokładnie jednego klienta, a aplikacja wyszukuje konta po numerze klienta lub numerze użytkownika z zalogowanej sesji, nigdy po numerze z żądania. Aplikacja dodatkowo filtruje jawnie, a przy każdej zmianie w łańcuchu budowania uruchamiany jest test, który próbuje pobrać dane innego klienta; jeżeli ta próba się powiedzie, zmiana nie przechodzi. Aplikacja działa z rolą bazodanową, która nie może obejść tego rozdzielenia. Także klucze pamięci podręcznej i ścieżki składowania są rozdzielone per klient.
Dostęp i uwierzytelnianie Hasła są przechowywane w postaci skrótu Argon2id. Dostępne jest uwierzytelnianie dwuskładnikowe. Hasła są przy ustawianiu sprawdzane wobec haseł znanych z wycieków. Powtarzające się nieudane próby logowania są blokowane. Sesje można natychmiast unieważnić dla poszczególnego użytkownika. Uprawnienia podzielono na cztery role; najpoważniejsze czynności (pełny eksport, zmiana abonamentu, usunięcie konta) są zastrzeżone dla administratora.
Podgląd konta klienta Na potrzeby wsparcia pracownik podmiotu przetwarzającego może zobaczyć aplikację tak, jak widzi ją klient. Jest to możliwe wyłącznie z jego własnego zalogowanego konta (nie z kluczem systemowym) i dopiero po podaniu powodu. Powód jest zapisywany i pokazywany klientowi. Taka sesja jest tylko do odczytu: serwer odmawia wykonania każdej czynności zmieniającej cokolwiek, niezależnie od otwartego ekranu. Trwa trzydzieści minut i nie można jej przedłużyć; kto potrzebuje więcej czasu, zaczyna od nowa i ponownie zapisuje powód. W dzienniku pracownik pozostaje sobą: to, co robi, nigdy nie jest przypisywane pracownikowi klienta. Cztery ekrany pozostają zamknięte także podczas podglądu: lista członków zespołu, dziennik aktywności, pełny eksport i klucze API.
Poufność w trakcie przesyłania i przechowywania Cały ruch odbywa się przez TLS. Serwery nie są dostępne bezpośrednio z internetu. Kopie zapasowe przechowywane są w postaci zaszyfrowanej.
Dostępność i odtwarzanie Każdej nocy wykonywana jest pełna kopia zapasowa i zapisywana w postaci zaszyfrowanej do magazynu obiektowego, w ścieżkach rozdzielonych per klient. Szyfrowanie następuje przed zapisem, tak że dostawca składowania otrzymuje wyłącznie szyfrogram. Procedura odtwarzania jest opisana i testowana; data i wynik ostatniego testu są dostępne na żądanie.
Rejestrowanie i możliwość kontroli Czynności dotyczące kont i dostępu (zaproszenie kogoś, wycofanie zaproszenia, zmiana roli, dezaktywacja lub ponowna aktywacja konta oraz rozpoczęcie podglądu przez pracownika podmiotu przetwarzającego) są zapisywane w dzienniku audytu, którego aplikacja nie może zmienić ani usunąć. Ograniczenie to jest wymuszone na poziomie bazy danych: aplikacja nie ma prawa zmieniać ani usuwać wierszy dziennika. Wiersze starsze niż dwanaście miesięcy usuwa odrębne zadanie konserwacyjne, dysponujące własną rolą bazodanową. Klient może samodzielnie przeglądać dziennik w aplikacji.
Wiersz dotyczący sesji podglądu zawiera powód, czas i moment wygaśnięcia dostępu i jest zapisywany zanim dostęp zostanie udzielony: jeżeli ten zapis się nie powiedzie, podgląd nie następuje. Sesja podglądu bez wiersza w dzienniku zatem nie istnieje.
Bezpieczeństwo wytwarzania oprogramowania Kod źródłowy znajduje się w prywatnym repozytorium. Przy każdej zmianie uruchamiane są automatyczne kontrole: sekretów w kodzie, znanych podatności w zależnościach oraz wspomniany wyżej test rozdzielenia. Sekrety przechowywane są w sejfie kluczy, a nie w kodzie.
Monitorowanie błędów Aplikacja zgłasza błędy do zewnętrznej usługi w regionie UE. Jest ona skonfigurowana tak, aby nie przesyłać żadnych danych osobowych ani treści żądań.
Dostęp do środowiska produkcyjnego Ograniczony do administratora podmiotu przetwarzającego, przez sieć prywatną, z uwierzytelnianiem kluczem. Czynności wykonywane bezpośrednio na środowisku produkcyjnym są zapisywane po fakcie.
Usuwanie Przy zamykaniu konta dane użytkowników są anonimizowane, a wszystkie klucze i tokeny usuwane. Dziennik audytu nie jest przy tym zmieniany: wiersze pozostają wraz z zawartymi w nich danymi osobowymi (identyfikator użytkownika, adres IP, przeglądarka oraz na przykład adres e-mail osoby zaproszonej), dopóki nie osiągną dwunastu miesięcy i nie zostaną usunięte automatycznie.
Załącznik IV: Podprocesorzy
Podmioty, które przy wykonywaniu umowy mogą przetwarzać dane osobowe:
| Podprocesor | Do czego | Dane | Lokalizacja | Przekazywanie |
|---|---|---|---|---|
| Hetzner Online GmbH | Hosting aplikacji, bazy danych i zadań w tle | Wszystkie dane z załącznika II | Norymberga, Niemcy | W obrębie UE |
| Cloudflare, Inc. | DNS, tunel dostępowy, ochrona przed nadużyciami, przechowywanie zaszyfrowanej kopii zapasowej | Dane o ruchu (adres IP, przeglądarka, żądany adres URL) oraz zaszyfrowana kopia zapasowa | Sieć globalna; spółka amerykańska | Standardowe klauzule umowne oraz Ramy Ochrony Danych UE-USA |
| Backblaze, Inc. (B2) | Kopia nocnej kopii zapasowej poza siedzibą | Wyłącznie zaszyfrowana kopia zapasowa bazy danych; klucz pozostaje u podmiotu przetwarzającego | Stany Zjednoczone | Standardowe klauzule umowne |
| AhaSend B.V. | Wysyłka poczty: powiadomienia i podsumowania, zaproszenia, wiadomości potwierdzające i resetujące hasło | Imię i nazwisko oraz adres e-mail odbiorcy, treść wiadomości | Amsterdam, Holandia; przetwarzanie na terenie EOG | Na terenie EOG |
| Functional Software, Inc. (Sentry) | Monitorowanie błędów | Techniczne dane o błędach; skonfigurowane bez danych osobowych i bez treści żądań | Region UE, Niemcy | W obrębie UE |
Ci sami podprocesorzy, opisani szczegółowo dla każdego podmiotu, znajdują się na liście podprocesorów.
Odcisk tego tekstu (SHA-256): 9323aa657749b6a551e82d6db4c7f36c8b7f01670ba3aefa681f97ba6e7067dc