Langsung ke konten

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

Tier-tier Usher Identity. Domain tenant adalah domain terdaftar yang berbeda dari domain platform, sehingga halaman tenant tidak pernah same-site dengan Console.

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

Lingkungan

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.
  1. Kunci induk

    Disimpan di luar database, berversi

  2. Kunci data, satu per lingkungan

    Dibungkus oleh kunci induk

  3. Rahasianya

    Disegel dengan AES-256-GCM di bawah kunci data

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

aad = u1 | version | environment | purpose

Nilai yang tersegel menyebutkan lingkungan dan tujuannya di data terautentikasinya. Jika disalin ke tempat lain, nilai itu gagal dibuka.

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.

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