Warstwy odpowiedzialności
Oddziel odpowiedzialność za framework i kod aplikacji, wykonanie wdrożenia, hosting i operacje oraz obowiązki administratora danych. Każda kontrola potrzebuje właściciela, zakresu, częstotliwości przeglądu i dowodu. Umowa powinna wyjaśniać luki między warstwami.
Co zmienia wydanie 0.7.0 w bezpieczeństwie (0.6.7 → 0.7.0)
1. Działanie operatora dotyczące JWT. Zakres: aktualizacja produkcyjnego wdrożenia z 0.6.7 do 0.7.0, szczególnie stosu Docker Compose albo konfiguracji używającej wspólnego lub per-audience sekretu JWT. Odpowiada operator. Warunek wstępny: zinwentaryzuj bieżące sekrety, sposób ich przekazania do każdego procesu oraz potrzebę zachowania sesji sprzed migracji. Działanie: przed aktualizacją ustaw silny JWT_SECRET o długości co najmniej 32 znaków w pliku .env obok pliku Compose, ponieważ 0.7.0 odrzuca brakujące, zbyt krótkie i znane przykładowe wartości w produkcji. Jeśli wdrożenie przejściowo akceptuje stare tokeny, ustaw ograniczony JWT_LEGACY_GRACE_MINUTES oraz prawidłowy, bliski termin JWT_LEGACY_CUTOVER_AT; wdrożenia bez starych tokenów powinny wyłączyć grace. Wpływ na użytkownika: rotacja sekretu wyloguje aktywne sesje, a stary token bez prawidłowego cutover zostanie odrzucony. Walidacja: uruchom aplikację, worker, scheduler i CLI w konfiguracji produkcyjnej, sprawdź odrzucenie niebezpiecznego sekretu oraz logowanie nowym i dozwolonym starym tokenem po obu stronach terminu. Ograniczenie odtwarzania: przywróć usługę z prawidłowym sekretem i zaplanowanym ponownym logowaniem; powrót do opublikowanego lub słabego sekretu jest niebezpieczny.
2. Zmiana aplikacji lub skryptu dla ACL użytkownika. Zakres: klienty przechodzące z 0.6.7 do 0.7.0 i wywołujące PUT /api/auth/users/acl. Odpowiada autor aplikacji, integracji albo skryptu administracyjnego. Warunek wstępny: odczytaj zapisany override i ustal zamierzony zestaw features, organizations oraz isSuperAdmin. Działanie: pole pominięte pozostaw bez zmiany, a usunięcie override wykonuj przez jawne wyczyszczenie wszystkich wymiarów. Przy zmianie zakresu organizacji podaj także niepusty grant features, ponieważ wywołanie tylko z organizations bez features zwraca teraz 400. Wpływ na użytkownika: częściowa edycja nie usuwa już po cichu ograniczającego ACL i nie przywraca pełnych praw roli, ale stare payloady mogą zostać odrzucone. Walidacja: przetestuj zachowanie pominiętych pól, jawne usunięcie override, organizację z features oraz negatywny przypadek organizations bez features. Ograniczenie odtwarzania: nie ponawiaj starego payloadu ani nie usuwaj wiersza ACL jako obejścia; przywróć zamierzony grant i zakres jawnie.
3. Działanie operatora dla passkey MFA w edycji z modułem bezpieczeństwa. Zakres: aktualizacja z 0.6.7 do 0.7.0 wdrożenia korzystającego z passkeys. Odpowiada operator bezpieczeństwa, przy wsparciu właściciela klienta logowania. Warunek wstępny: zinwentaryzuj aktywne metody passkey i przygotuj administracyjną ścieżkę resetu oraz komunikację z użytkownikami. Działanie: klient weryfikacji musi wysyłać prawdziwy obiekt WebAuthn assertion jako payload.response; komponent dostarczany przez Open Mercato robi to już poprawnie. W tagu v0.7.0 skrót enrollment opisany w #5296 nie był zamknięty, dlatego każdą passkey zapisaną przez ten skrót traktuj jako potencjalnie wrogą, zresetuj dotknięte metody przez POST /api/security/users/{id}/mfa/reset i przeprowadź ponowny enrollment w ceremonii przeglądarki. Jest to status dla tagu v0.7.0; sprawdź bieżący status zgłoszenia przed założeniem, że nadal jest otwarte. Wpływ na użytkownika: osoba z jedyną metodą passkey może pozostać bez dostępu do czasu ponownego enrollment. Walidacja: prawdziwe assertion ma przejść, stary kształt credentialId plus challenge ma zwrócić 401, a zresetowane konto ma ukończyć nowy enrollment i logowanie. Ograniczenie odtwarzania: po zapisanym wierszu nie można wiarygodnie odtworzyć pochodzenia credential, więc zapytanie nie wskaże bezpiecznie wszystkich rekordów dotkniętych skrótem.
4. Działanie operatora i właściciela modułu dla wyszukiwania globalnego. Zakres: aplikacje aktualizowane z 0.6.7 do 0.7.0, które używają GET /api/search/search/global, niestandardowych ról albo własnych searchable entities. Odpowiada operator ACL, a za konfigurację encji właściciel modułu. Warunek wstępny: zinwentaryzuj role korzystające z search.view lub search.global oraz każdą konfigurację search.ts i jej aclFeatures. Działanie: nadaj właściwym klientom search.global, dodaj per-entity uprawnienia odczytu do aclFeatures i po wdrożeniu uruchom yarn mercato auth sync-role-acls. Filtr jest fail-closed dla użytkowników innych niż superadministrator: encja bez aclFeatures nie pojawi się w wynikach. Wpływ na użytkownika: klient z samym search.view może otrzymać 403 na endpoint globalny, a wyniki bez prawidłowej mapy uprawnień mogą zniknąć. Walidacja: sprawdź dozwolone i zabronione role dla globalnego oraz hybrydowego wyszukiwania, brak wyników encji bez grantu i widoczność po synchronizacji ACL. Ograniczenie odtwarzania: nie omijaj kontroli przez poszerzenie endpointu albo wyłączenie filtra; przywracaj wyniki przez jawne granty i mapy per-entity.
Uwierzytelnianie, RBAC i izolacja
Kontrola dostępu oparta na rolach (RBAC) powinna realizować najmniejsze uprawnienia, separację obowiązków i okresowe przeglądy. Przetestuj negatywne przypadki dostępu między tenantami i organizacjami oraz własne API, raporty, zadania, webhooki i narzędzia AI.
Szyfrowanie i sekrety
Szyfrowanie wybranych pól jest konfigurowalne i wymaga właściwych map, kluczy oraz ustawień środowiska. Oceń szyfrowanie podczas przesyłania, zarządzanie kluczami, rotację sekretów, kopie zapasowe, logi i dostęp administratorów. Danych wrażliwych nie należy umieszczać w indeksach lub logach bez jawnej decyzji.
Kod, zależności i operacje
Wymagaj przeglądu kodu, skanowania zależności, bezpiecznego procesu budowania, rozdzielonych środowisk i kontrolowanego wdrażania. Monitoring, kopie, odtwarzanie, reagowanie na incydenty i aktualizacje muszą być testowanymi procesami z zapisanymi dowodami.
RODO: prywatność od projektu i bezpieczeństwo adekwatne do ryzyka
Ogólne rozporządzenie o ochronie danych (RODO) nakłada obowiązki na administratora i podmioty przetwarzające niezależnie od wybranego frameworka. Trzeba ustalić cele i podstawy przetwarzania, minimalizację, retencję, prawa osób, umowy, transfery, ocenę ryzyka i reakcję na naruszenia. Funkcje techniczne mogą wspierać te obowiązki. Za zgodność nadal odpowiadają administrator i podmioty przetwarzające.
Jak oceniać dowód kontroli
Dokument polityki dowodzi zamiaru, konfiguracja dowodzi ustawień, test zachowania w określonych warunkach, a log operacyjny wykonania procesu. Żaden pojedynczy artefakt nie zastępuje oceny skuteczności. Luka powinna mieć właściciela, termin, działanie i decyzję o ryzyku.