Sikkerhet
Sikkerhet som føles som gjestfrihet.
En identitetsleverandør er aldri bedre enn veggene mellom leietakerne og omsorgen den viser for hemmeligheter. Slik er Usher Identity bygget. Vi beskriver hva programvaren gjør; vi hevder ikke at den er sertifisert.
Arkitektur
Separate domener, separate nettverk.
Usher Identitys egne sider og hver kundes utsteder ligger på forskjellige registrerbare domener. Databasene står på et nettverk som ikke når internett, og den eneste veien ut er en proxy som sjekker hvor den skal.
- Caddy terminerer TLS for alle verter og fjerner headere som bare Usher Identitys egne tjenester får sette.
- Autentiseringslaget svarer for alle miljøer, skilt fra hverandre på vert; ingenting mellomlagres for én vert og serveres til en annen.
- Hver tjeneste snakker med Valkey som sin egen bruker, begrenset til sine egne nøkler. Det finnes ingen standardbruker.
- Spørringer med tokener og koder skrives aldri til databaseloggen med verdiene sine.
Internett
Folk, appene dine, serverne dine
Kanten
Caddy: TLS, HSTS, fjerner interne headere
usheridentity.com
Nettsted og Console
usheridentity.com, console.usheridentity.com
API
api.usheridentity.com
*.usherid.com
Autentiseringslag
Hvert miljøs utsteder og Lobby
Datanettverk · ingen rute ut
Postgres
Ett skjema per miljø
Valkey
Hver tjeneste begrenset til sine egne nøkler
Den eneste veien ut
Utgående proxy
For alle URL-er fra kunder
Discovery, JWKS, utlogging
Bare offentlige adresser
Isolasjon
Ingenting som betyr noe, er delt.
Hvert prosjektmiljø får sitt eget Postgres-skjema, sine egne signeringsnøkler og sine egne hemmeligheter forseglet med sin egen datanøkkel. Utstederen er en vert på leietakerdomenet, og informasjonskapslene gjelder bare for verten, så en nettleser sender aldri ett miljøs informasjonskapsel til et annet.
usheridentity.com
Nettstedet, Usher Identity Console, kontoer hos Usher Identity
*.usherid.com
Én utsteder per miljø, på et eget domene
Brukere, økter og tokener ligger i et skjema laget for dette miljøet. Spørringer kjøres mot det skjemaet, aldri mot en delt tabell med en leietakerkolonne.
Kopier den forseglede Google-klienthemmeligheten fra Acme produksjon til Northwind produksjon.
Kryptering av lagrede data
Konvoluttkryptering, bundet til sin plass.
Hemmeligheter du gir Usher Identity, forsegles med AES-256-GCM under en datanøkkel som tilhører ett miljø. Datanøklene er selv pakket inn av en versjonert hovednøkkel som oppbevares utenfor databasen.
- Datanøkler per miljø
- Kommer ett miljøs datanøkkel på avveie, avslører det ingenting om et annet miljøs.
- AAD-binding
- Miljøet og formålet er bundet inn i hver chiffertekst, så en verdi kan ikke flyttes mellom rader eller leietakere.
- Versjonerte nøkler
- Hver forseglet verdi registrerer nøkkelversjonen den ble laget med, så nøkler kan roteres og gamle verdier pakkes inn på nytt.
- Autentisert
- Takket være GCM-taggen lar en manipulert verdi seg ikke åpne, i stedet for å dekrypteres til noe annet.
Hovednøkkel
Oppbevart utenfor databasen, versjonert
Datanøkkel, én per miljø
Pakket inn av hovednøkkelen
Hemmeligheten
Forseglet med AES-256-GCM under datanøkkelen
u1.<key version>.<iv>.<ciphertext + tag>
aad = u1 | version | environment | purpose
Praksis
Detaljene, gjort med omhu.
Passord, hvis du bruker dem
Hasjet med Argon2id med kostnaden OWASP anbefaler (19 MiB, to runder), med et tak på hvor mange som kjører samtidig, så en flom av pålogginger ikke kan slå ut tjenesten. Nye passord sjekkes mot kjente datalekkasjer gjennom range-API-et til Have I Been Pwned, som bare ser et kort prefiks av passordets hasj. Minste lengde er 12 som standard.
Ingenting lagret som kan spilles av på nytt
Klienthemmeligheter, tokener, tokener for magiske lenker og koder på e-post lagres hasjet. Reservekoder er kryptert. En autorisasjonskode varer i fem minutter; en kode på e-post gir tre forsøk.
Hastighetsgrenser på alle dører
Pålogging, registrering, koder på e-post, magiske lenker, tilbakestilling av passord og kontroll av andre trinn har hver sin grense: ti passordpålogginger i minuttet, for eksempel, og fem koder på e-post hvert tiende minutt.
En streng Content-Security-Policy
Hver side i Lobbyen får en fersk nonce og en policy bygget rundt den: bare skript fra denne opprinnelsen som har nonce-en, kjøres, skjemaer sendes bare til samme opprinnelse, og andre nettsteder kan ikke legge siden i en ramme.
En revisjonslogg du kan stole på
Endringer i arbeidsområder, prosjekter og miljøer skrives til en logg som bare kan legges til, der hver oppføring er hasjkjedet til den forrige, så en redigert eller manglende oppføring synes.
En utgående proxy for kunde-URL-er
Hver forespørsel Usher Identity sender til en adresse en kunde har oppgitt (OIDC discovery, JWKS, back-channel-utlogging), går ut gjennom én proxy. Den slår opp navnet én gang, avviser private adresser, loopback- og link-local-adresser og adresser for skymetadata, og kobler til adressen den sjekket, så DNS-rebinding ikke kan gjøre en kunde-URL om til en intern.
Kortnavn som aldri deles ut to ganger
Kortnavnet til et produksjonsmiljø er den første delen av utstederen. Console er bare åpen for inviterte, en Lobby som er rapportert for nettfisking, blir suspendert, og et kortnavn som har vært i bruk, deles aldri ut igjen, fordi gamle apper fortsatt kan stole på tokenene som er utstedt med det.
Økter som slutter når du sier det
Usher Identity sjekker sine egne økter ved hver forespørsel i stedet for å stole på en mellomlagret kopi, så en økt du avslutter, er over med en gang. Tilgangstokener er kortlivede (ti minutter som standard), og API-et ditt kan introspektere dem.
Ansvarlig varsling
Funnet noe? Si fra til oss først.
Hvis du tror du har funnet et sikkerhetsproblem i Usher Identity, vil vi gjerne høre om det, og vi samarbeider med deg om å rette det.
- Hva du fant, hvor, og hvordan det kan gjenskapes.
- Hva noen kunne gjøre med det, slik du forstår det.
- Hvordan vi når deg, og om du vil bli kreditert.
Test bare mot miljøer du eier, ikke gå inn i andres data, og gi oss rimelig tid til å rette problemet før du deler det. For å rapportere en side som later som den er en pålogging hos Usher Identity, se Rapporter misbruk.