Bezpieczeństwo w KODA.ai
Wprowadzenie
Jako KODA.AI stosujemy najlepsze praktyki w zakresie bezpieczeństwa danych i aplikacji, aby zapewnić najwyższą jakość naszych usług i bezpieczeństwo danych w połączeniu z wysoką satysfakcją naszych klientów. Dbamy o standardy bezpieczeństwa w wielu różnych dziedzinach i procesach w naszej firmie. Szczególnie dbamy o:
- system zarządzania dostępem dla naszych pracowników oparty na różnych uprawnieniach
- bezpieczną komunikację i transfer danych wewnątrz firmy i infrastrukturę naszej platformy
- bezpieczną wymianę danych z naszymi klientami i ich infrastrukturą lub aplikacjami
- tworzenie oprogramowania i testowanie procesów
- backupy i procedury odtwarzania po awarii
Ochrona danych i kontrola dostępu do infrastruktury
Aby zapewnić kontrolę bezpieczeństwa wdrożyliśmy:
- proces zatwierdzania dostępu do zasobów informacyjnych i aplikacji,
- mechanizmy odpowiedniej weryfikacji tożsamości użytkowników uzyskujących dostęp do infrastruktury lub danych (unikalne identyfikatory użytkowników i silne hasła, uwierzytelnianie dwuskładnikowe mechanizmy),
- proces wyszczególniający odpowiednie role i obowiązki (kto może żądać modyfikacji dostępu, kto może zatwierdzać wnioski o dostęp itp.),
- regularne i systematyczne przeglądy praw dostępu przeprowadzane w celu zapewnienia ciągłej ważności i dokładności,
- odpowiednie mechanizmy szyfrowania w celu ochrony poufnych lub wrażliwych danych,
- zdefiniowane procesy opisujące transfer danych pomiędzy oferowanymi rozwiązaniami.
Ustanawiamy wszelkie niezbędne i odpowiednie zabezpieczenia, rejestracje, umowy i kontrole w związku z przetwarzaniem danych i zawsze stosujemy najlepsze praktyki branżowe w odniesieniu do przetwarzania danych.
Zapewniamy staranny dobór oraz rzetelność i kompetencje naszych pracowników, którzy mają dostęp do danych. Nasi pracownicy są informowani o poufnym charakterze danych i podlegają umowom o zachowaniu poufności i są zobowiązani do niewykorzystywania danych do innych celów niż wymagane do wykonania swoich obowiązków lub do nietworzenia kopii i/lub duplikatów danych, z zastrzeżeniem kopii zapasowych oraz w celu zapewnienia zgodności z ustawowym obowiązkiem przechowywania.
Centra danych
Aby zapewnić fizyczne bezpieczeństwo, wszystkie usługi i dane są przechowywane w Google Cloud Platform, która oferuje chronioną lokalizację hostingu przed nieautoryzowanym dostępem za pomocą fizycznej kontroli dostępu. GCP zapewnia również zasilacze awaryjne UPS, zapasowe generatory i inne urządzenia zabezpieczające, takie jak detektory ognia i gaśnice itp.
Obecnie wszystkie serwery, komponenty i usługi znajdują się w dwóch strefach w UE (Niemcy, Belgia).
Logi i monitoring
Automatycznie analizujemy logi:
- ruchu sieciowego,
- aplikacji,
- usług chmurowych,
- dostępu pracowników do infrastruktury i aplikacji,
- zautomatyzowanych procesów wdrażania oprogramowania.
System monitoringu automatycznie informuje nas o błędach i anomaliach w tych obszarach.
Aby zapewnić dostępność informacji w celu zbadania naruszeń bezpieczeństwa, dostęp do narzędzi audytu systemu jest ograniczony do niezbędnego minimum, np. programiści, którzy utrzymują produkcyjne bazy danych. Dzienniki systemowe służą również do ułatwienia dochodzenia i monitorowania kontroli dostępu.
Kopie bezpieczeństwa
Aby sprostać wymogom dostępności hostowanej aplikacji/danych oraz zapewnić odpowiednie procesy i środki techniczne, zapewniliśmy:
- regularne kopie zapasowe aplikacji oraz kopie danych konfiguracji naszej infrastruktury w środowiskach GCP,
- fizyczne środki bezpieczeństwa w miejscu przechowywania kopii zapasowych – zapewnia to Google Cloud Platform i Microsoft Azure,
- zdefiniowany okres przechowywania,
- planu odtwarzania kopii zapasowych w celu kontynuowania lub wznowienia operacji terminowo w przypadku przerw lub awarii,
- regularnie testuje scenariusze odtwarzania po awarii w celu zapewnienia skuteczności.
Bezpieczeństwo infrastruktury
Nasza platforma oparta jest na modelu serverless. Oznacza to, że Google Cloud Platform zapewnia aktualizacje zabezpieczeń i bezpieczną konfigurację usług. GCP zapewnia również dodatkowe narzędzia zwiększające bezpieczeństwo infrastruktury i aplikacji.
Wszystkie usługi platformy wykorzystują bezpieczną sieć prywatną do komunikacji wewnętrznej.
Usługi używają określonych ról uprawnień do autoryzacji swoich żądań. Nie używamy haseł itp. Cała wewnętrzna komunikacja między mikroserwisami opiera się na autoryzacji za pomocą tokenów okaziciela.
Przychodzący i wychodzący ruch sieciowy platformy jest monitorowany i analizowany przez usługi GCP, takie jak Cloud Firewall i WAF – Google Cloud Armory.
Google Cloud Platform zapewnia dla naszych usług techniczne środki bezpieczeństwa w celu ochrony systemów, a tym samym informacji przed złośliwym oprogramowaniem, włamaniami do sieci lub systemu, takie jak:
- ochrona antywirusowa w celu zapobiegania procesom złośliwego oprogramowania ,
- stosowanie łatek w celu złagodzenia podatności w środowisku technicznym,
- środki wykrywania prób nieautoryzowanego dostępu elektronicznego do systemów wykorzystywanych do obsługi rozwiązań i informacji,
- odpowiednie środki bezpieczeństwa sieci (zapory sieciowe monitorujące granice sieci itp.), które podlegają regularnym procedurom kontrolnym w celu zatwierdzania, monitorowania, kontrolowania i odwoływania zdalnego dostępu do hostów.
Wszelkie systemy i aplikacje są odpowiednio zabezpieczone przed nieuprawnionym dostępem lub modyfikacją zawartości lub wyglądu serwisu, serwery WWW obsługujące aplikacje internetowe rejestrują aktywność w serwisie.
Wszystkie przesyłane poufne dane są chronione przed ujawnieniem informacji za pomocą metod szyfrowania, takich jak SSL, SFTP i FTP przez połączenia prywatne lub VPN.
Usługi zapewniają mechanizmy uniemożliwiające przeglądanie przez przeglądarkę kodu źródłowego plików wykonywalnych i skryptów po stronie serwera, a także katalogi plików na serwerach internetowych nie są indeksowane ani dostępne bezpośrednio.
Systemy są testowane w celu zapewnienia, że sytuacje błędów i wyjątki są prawidłowo obsługiwane, w tym przeprowadzane są testy podatności.
Serwery internetowe obsługujące aplikacje internetowe działają z najmniejszymi uprawnieniami.
Serwery internetowe obsługujące aplikacje internetowe są regularnie sprawdzane, aby upewnić się, że wszystkie niepotrzebne oprogramowanie, usługi sieciowe i/lub aplikacje zostały usunięte.
W przypadku skanowania podatności warstwy aplikacji i testów penetracyjnych przeprowadzonych w celu upewnienia się, że oprogramowanie nie zawiera podatności, używamy skanera bezpieczeństwa sieci Web dostarczanego przez GCP.
Nasza aplikacja w pełni obsługuje mechanizm CORS i pozwala tylko na konkretne hosty listy.
Wszystkie dane uwierzytelniające są przechowywane jako skróty. Używamy funkcji bcrypt do generowania skrótów uwierzytelniających.
Do obsługi uwierzytelniania używamy tylko tokenów okaziciela (OAuth2). Nie używamy plików cookie, aby zapewnić ochronę sesji aplikacji internetowych przed przejęciem lub klonowaniem, zapewniając, że identyfikatory sesji nie są łatwe do przewidzenia. Dzięki temu nasze interfejsy do zewnętrznych systemów klientów zapewniają mechanizmy uwierzytelniania pochodzenia, integralności i poufności.
Rozwój i testowanie
Wszystkie zmiany systemowe są odpowiednio dokumentowane, oceniane pod kątem wpływu i odpowiednio testowane (testy jednostkowe, testy integracyjne, testy obciążeniowe, testy funkcjonalne), podczas gdy testy systemowe obejmują różne rodzaje scenariuszy wycofywania, aby powrócić do poprzedniej wersji w przypadku zmiana nie powiodła się.
Używamy git jako systemu kontroli wersji kodu aplikacji, a także skryptów do budowania infrastruktury. Wszystkie zmiany są wdrażane automatycznie za pomocą procesów CI/CD.
Integralność systemu przed nieautoryzowanymi zmianami jest wymagana przez formalne procesy zarządzania zmianami, a także jest używana do zarządzania zmianami w aplikacjach i systemach, fizycznie i logicznie oddzielonych środowiskach.
Aby odizolować środowiska/aplikacje/dane od siebie, wszystkie usługi są hostowane jako oddzielne projekty w Google Cloud Platform.
Kontrola dostępu
- Mechanizmy kontroli dostępu zaimplementowane w aplikacji egzekwują zasadę ograniczonego dostępu – „wszystko, co nie jest wyraźnie dozwolone, jest zabronione”. Tym samym, skutecznie blokują dostęp użytkowników do wszystkich chronionych usług, funkcji, danych i obiektów (plików, katalogów, danych w bazie danych, URL) z wyłączeniem tych, do których posiadają przyznane uprawnienia.
- Mechanizmy kontroli dostępu zaimplementowane w aplikacji wymuszają ustalone reguły przepływu pracy w aplikacji (przyjęta kolejność realizacji zadań) oraz nałożone limity (wielkość załącznika, ilość operacji, ilość transakcji, ilość zmian, itp.).
- Stosowania zasady minimalnych uprawnień, czyli możliwość przydzielania użytkownikom wyłącznie tych uprawnień, które są im niezbędne do wykonywania niezbędnych działań.
- Aplikacja loguje zdarzenia dotyczące kontroli dostępu.
- Dostęp do części administracyjnej aplikacji i części zarządzania treścią merytoryczną aplikacji jest zabezpieczony poprzez politykę i wymuszenie użycia silnych haseł oraz dodatkowej weryfikacji typu 2FA.
- Do autoryzacji wszystkich operacji wykorzystywane są tokeny OAuth2.
- Wszystkie informacje i pliki konfiguracyjne związane z bezpieczeństwem aplikacji są przechowywane w miejscach chronionych przed nieautoryzowanym dostępem.
- Aplikacja posiada mozliwość autoryzacji przez SSO.
- Nieaktywne konta po 90 dniach zostają automatycznie deaktywowane.
Identyfikacja i uwierzytelnianie
- Wszyscy użytkownicy aplikacji lub procesy wykonywane w imieniu tych użytkowników przechodzą proces uwierzytelnienia.
- Wszystkie funkcje operujące na czynnikach uwierzytelniania danej tożsamości (np. rejestracja, aktualizacja profilu, przypomnienie loginu/hasła), które mogą przywrócić dostęp do konta są co najmniej tak odporne na ataki jak główny mechanizm uwierzytelniający.
- Istnieją mechanizmy pozwalające na zarządzanie informacjami uwierzytelniającymi, tj. nadawanie, zmianę, blokowanie, czas życia i przechowywanie konta.
- Istnieją mechanizmy zapewniające kontrolę sesji uwierzytelnionego użytkownika (np. zamykanie nieaktywnych sesji po określonym czasie).
- Dane uwierzytelniające nie są nigdy zaszywane (ang. hardcoding) w kodzie aplikacji lub przekazywane w parametrach adresu URL.
- Aplikacja posiada mechanizm ochrony przez atakami siłowymi (ang. brute-force) na dane uwierzytelniające, blokujący kolejne próby uwierzytelnienia na zdefiniowany okres czasu.
- Aplikacja wykrywa oraz blokuje próby zautomatyzowanego logowania się na konta użytkowników z jednym hasłem (tzw. bruteforce horyzontalny).
- Wszystkie pola służące do wprowadzania haseł nie pokazują haseł użytkowników w czasie ich wpisywania.
Kryptografia
- Transmisja informacji wrażliwych przekazywanych za pośrednictwem publicznych sieci odbywa się wyłącznie w postaci zaszyfrowanej i tylko z wykorzystaniem protokołów komunikacji zapewniających wysoki poziom poufności.
- Dane wrażliwe nie są nigdzie przechowywane w postaci jawnej. System zapewnia kryptograficzne środki ochrony przechowywanych danych wrażliwych.
- Dane są przechowywane na szyfrowanych partycjach co chroni przed fizyczną utratą dysków z serwera i kradzieżą danych w ten sposób.
- Szyfrowane są hasła i dane związane z dostępem do platformy oraz jej składowych.
- Aplikacja WWW udostępniona w sieci Internet (szczególnie służąca do komercyjnego udostępniania usług) stosuje certyfikaty SSL wystawione przez zewnętrzne zaufane centrum certyfikacji.
- Podejrzanie zwiększona ilość zapytań informacyjnych lub zapytań wywołujących krytyczne transakcje jest blokowana.
- Obsługa protokołu HTTP/HTTPS następuje zgodnie z najlepszymi praktykami bezpieczeństwa (np. ustawianie wymaganych nagłówków HTTP oraz ich atrybutów, konfiguracja protokołu TLS).