Bezpieczeństwo
Bezpieczeństwo, które przypomina gościnność.
Dostawca tożsamości jest tyle wart, ile ściany między jego najemcami i staranność, z jaką traktuje sekrety. Oto, jak zbudowany jest Usher Identity. Opisujemy, co robi oprogramowanie; nie twierdzimy, że ma jakiekolwiek certyfikaty.
Architektura
Osobne domeny, osobne sieci.
Własne strony Usher Identity i wystawca każdego klienta działają w różnych domenach rejestrowalnych. Bazy danych znajdują się w sieci, która nie ma dostępu do internetu, a jedyna droga na zewnątrz prowadzi przez serwer proxy, który sprawdza, dokąd zmierza ruch.
- Caddy terminuje TLS dla każdego hosta i usuwa nagłówki, które mogą ustawiać tylko wewnętrzne usługi Usher Identity.
- Warstwa uwierzytelniania obsługuje każde środowisko, rozróżniając je po hoście; nic, co trafiło do pamięci podręcznej dla jednego hosta, nie jest serwowane innemu.
- Każda usługa łączy się z Valkey jako osobny użytkownik, z dostępem tylko do własnych kluczy. Nie ma użytkownika domyślnego.
- Zapytania zawierające tokeny i kody nigdy nie są zapisywane w dzienniku bazy danych razem z ich wartościami.
Internet
Ludzie, Twoje aplikacje, Twoje serwery
Warstwa brzegowa
Caddy: TLS, HSTS, usuwa wewnętrzne nagłówki
usheridentity.com
Witryna i Console
usheridentity.com, console.usheridentity.com
API
api.usheridentity.com
*.usherid.com
Warstwa uwierzytelniania
Wystawca i Lobby każdego środowiska
Sieć danych · bez wyjścia na zewnątrz
Postgres
Schemat dla każdego środowiska
Valkey
Każda usługa ograniczona do własnych kluczy
Jedyna droga na zewnątrz
Proxy ruchu wychodzącego
Dla każdego adresu URL podanego przez klienta
Wykrywanie, JWKS, wylogowanie
Tylko adresy publiczne
Izolacja
Nic istotnego nie jest współdzielone.
Każde środowisko projektu dostaje własny schemat Postgres, własne klucze podpisywania i własne sekrety zapieczętowane własnym kluczem danych. Jego wystawca to host w domenie najemców, a pliki cookie są przypisane do hosta, więc przeglądarka nigdy nie wyśle pliku cookie jednego środowiska do innego.
usheridentity.com
Witryna, Usher Identity Console, konta Usher Identity
*.usherid.com
Jeden wystawca na środowisko, w osobnej domenie
Użytkownicy, sesje i tokeny znajdują się w schemacie utworzonym dla tego środowiska. Zapytania trafiają do tego schematu, nigdy do wspólnej tabeli z kolumną najemcy.
Skopiuj zapieczętowany sekret klienta Google ze środowiska produkcyjnego Acme do środowiska produkcyjnego Northwind.
Szyfrowanie danych w spoczynku
Szyfrowanie kopertowe, przypisane do swojego miejsca.
Sekrety, które przekazujesz platformie Usher Identity, są pieczętowane szyfrem AES-256-GCM kluczem danych należącym do jednego środowiska. Klucze danych są z kolei opakowane wersjonowanym kluczem głównym przechowywanym poza bazą danych.
- Klucze danych dla każdego środowiska
- Przejęcie klucza danych jednego środowiska nie ujawnia niczego o kluczu innego.
- Powiązanie AAD
- Środowisko i cel są wpisane w każdy szyfrogram, więc wartości nie da się przenieść między wierszami ani najemcami.
- Wersjonowane klucze
- Każda zapieczętowana wartość zapisuje wersję klucza, którym ją utworzono, więc klucze można rotować, a stare wartości ponownie opakować.
- Uwierzytelnione
- Dzięki tagowi GCM zmodyfikowanej wartości po prostu nie da się otworzyć, a nie zostaje ona odszyfrowana do czegoś innego.
Klucz główny
Przechowywany poza bazą danych, wersjonowany
Klucz danych, po jednym na środowisko
Opakowany kluczem głównym
Sekret
Zapieczętowany szyfrem AES-256-GCM kluczem danych
u1.<key version>.<iv>.<ciphertext + tag>
aad = u1 | version | environment | purpose
Praktyki
Szczegóły dopracowane starannie.
Hasła, jeśli z nich korzystasz
Haszowane algorytmem Argon2id z kosztem zalecanym przez OWASP (19 MiB, dwa przebiegi), z limitem liczby obliczeń wykonywanych jednocześnie, aby zalew prób logowania nie mógł unieruchomić usługi. Nowe hasła są sprawdzane pod kątem znanych wycieków przez range API serwisu Have I Been Pwned, które widzi tylko krótki prefiks skrótu hasła. Domyślnie minimalna długość to 12 znaków.
Nie przechowujemy niczego, czego można by użyć ponownie
Sekrety klientów, tokeny, tokeny magicznych linków i kody wysyłane e-mailem są przechowywane jako skróty. Kody zapasowe są szyfrowane. Kod autoryzacji jest ważny przez pięć minut, a kod wysłany e-mailem pozwala na trzy próby.
Limity przy każdych drzwiach
Logowanie, rejestracja, kody wysyłane e-mailem, magiczne linki, resetowanie hasła i sprawdzanie drugiego składnika mają osobne limity: na przykład dziesięć logowań hasłem na minutę i pięć kodów e-mail na dziesięć minut.
Ścisła polityka Content-Security-Policy
Każda strona Lobby dostaje świeży nonce i zbudowaną wokół niego politykę: uruchamiają się tylko skrypty z tego źródła, które mają ten nonce, formularze wysyłają dane tylko do tego samego źródła, a inne witryny nie mogą osadzić strony w ramce.
Dziennik audytu, któremu możesz ufać
Zmiany w obszarach roboczych, projektach i środowiskach są zapisywane w dzienniku tylko do dopisywania, a każdy wpis jest połączony skrótem z poprzednim, więc zmieniony lub brakujący wpis od razu widać.
Proxy ruchu wychodzącego dla adresów URL klientów
Każde żądanie, które Usher Identity wysyła na adres podany przez klienta (wykrywanie OIDC, JWKS, wylogowanie back-channel), wychodzi przez jeden serwer proxy. Rozwiązuje on nazwę raz, odrzuca adresy prywatne, pętli zwrotnej, lokalne dla łącza i adresy metadanych chmury, a potem łączy się z adresem, który sprawdził, więc atak DNS rebinding nie zamieni adresu URL klienta w adres wewnętrzny.
Uchwyty, których nigdy nie przydziela się dwa razy
Uchwyt środowiska produkcyjnego to pierwsza etykieta adresu jego wystawcy. Console jest dostępna tylko na zaproszenie, Lobby zgłoszone jako phishing zostaje zawieszone, a raz użyty uchwyt nigdy nie jest przydzielany ponownie, bo stare aplikacje mogą wciąż ufać jego tokenom.
Sesje, które kończą się, kiedy chcesz
Usher Identity sprawdza własne sesje przy każdym żądaniu, zamiast ufać kopii z pamięci podręcznej, więc zakończona przez Ciebie sesja kończy się od razu. Tokeny dostępu są krótkotrwałe (domyślnie dziesięć minut), a Twoje API może je sprawdzać przez introspekcję.
Odpowiedzialne ujawnianie
Widzisz problem? Powiedz najpierw nam.
Jeśli wydaje Ci się, że w platformie Usher Identity jest luka w zabezpieczeniach, chętnie o tym usłyszymy i razem z Tobą ją naprawimy.
- Co udało Ci się znaleźć, gdzie i jak to odtworzyć.
- Co ktoś mógłby z tym zrobić, w Twojej ocenie.
- Jak możemy się z Tobą skontaktować i czy chcesz, abyśmy wymienili Cię w podziękowaniach.
Prosimy testować tylko własne środowiska, nie sięgać po dane innych osób i dać nam rozsądny czas na naprawienie problemu, zanim zostanie upubliczniony. Aby zgłosić stronę, która podszywa się pod logowanie Usher Identity, przejdź do strony Zgłoś nadużycie.