Przejdź do treści
Bezpieczeństwo i prywatność

Izolacja egzekwowana przez bazę danych, a nie przez kod aplikacji.

Każde żądanie, które coś zmienia, jest autoryzowane trzy razy, w trzech miejscach zawodzących niezależnie od siebie. Za nimi stoi 868 polityk bezpieczeństwa na poziomie wierszy, więc błąd w obsłudze żądania jest błędem, a nie wyciekiem danych. Ta strona jest napisana dla osoby, która musi nas zaakceptować.

W skrócie

Jak Lurno chroni dane jednej organizacji przed drugą

Lurno autoryzuje każde żądanie zmieniające dane w trzech niezależnych miejscach. Interfejs sprawdza uprawnienie, zanim wyrenderuje kontrolkę. Serwer weryfikuje to samo uprawnienie, zanim dotknie danych, i odmawia, jeśli odpowiedź brzmi „nie”. Baza danych stosuje politykę bezpieczeństwa na poziomie wierszy, która decyduje, jakie wiersze zapytanie może w ogóle zwrócić. Wszystkie trzy muszą przepuścić żądanie. Takich polityk jest 868 w 676 migracjach, a tabele aplikacji znajdują się w 14 schematach dziedzinowych, a nie w domyślnym schemacie publicznym, więc wiersze jednej organizacji pozostają nieosiągalne z sesji innej organizacji nawet wtedy, gdy kod nad nimi jest błędny. Zmiany administracyjne trafiają do rejestru audytowego, do którego można wyłącznie dopisywać, a którego wiersze są powiązane łańcuchem SHA-256 i dają się zweryfikować zapytaniem. Augmental Learning Inc. działa zgodnie z praktykami ISO 27001; nie ma certyfikatu ISO 27001 ani raportu SOC 2 i mówimy o tym w ankiecie, zamiast pozwolić kupującemu zakładać coś innego.

Autoryzacja w trzech bramkach
Model, w którym jedno żądanie jest autoryzowane trzy razy, przez trzy mechanizmy zawodzące niezależnie od siebie. Bramka pierwsza to interfejs: ukrywa kontrolkę, do której zalogowana osoba nie ma uprawnienia. Bramka druga to serwer: obsługa żądania weryfikuje uprawnienie, zanim dotknie danych, i przerywa działanie, jeśli odpowiedź brzmi „nie”. Bramka trzecia to baza danych: polityka bezpieczeństwa na poziomie wierszy ogranicza, jakie wiersze może zwrócić zapytanie. Pierwsza bramka to wygoda, druga to podstawowa granica, a trzecia to ta, która wciąż działa, gdy drugą pominięto.
Architektura

Trzy bramki i to, co stoi za każdą z nich

Bramka po bramce

Jedno żądanie, autoryzowane trzy razy

Kontrolka w interfejsie pyta, czy zalogowana osoba ma dane uprawnienie, zanim się wyrenderuje. Obsługa żądania na serwerze weryfikuje to samo uprawnienie, zanim wykona jakąkolwiek pracę. Następnie baza danych stosuje politykę, która decyduje, jakie wiersze może zobaczyć zapytanie. Trzy mechanizmy, trzy osobne miejsca, w których trzeba mieć rację, a odmowa któregokolwiek z nich kończy żądanie.

  • Sprawdzenie w interfejsie to wygoda, a nie granica. Ukrywa przycisk; nie chroni tabeli.
  • Każde sprawdzenie przechodzi przez jeden katalog uprawnień i jedną funkcję. Żadna obsługa żądania nie odczytuje nazwy roli i nie decyduje samodzielnie, co ta rola oznacza.
  • Rola nadana na oddziale w drzewie organizacji spływa w dół tej gałęzi — a polityki bazy danych czytają to samo drzewo co interfejs, więc nie mogą się ze sobą rozminąć.
Jak zbudowane są organizacje i role
W bazie danych

868 polityk w 676 migracjach

Izolacja jest schematem, a nie konwencją. Tabele powstają z włączonym bezpieczeństwem na poziomie wierszy i politykami, które delegują decyzję do tej samej funkcji uprawnień, którą wywołuje serwer, a kontrola migracji szuka tabel, do których nadano dostęp bez stojącej za nim polityki. Ta liczba nie jest figurą marketingową — to odpowiedź bazy danych na pytanie, ile polityk egzekwuje.

  • Polityki nie wpisują własnej logiki w treść. Wywołują funkcję uprawnień, więc odpowiedź nie może rozminąć się z tym, co serwer zdecydował chwilę wcześniej.
  • Polityki zapisu mają klauzulę sprawdzającą obok klauzuli odczytu, więc wstawienie danych nie umieści wiersza w organizacji, do której zapisujący nie ma uprawnienia.
  • Tam, gdzie widok udostępnia dane osobowe, dostęp nadaje się kolumna po kolumnie. Uprawnienie nadane na całą tabelę po cichu zniosłoby ochronę na poziomie kolumn, więc go nie stosujemy.
Schematy

Czternaście schematów dziedzinowych, nigdy publiczny

Tabele aplikacji znajdują się w czternastu nazwanych schematach — jeden dla tożsamości i dostępu, jeden dla organizacji, jeden dla mediów i tak dalej. Nic, co ma znaczenie, nie leży w domyślnym schemacie publicznym, czyli w miejscu, w którym przypadkowo nadane uprawnienie albo zbyt pobłażliwe ustawienie domyślne najłatwiej ujawni dane. Prywatne media nie mają w ogóle polityk magazynu dla zalogowanych przeglądarek: każdy odczyt podpisuje serwer, który najpierw sprawdził wiersz właścicielski, i tak samo powstaje każde uprawnienie do wgrania pliku.

  • Tokeny jednorazowe — zaproszenia, resety hasła, odzyskiwanie konta — są przechowywane jako solone skróty. Surowy token pokazuje się raz, w wiadomości e-mail, i nigdy więcej.
  • Publiczna jest wyłącznie identyfikacja wizualna. Logo i favicon organizacji muszą wyrenderować się, zanim ktokolwiek się zaloguje; awatary i media lekcji nie muszą, więc pozostają podpisane.
Rozliczalność

Udowodnienie po fakcie, co się stało

Rejestr audytowy, którego nikt nie może sprawdzić, to plik z logami z lepszym marketingiem. Ten jest wyłącznie dopisywalny i ujawnia każdą manipulację, a sprawdzenie go to jedno zapytanie.

Rejestr wyłącznie do dopisywania

Zmiany administracyjne zapisujemy jako zdarzenia zawierające sprawcę, działanie, zasób, organizację oraz stan przed i po. Nic nie aktualizuje wiersza audytu. Ścieżka zapisu wyłącznie dopisuje.

Łańcuch skrótów SHA-256

Każde zdarzenie przechowuje skrót poprzedniego oraz własny skrót, oba nadawane przez wyzwalacz w bazie danych, a nie przez kod, który zdarzenie zapisał. Zmiana jednego wiersza sprawia, że wszystkie późniejsze skróty przestają się zgadzać.

Weryfikacja, którą można obejrzeć na żywo

Funkcja weryfikująca przechodzi przez łańcuch i wskazuje pierwszy wiersz, w którym się on urywa. Uruchomimy ją przy Państwu podczas przeglądu.

Przeglądy dostępu

Kto ma jaką rolę i w której organizacji — sprawdzane według harmonogramu, a nie dopiero w czasie audytu. Odebranie roli jest zdarzeniem audytowym jak każde inne.

Dwie osoby do rzeczy nieodwracalnych

Anonimizacja albo usunięcie osoby to najpierw wniosek, a potem osobne zatwierdzenie. Wnioskujący nie może zatwierdzić własnego wniosku i nikt nie może wskazać samego siebie.

Sesje, które można zakończyć

Zalogowana osoba może unieważnić swoje pozostałe sesje, a unieważniona sesja zostaje zablokowana przy najbliższym sprawdzeniu uprawnień, a nie dopiero wtedy, gdy jej token wygaśnie.

Prywatność

Od zgody do usunięcia danych, z zegarem przy każdym kroku

Każdy tenant jest administratorem danych swoich uczestników, a Lurno jest podmiotem przetwarzającym. Mechanizmy poniżej sprawiają, że ten podział jest realny, a nie tylko umowny.

  1. 01

    Zgoda z numerem wersji

    Każda polityka, na którą osoba wyraża zgodę, ma swoją wersję. Zmiana polityki unieważnia starą zgodę: osoba jest pytana ponownie, a to, na co i kiedy się zgodziła, zostaje zapisane. Przetwarzanie przez AI to osobna zgoda — po jej wycofaniu nic nie trafia do żadnego dostawcy.

  2. 02

    Wniosek o dostęp do danych jako kreator

    Administrator przechodzi przez wniosek krok po kroku, zamiast improwizować: identyfikuje osobę, której dane dotyczą, zbiera to, co platforma o niej przechowuje, i przygotowuje eksport. Przenoszalność oznacza format czytelny maszynowo — JSON i CSV, a nie plik PDF ze zrzutem ekranu.

  3. 03

    Retencja z datą końcową

    Dane osobowe mają harmonogram retencji dla każdej kategorii, zamiast domyślnie leżeć w nieskończoność. Nieaktywne konta, wygasłe zaproszenia i przeterminowane sesje mają datę, po której przestają istnieć.

  4. 04

    Usuwanie danych z zasadą dwóch osób

    Jeden administrator składa wniosek, drugi go zatwierdza i dopiero wtedy operacja się wykonuje. Wnioskujący nigdy nie może zatwierdzać, a żaden z nich nie może wskazać samego siebie. Usunięcie sięga tabel, które odwołują się do tej osoby, a nie tylko wiersza profilu.

  5. 05

    Rejestr naruszeń z 72-godzinnym zegarem

    Incydent to wiersz z terminem wyliczonym jako 72 godziny od wykrycia oraz przypomnieniami, które nie przestają się pojawiać, dopóki sprawa nie zostanie zamknięta. Zegar rusza w chwili wykrycia, a nie wtedy, gdy ktoś przypomni sobie o artykule 33.

Lokalizacja danych

Gdzie faktycznie leżą dane

Pliki

Magazyn mediów, który można skierować gdzie indziej

Pliki zapisujemy przez interfejs magazynu z czterema implementacjami: Supabase Storage, Amazon S3, Azure Blob Storage i Google Cloud Storage. To zwykle uczciwa odpowiedź na wymóg dotyczący lokalizacji danych — wdrożenie może zapisywać pliki do bucketu w regionie, którego Państwo potrzebują, zamiast czekać, aż dostawca taki region otworzy. Prosimy podać wymóg wcześnie, a powiemy wprost, czy jest dziś spełniony.

  • Baza danych, uwierzytelnianie i funkcje, na których działa API, są hostowane przez Supabase. To jedyna zależność, której nie da się skonfigurować inaczej, i jest ona wymieniona w umowie DPA.
  • Własne domeny poszczególnych organizacji obsługuje Cloudflare, z certyfikatami wystawianymi automatycznie, więc uczestnik w Bejrucie albo Mediolanie widzi Państwa domenę, a nie naszą.
Własne domeny i white-label
Analityka

Analityka produktowa w UE, z pominięciem uczestników

Analityka platformy działa przez PostHog w jego regionie UE, za warstwą abstrakcji, dzięki której dostawcę można wymienić bez dotykania produktu. Nagrania sesji są maskowane i nigdy nie rejestrują uczestników — powierzchnia uczestnika nie jest w ogóle oprzyrządowana pod nagrywanie.

  • Pola tekstowe i wszystko, co oznaczono jako dane osobowe, są maskowane w przeglądarce, zanim nagranie gdziekolwiek trafi.
  • Analityka wymaga zgody i jest wyłączona, dopóki organizacja jej nie włączy. Nic dotyczącego osoby niepełnoletniej nie jest profilowane na żadnej powierzchni.
Bezpieczeństwo AI

Co dzieje się z tekstem, zanim trafi do dostawcy AI

Wiadomość uczestnika, wgrany plik PDF, pytanie wpisane do copilota: wszystko to jest treścią, a nic z tego nie jest poleceniem. To rozróżnienie jest egzekwowane, a nie proszone o nie w prompcie.

Klasyfikacja prób wstrzyknięcia

Niezaufane dane wejściowe są klasyfikowane, zanim wykona się właściwe wywołanie. Tekst próbujący przekierować model zostaje oznaczony, a nie wykonany.

Losowe ogrodzenie

Niezaufany tekst opakowujemy w znacznik generowany osobno dla każdego żądania, którego model nie może odgadnąć, a sam znacznik jest z treści usuwany. Skrócenie tekstu domyka ogrodzenie, zamiast zostawiać je otwarte.

Anonimizacja przed wywołaniem

Imiona i nazwiska, adresy e-mail oraz identyfikatory są zastępowane, zanim cokolwiek wyruszy do dostawcy. Ocenianie działa na zanonimizowanej pracy; mapowanie z powrotem do uczestnika zostaje na naszym serwerze.

Walidacja schematu odpowiedzi

Każda odpowiedź jest sprawdzana względem schematu. Odpowiedź niepoprawna dostaje jedną próbę naprawy, a potem kończy się błędem, zamiast trafić do kursu.

Ślad od propozycji do zmiany

Zapytania, przyjęte szkice i odrzucone szkice to osobne wpisy w tym samym rejestrze powiązanym łańcuchem skrótów. To, co zaproponował model, stoi obok tego, co zastosował człowiek.

Tożsamość

Jak ludzie się logują

Napisane tak, jak potrzebuje tego osoba oceniająca bezpieczeństwo: co jest wdrożone dziś, a co nie.

Konta z zaproszenia

Konta tworzy administrator albo powstają z zaproszenia — nie ma samodzielnej rejestracji. Linki do resetu i odzyskiwania są jednorazowe i przechowywane jako skróty.

Logowanie partnerskie (silent SSO)

System partnera, który już kogoś uwierzytelnił, może przekazać tę osobę podpisaną asercją, dzięki czemu uczestnik nie widzi drugiego logowania. Konfiguruje się je osobno dla każdej organizacji, ma własny klucz i można je odwołać.

Logowanie jednokrotne SAML i OIDC

W planach

Nie zbudowane. Jeśli Państwa wdrożenie zależy od Entra ID albo Okta, prosimy powiedzieć o tym na pierwszej rozmowie, a powiemy, na jakim jest to etapie, zamiast sugerować, że już działa.

MFA i passkeys

W planach

Również na mapie drogowej. Dziś hasłem zarządza dostawca tożsamości, sesje może unieważnić ich właściciel, a unieważnienie działa od najbliższego sprawdzenia uprawnień.

Podprzetwarzający

Wszyscy, którzy dotykają Państwa danych

Pięciu, a każdy z nich jest wymieniony w umowie powierzenia przetwarzania, a nie odkrywany później.

CapabilityCzym się zajmujeGdzie ma zastosowanie
SupabaseBaza danych, uwierzytelnianie, magazyn plików i funkcje, na których działa APIGłówny podmiot przetwarzający. Magazyn mediów można zamiast tego skierować na S3, Azure albo GCS.
CloudflareDNS, TLS i własna domena, na której obsługiwana jest każda organizacjaTerminuje TLS dla domen poszczególnych organizacji; certyfikaty są wystawiane automatycznie.
OpenAIGenerowanie treści przez AI, tutoring i szkice ocenWywoływany tylko wtedy, gdy żądanie tego wymaga, po anonimizacji. Zamiast niego można skonfigurować Anthropic albo Google, a organizacja może podłączyć własny klucz.
ResendPoczta transakcyjna — zaproszenia, powiadomienia, resetyOrganizacja może wysyłać z własnej subdomeny, z własnym kluczem.
PostHogAnalityka produktowa i maskowane nagrania sesjiRegion UE. Powierzchnie uczestnika nie są nagrywane.

Wiążąca jest lista w umowie powierzenia przetwarzania, obok aneksu FERPA o ochronie danych uczniów dla szkół. Oba dokumenty wyślemy przed rozmową, a nie po niej.

Dostępność

WCAG 2.1 AA i to, czego nie mamy

Lurno jest budowane zgodnie z WCAG 2.1 AA. Automatyczne testy axe działają w ciągłej integracji, więc niedostateczny kontrast albo brakująca etykieta psują build, zamiast trafić do wydania. Ścieżki klawiaturowe, widoczny fokus i preferencje ograniczonego ruchu mieszkają w bibliotece komponentów, a nie są doklejane na każdym ekranie z osobna. Produkt jest dostępny po angielsku, francusku, arabsku i włosku, a arabski jest w całości od prawej do lewej, a nie jest przetłumaczonym układem od lewej do prawej.

Czego nie mamy, to dokumentu VPAT ani zewnętrznego audytu dostępności, i wolimy napisać to tutaj, niż zakopać w odpowiedzi na pytanie 47. Jeśli formalny raport zgodności jest warunkiem zakupu, prosimy zgłosić to wcześnie — to rozmowa o zakresie prac, a nie pole do odhaczenia.

Pytania, które zadaje dział zakupów

Odpowiedzi, zanim trzeba będzie wysłać ankietę

Nie. Lurno działa zgodnie z praktykami ISO 27001 — kontrola dostępu, kryptografia, rejestrowanie zdarzeń, zarządzanie zmianą i zarządzanie dostawcami są wdrożone jako mechanizmy w produkcie — ale Augmental Learning Inc. nie ma certyfikatu ISO 27001 ani raportu SOC 2. Wolimy być sprawdzalni niż imponujący. Wszystko na tej stronie można pokazać na żywo.

Prosimy przesłać nam ankietę.

Większość odpowiedzi jest powyżej. Resztę — lokalizację danych, retencję, podprzetwarzających, umowę DPA — prosimy przynieść na rozmowę, a odpowiemy tymi samymi prostymi słowami, których użyliśmy tutaj.