Przejdź do treści

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

Warstwy Usher Identity. Domena najemców to inna domena rejestrowalna niż domena platformy, więc strony najemcy nigdy nie są w tej samej witrynie (same-site) co Console.

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

Środowisko

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.
  1. Klucz główny

    Przechowywany poza bazą danych, wersjonowany

  2. Klucz danych, po jednym na środowisko

    Opakowany kluczem głównym

  3. Sekret

    Zapieczętowany szyfrem AES-256-GCM kluczem danych

u1.<key version>.<iv>.<ciphertext + tag>

aad = u1 | version | environment | purpose

Zapieczętowana wartość wskazuje w danych uwierzytelnianych swoje środowisko i cel. Skopiowanej gdziekolwiek indziej nie da się otworzyć.

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.

security@usheridentity.com
  • 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.