Bezpieczeństwo było dla naszej firmy najważniejszą kwestią przy tworzeniu projektu platformy Akademia Korbank.
Architektura platformy jest dwuelementowa – składa się z niezależnego od siebie frontendu oraz backendu. Frontend jest aplikacją służącą do zarządzania użytkownikami. Od strony aplikacji, frontend jest wyreparowaną aplikacją Ruby on rails, działającą w izolowanym i nieuprzywilejowanym kontenerze dockera. Oznacza to, że każdy podmiot podpisujący z nami umowę, uzyskuje osobną instancję, w której jedynym utworzonym kontem jest użytkownik administracyjny, którego dostęp zabezpieczony jest generowanym hasłem losowym o długości od 12 do 64 bitów za pomocą protokołu openssl. Proces ten jest automatyzowany, administrator serwera czy informatyk inicjujący konta nie ma domyślnie wglądu w generowane hasło. Dodatkowo, zalecamy, żeby osoba administrująca po pierwszym logowaniu hasło to zmieniła, zanim system zostanie uruchomiony do produkcji. Hasła przechowywane są w bazie postgres w wersji 9.5, i są hashowane algorytmem blowfish ze 128 bitowym mechanizmem salt, czyli najsilniejszym możliwym dla biblioteki postgres pgcrypt.
Brak uprzywilejowania kontenerów z frontendem oznacza, że ewentualne odkrycie luki typu 0-day i wyeksploatowanie jej przez atakującego kończy się na rzeczonym kontenerze, atakujący nie jest w stanie eskalować uzyskanych uprawnień do dostępu do serwera a tym samym, nie ma możliwości pobrania plików bazy danych, ponieważ baza postgresa uruchomiona jest w osobnym kontenerze oraz zabezpieczona osobnymi hasłami dostępowymi.
Dostęp do frontendu za pomocą sieci, zabezpieczany jest standardowo protokołem SSL za pomocą protokołu let’s encrypt, który jest po pierwsze najefektywniejszy kosztowo (czyli darmowy), po drugie zapewnia dobre mechanizmy automatyzacji odnowienia certyfikatu – certyfikaty generowane są standardowo na okres nie dłuższy niż 3 miesiące, co uniemożliwia efektywne złamanie szyfrowania RSA nawet za pomocą bardzo dużego klastra (botnetu) komputerów deszyfrujących w tym przedziale czasu.
Tym samym protokołem SSL, lecz na osobnych certyfikatach zabezpieczona jest komunikacja frontendu z backendem.
Backend jest w istocie bardzo dużą biblioteką API, która przetwarza określone wywołania opakowane dla użytkownika końcowego w aplikację http opartą na tomcat7 oraz w backendzie na komponentach służących do przetwarzania mediów strumieniowych biblioteką WebRTC.
Każde zapytanie do bazy danych jest weryfikowane za pomocą 64bitowego unikalnego dla każdej instytucji klucza API. Uniemożliwia to generowanie zapytań obiektom nieuprawnionym. Podpisywane kluczem jest każde zapytanie czyli np. pojedyncze żądanie uruchomienia strumienia audio/video dla pojedynczego użytkownika, każdy wpis na chacie etc.
Sesje z pokojów mogą być rejestrowane, przez uprawnionych do tego użytków co oznacza, że mogą oni po zakończeniu spotkania, przeglądać zawartość odtwarzając ją jak film. Plki składowane są po stronie backendu. W ramach dobrej praktyki, zasoby te szyfrowane są protokołem LUKS, co uniemożliwia odczyt danych z sesji osobie, która weszłaby w fizyczne posiadanie serwera np. drogą kradzieży. Mamy możliwość implementacji czyszczenia sesji wraz z jej zakończeniem poprzez bezpieczne usuwanie tych zasobów czyli danych blokowych z metadanymi systemu plików czyli inodeów.
Całość implementujemy na serwerach linuxowych z dystrybucjami o aktywnym wsparciu dla poprawek bezpieczeństwa z mechanizmem automatycznego aktualizowania ich z upstreamu.
W odróżnieniu od rozwiązań w chmurze proponowanych przez większość konkurencyjnych platform oferujemy możliwość implementacji typu on-premise, czyli na infrastrukturze klienta. Pozwala to na przekazanie odpowiedzialności za zabepieczenie sieci podmiotowi, który wdraża nasze rozwiązanie. Pozwala to na wspomniane na początku maila wdrożenie na prywatnych zasobach IP. Dzięki temu, serwer może być całkowicie izolowany i odcięty od jakiegokolwiek dostępu z internetu w taki sposób, w jaki budowane są intranety dla banków czy systemów energetycznych.
Na życzenie Klienta podpisujemy z nim Umowę powierzenia danych osobowych.