Μετάβαση στο περιεχόμενο

Ασφάλεια

Ασφάλεια που μοιάζει με φιλοξενία.

Ένας πάροχος ταυτότητας αξίζει όσο τα τείχη ανάμεσα στους μισθωτές του και η φροντίδα με την οποία χειρίζεται τα μυστικά. Δείτε πώς είναι χτισμένο το Usher Identity. Περιγράφουμε τι κάνει το λογισμικό· δεν ισχυριζόμαστε καμία πιστοποίηση.

Αρχιτεκτονική

Ξεχωριστοί τομείς, ξεχωριστά δίκτυα.

Οι σελίδες του ίδιου του Usher Identity και ο εκδότης κάθε πελάτη βρίσκονται σε διαφορετικούς καταχωρίσιμους τομείς. Οι βάσεις δεδομένων βρίσκονται σε δίκτυο που δεν μπορεί να φτάσει στο διαδίκτυο, και η μόνη έξοδος είναι ένας διακομιστής μεσολάβησης που ελέγχει πού πηγαίνει.

  • Το Caddy τερματίζει το TLS για κάθε κεντρικό υπολογιστή και αφαιρεί κεφαλίδες που μόνο οι υπηρεσίες του ίδιου του Usher Identity μπορούν να ορίσουν.
  • Το επίπεδο ελέγχου ταυτότητας απαντά για κάθε περιβάλλον, που διακρίνεται από τον κεντρικό υπολογιστή· τίποτα δεν αποθηκεύεται προσωρινά για έναν κεντρικό υπολογιστή και δεν σερβίρεται σε άλλον.
  • Κάθε υπηρεσία μιλά στο Valkey ως ξεχωριστός χρήστης, περιορισμένη στα δικά της κλειδιά. Δεν υπάρχει προεπιλεγμένος χρήστης.
  • Οι εντολές που περιέχουν διακριτικά και κωδικούς δεν γράφονται ποτέ στο αρχείο καταγραφής της βάσης δεδομένων μαζί με τις τιμές τους.

Το διαδίκτυο

Άνθρωποι, οι εφαρμογές σας, οι διακομιστές σας

Η άκρη

Caddy: TLS, HSTS, αφαιρεί εσωτερικές κεφαλίδες

usheridentity.com

Ιστότοπος και Console

usheridentity.com, console.usheridentity.com

API

api.usheridentity.com

*.usherid.com

Επίπεδο ελέγχου ταυτότητας

Ο εκδότης και το Lobby κάθε περιβάλλοντος

Δίκτυο δεδομένων · χωρίς διαδρομή προς τα έξω

Postgres

Ένα σχήμα ανά περιβάλλον

Valkey

Κάθε υπηρεσία περιορισμένη στα δικά της κλειδιά

Η μόνη έξοδος

Διακομιστής μεσολάβησης εξόδου

Για κάθε URL που δίνει ένας πελάτης

Ανακάλυψη, JWKS, αποσύνδεση

Μόνο δημόσιες διευθύνσεις

Τα επίπεδα του Usher Identity. Ο τομέας μισθωτών είναι καταχωρίσιμος τομέας διαφορετικός από εκείνον της πλατφόρμας, οπότε οι σελίδες ενός μισθωτή δεν είναι ποτέ στον ίδιο ιστότοπο με το Console.

Απομόνωση

Τίποτα σημαντικό κοινόχρηστο.

Κάθε περιβάλλον έργου αποκτά το δικό του σχήμα Postgres, τα δικά του κλειδιά υπογραφής και τα δικά του μυστικά, σφραγισμένα με το δικό του κλειδί δεδομένων. Ο εκδότης του είναι ένας κεντρικός υπολογιστής στον τομέα μισθωτών, και τα cookie του ισχύουν μόνο για αυτόν, οπότε ένα πρόγραμμα περιήγησης δεν στέλνει ποτέ το cookie ενός περιβάλλοντος σε άλλο.

usheridentity.com

Ο ιστότοπος, το Usher Identity Console, οι λογαριασμοί Usher Identity

*.usherid.com

Ένας εκδότης ανά περιβάλλον, σε ξεχωριστό τομέα

Περιβάλλον

Οι χρήστες, οι περίοδοι σύνδεσης και τα διακριτικά βρίσκονται σε σχήμα φτιαγμένο για αυτό το περιβάλλον. Τα ερωτήματα εκτελούνται σε αυτό το σχήμα, ποτέ σε κοινόχρηστο πίνακα με στήλη μισθωτή.

Αντιγραφή του σφραγισμένου μυστικού πελάτη Google από το περιβάλλον παραγωγής του Acme στο περιβάλλον παραγωγής του Northwind.

Κρυπτογράφηση αποθηκευμένων δεδομένων

Κρυπτογράφηση φακέλου, δεμένη στη θέση της.

Τα μυστικά που δίνετε στο Usher Identity σφραγίζονται με AES-256-GCM με ένα κλειδί δεδομένων που ανήκει σε ένα περιβάλλον. Τα κλειδιά δεδομένων είναι με τη σειρά τους τυλιγμένα από ένα κύριο κλειδί με εκδόσεις, που φυλάσσεται εκτός της βάσης δεδομένων.

Κλειδιά δεδομένων ανά περιβάλλον
Η παραβίαση του κλειδιού δεδομένων ενός περιβάλλοντος δεν αποκαλύπτει τίποτα για κάποιο άλλο.
Δέσμευση AAD
Το περιβάλλον και ο σκοπός είναι δεμένοι σε κάθε κρυπτογράφημα, οπότε μια τιμή δεν μπορεί να μετακινηθεί μεταξύ γραμμών ή μισθωτών.
Κλειδιά με εκδόσεις
Κάθε σφραγισμένη τιμή καταγράφει την έκδοση κλειδιού με την οποία δημιουργήθηκε, ώστε τα κλειδιά να μπορούν να εναλλάσσονται και οι παλιές τιμές να ξανατυλίγονται.
Πιστοποιημένη
Η ετικέτα του GCM σημαίνει ότι μια αλλοιωμένη τιμή δεν ανοίγει, αντί να αποκρυπτογραφηθεί σε κάτι άλλο.
  1. Κύριο κλειδί

    Φυλάσσεται εκτός της βάσης δεδομένων, με εκδόσεις

  2. Κλειδί δεδομένων, ένα ανά περιβάλλον

    Τυλιγμένο από το κύριο κλειδί

  3. Το μυστικό

    Σφραγισμένο με AES-256-GCM με το κλειδί δεδομένων

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

aad = u1 | version | environment | purpose

Μια σφραγισμένη τιμή κατονομάζει το περιβάλλον και τον σκοπό της στα πιστοποιημένα δεδομένα της. Αν αντιγραφεί οπουδήποτε αλλού, δεν ανοίγει.

Πρακτικές

Οι λεπτομέρειες, με προσοχή.

  • Συνθηματικά, αν τα χρησιμοποιείτε

    Κατακερματίζονται με Argon2id στο κόστος που συνιστά το OWASP (19 MiB, δύο περάσματα), με όριο στο πόσα εκτελούνται ταυτόχρονα, ώστε ένα κύμα συνδέσεων να μην μπορεί να ρίξει την υπηρεσία. Τα νέα συνθηματικά ελέγχονται έναντι γνωστών παραβιάσεων μέσω του range API του Have I Been Pwned, που βλέπει μόνο ένα σύντομο πρόθεμα του κατακερματισμού του συνθηματικού. Το ελάχιστο μήκος είναι 12 από προεπιλογή.

  • Τίποτα αποθηκευμένο που θα μπορούσε να αναπαραχθεί

    Τα μυστικά πελάτη, τα διακριτικά, τα διακριτικά μαγικών συνδέσμων και οι κωδικοί μέσω email αποθηκεύονται κατακερματισμένα. Οι εφεδρικοί κωδικοί είναι κρυπτογραφημένοι. Ένας κωδικός εξουσιοδότησης ισχύει πέντε λεπτά· ένας κωδικός μέσω email επιτρέπει τρεις προσπάθειες.

  • Όρια ρυθμού σε κάθε πόρτα

    Η σύνδεση, η εγγραφή, οι κωδικοί μέσω email, οι μαγικοί σύνδεσμοι, οι επαναφορές συνθηματικού και οι έλεγχοι δεύτερου παράγοντα έχουν ο καθένας το δικό του όριο: δέκα συνδέσεις με συνθηματικό το λεπτό, για παράδειγμα, και πέντε κωδικοί μέσω email ανά δέκα λεπτά.

  • Μια αυστηρή Content-Security-Policy

    Κάθε σελίδα του Lobby παίρνει ένα νέο nonce και μια πολιτική χτισμένη γύρω από αυτό: εκτελούνται μόνο τα σενάρια αυτής της προέλευσης που φέρουν το nonce, οι φόρμες υποβάλλονται μόνο στην ίδια προέλευση, και άλλοι ιστότοποι δεν μπορούν να ενσωματώσουν τη σελίδα σε πλαίσιο.

  • Ένα αρχείο ελέγχου που μπορείτε να εμπιστευτείτε

    Οι αλλαγές σε χώρους εργασίας, έργα και περιβάλλοντα γράφονται σε ένα αρχείο μόνο προσθήκης, με κάθε εγγραφή συνδεδεμένη μέσω κατακερματισμού με την προηγούμενη, ώστε μια επεξεργασμένη ή χαμένη εγγραφή να φαίνεται.

  • Ένας διακομιστής μεσολάβησης εξόδου για τα URL των πελατών

    Κάθε αίτημα που κάνει το Usher Identity σε διεύθυνση που του έδωσε ένας πελάτης (ανακάλυψη OIDC, JWKS, αποσύνδεση μέσω back-channel) βγαίνει μέσω ενός διακομιστή μεσολάβησης. Αυτός επιλύει το όνομα μία φορά, απορρίπτει ιδιωτικές διευθύνσεις, διευθύνσεις loopback, link-local και μεταδεδομένων cloud, και συνδέεται στη διεύθυνση που έλεγξε, ώστε το DNS rebinding να μην μπορεί να μετατρέψει ένα URL πελάτη σε εσωτερικό.

  • Ψευδώνυμα που δεν δίνονται ποτέ δύο φορές

    Το ψευδώνυμο ενός περιβάλλοντος παραγωγής είναι η πρώτη ετικέτα του εκδότη του. Το Console είναι ανοιχτό μόνο με πρόσκληση, ένα Lobby που αναφέρθηκε για ηλεκτρονικό ψάρεμα αναστέλλεται, και ένα ψευδώνυμο που χρησιμοποιήθηκε δεν δίνεται ποτέ ξανά, επειδή παλιές εφαρμογές μπορεί ακόμη να εμπιστεύονται τα διακριτικά του.

  • Περίοδοι σύνδεσης που λήγουν όταν το λέτε εσείς

    Το Usher Identity ελέγχει τις δικές του περιόδους σύνδεσης σε κάθε αίτημα αντί να εμπιστεύεται ένα αποθηκευμένο αντίγραφο, οπότε μια περίοδος σύνδεσης που τερματίζετε λήγει αμέσως. Τα διακριτικά πρόσβασης είναι σύντομης διάρκειας (δέκα λεπτά από προεπιλογή), και το API σας μπορεί να τα ενδοσκοπήσει.

Υπεύθυνη γνωστοποίηση

Βρήκατε κάτι; Πείτε το πρώτα σε εμάς.

Αν πιστεύετε ότι βρήκατε πρόβλημα ασφαλείας στο Usher Identity, θα θέλαμε να το μάθουμε, και θα συνεργαστούμε μαζί σας για να το διορθώσουμε.

security@usheridentity.com
  • Τι βρήκατε, πού, και πώς να το αναπαραγάγουμε.
  • Τι θα μπορούσε να κάνει κάποιος με αυτό, όπως το καταλαβαίνετε.
  • Πώς μπορούμε να επικοινωνήσουμε μαζί σας, και αν θέλετε να αναφερθεί το όνομά σας.

Κάντε δοκιμές μόνο σε περιβάλλοντα που σας ανήκουν, μην αποκτάτε πρόσβαση σε δεδομένα άλλων, και δώστε μας εύλογο χρόνο να διορθώσουμε το πρόβλημα πριν το κοινοποιήσετε. Για να αναφέρετε μια σελίδα που προσποιείται ότι είναι σύνδεση Usher Identity, δείτε την Αναφορά κατάχρησης.