Keamanan
Keamanan yang terasa seperti keramahan.
Penyedia identitas hanya sebaik tembok di antara tenant-nya dan kehati-hatiannya menjaga rahasia. Begini cara Usher Identity dibangun. Kami menjelaskan apa yang dilakukan perangkat lunaknya; kami tidak mengklaim sertifikasi apa pun.
Arsitektur
Domain terpisah, jaringan terpisah.
Halaman Usher Identity sendiri dan penerbit setiap pelanggan berada di domain terdaftar yang berbeda. Database berada di jaringan yang tidak dapat menjangkau internet, dan satu-satunya jalan keluar adalah proxy yang memeriksa ke mana tujuannya.
- Caddy menangani terminasi TLS untuk setiap host dan membuang header yang hanya boleh ditetapkan oleh layanan Usher Identity sendiri.
- Tier autentikasi melayani setiap lingkungan, yang dibedakan berdasarkan host; tidak ada yang di-cache untuk satu host lalu disajikan ke host lain.
- Setiap layanan terhubung ke Valkey sebagai penggunanya sendiri, terbatas pada kuncinya sendiri. Tidak ada pengguna default.
- Pernyataan SQL yang membawa token dan kode tidak pernah ditulis ke log database beserta nilainya.
Internet
Orang, aplikasi Anda, server Anda
Edge
Caddy: TLS, HSTS, membuang header internal
usheridentity.com
Situs dan Console
usheridentity.com, console.usheridentity.com
API
api.usheridentity.com
*.usherid.com
Tier autentikasi
Penerbit dan Lobby setiap lingkungan
Jaringan data · tanpa rute keluar
Postgres
Satu skema per lingkungan
Valkey
Setiap layanan terbatas pada kuncinya sendiri
Satu-satunya jalan keluar
Proxy egress
Untuk setiap URL dari pelanggan
Discovery, JWKS, logout
Hanya alamat publik
Isolasi
Tidak ada hal penting yang dibagi.
Setiap lingkungan proyek mendapat skema Postgres sendiri, kunci penandatanganan sendiri, dan rahasia sendiri yang disegel dengan kunci datanya sendiri. Penerbitnya adalah host di domain tenant, dan cookie-nya host-only, sehingga browser tidak pernah mengirim cookie satu lingkungan ke lingkungan lain.
usheridentity.com
Situs, Usher Identity Console, akun Usher Identity
*.usherid.com
Satu penerbit per lingkungan, di domain terpisah
Pengguna, sesi, dan token berada di skema yang dibuat untuk lingkungan ini. Kueri berjalan pada skema itu, tidak pernah pada tabel bersama dengan kolom tenant.
Salin rahasia klien Google yang tersegel dari lingkungan produksi Acme ke lingkungan produksi Northwind.
Enkripsi saat disimpan
Enkripsi amplop, terikat pada tempatnya.
Rahasia yang Anda berikan ke Usher Identity disegel dengan AES-256-GCM di bawah kunci data milik satu lingkungan. Kunci data itu sendiri dibungkus oleh kunci induk berversi yang disimpan di luar database.
- Kunci data per lingkungan
- Bobolnya kunci data satu lingkungan tidak mengungkap apa pun tentang lingkungan lain.
- Pengikatan AAD
- Lingkungan dan tujuannya diikat ke setiap ciphertext, sehingga sebuah nilai tidak dapat dipindahkan antarbaris atau antartenant.
- Kunci berversi
- Setiap nilai tersegel mencatat versi kunci yang dipakai untuk membuatnya, sehingga kunci dapat dirotasi dan nilai lama dibungkus ulang.
- Terautentikasi
- Tag GCM membuat nilai yang diutak-atik gagal dibuka, alih-alih terdekripsi menjadi sesuatu yang lain.
Kunci induk
Disimpan di luar database, berversi
Kunci data, satu per lingkungan
Dibungkus oleh kunci induk
Rahasianya
Disegel dengan AES-256-GCM di bawah kunci data
u1.<key version>.<iv>.<ciphertext + tag>
aad = u1 | version | environment | purpose
Praktik
Detailnya, dikerjakan dengan cermat.
Kata sandi, jika Anda menggunakannya
Di-hash dengan Argon2id pada biaya yang direkomendasikan OWASP (19 MiB, dua putaran), dengan batas jumlah yang berjalan bersamaan sehingga banjir upaya masuk tidak dapat melumpuhkan layanan. Kata sandi baru diperiksa terhadap kebocoran yang diketahui melalui range API Have I Been Pwned, yang hanya melihat awalan pendek dari hash kata sandi. Panjang minimumnya 12 secara default.
Tidak ada yang disimpan yang bisa diputar ulang
Rahasia klien, token, token tautan ajaib, dan kode lewat email disimpan dalam bentuk hash. Kode cadangan dienkripsi. Kode otorisasi berlaku lima menit; kode lewat email memberi tiga kali percobaan.
Batas laju di setiap pintu
Masuk, pendaftaran, kode lewat email, tautan ajaib, reset kata sandi, dan pemeriksaan faktor kedua masing-masing punya batasnya sendiri: misalnya sepuluh kali masuk dengan kata sandi per menit, dan lima kode lewat email setiap sepuluh menit.
Content-Security-Policy yang ketat
Setiap halaman Lobby mendapat nonce baru dan kebijakan yang dibangun di sekitarnya: hanya skrip dari origin ini yang membawa nonce tersebut yang dijalankan, formulir hanya dikirim ke origin yang sama, dan situs lain tidak dapat membingkai halaman itu.
Log audit yang bisa Anda percaya
Perubahan pada ruang kerja, proyek, dan lingkungan ditulis ke log yang hanya bisa ditambah, dengan setiap entri dirantai hash ke entri sebelumnya, sehingga entri yang diubah atau hilang akan terlihat.
Proxy egress untuk URL pelanggan
Setiap permintaan yang dibuat Usher Identity ke alamat yang diberikan pelanggan (OIDC discovery, JWKS, logout back-channel) keluar melalui satu proxy. Proxy itu me-resolve nama sekali, menolak alamat privat, loopback, link-local, dan metadata cloud, lalu terhubung ke alamat yang sudah diperiksanya, sehingga DNS rebinding tidak dapat mengubah URL pelanggan menjadi URL internal.
Handle yang tidak pernah diberikan dua kali
Handle lingkungan produksi adalah label pertama penerbitnya. Console hanya terbuka lewat undangan, Lobby yang dilaporkan untuk phishing ditangguhkan, dan handle yang pernah dipakai tidak pernah diberikan lagi, karena aplikasi lama mungkin masih memercayai tokennya.
Sesi yang berakhir saat Anda mau
Usher Identity memeriksa sesinya sendiri di setiap permintaan alih-alih memercayai salinan cache, sehingga sesi yang Anda akhiri langsung selesai. Token akses berumur pendek (sepuluh menit secara default), dan API Anda dapat mengintrospeksinya.
Pengungkapan bertanggung jawab
Menemukan sesuatu? Beri tahu kami dulu.
Jika Anda merasa menemukan masalah keamanan di Usher Identity, kami ingin mendengarnya, dan kami akan bekerja sama dengan Anda untuk memperbaikinya.
- Apa yang Anda temukan, di mana, dan cara mereproduksinya.
- Apa yang bisa dilakukan seseorang dengannya, sejauh yang Anda pahami.
- Cara kami menghubungi Anda, dan apakah Anda ingin nama Anda dicantumkan.
Uji hanya pada lingkungan milik Anda sendiri, jangan mengakses data orang lain, dan beri kami waktu yang wajar untuk memperbaiki masalahnya sebelum Anda membagikannya. Untuk melaporkan halaman yang menyamar sebagai halaman masuk Usher Identity, lihat Laporkan penyalahgunaan.