Topik wawancara representatif

Wawancara system design: Bagaimana Anda merancang control plane rotasi secret multi-tenant?

Desain sistemSulit
Tim Redaksi Offer.ccDipublikasikan Diperbarui

Pertanyaan

Sebuah platform SaaS mengelola kata sandi basis data, API key pihak ketiga, dan signing key untuk ribuan tenant. Bagaimana Anda merancang control plane rotasi otomatis yang memverifikasi konsumen, meluncurkan perubahan secara bertahap, mendukung rollback, dan mencabut kredensial yang bocor tanpa mengekspos nilai secret?

Petunjuk dan konteks yang sesuai

Ini adalah pertanyaan system-design keamanan. Fokusnya adalah bagaimana control plane mengoordinasikan versi secret, kebijakan tenant, konfirmasi konsumen, dan jendela peluncuran sementara data plane hanya membaca versi saat ini yang sah. AWS mendemonstrasikan pergantian pengguna secara bergantian untuk mengurangi gangguan cutover basis data, sementara Google Secret Manager menggunakan versi dan alias yang immutable untuk pengikatan dan peluncuran bertahap. Abstraksikan pola-pola tersebut ke dalam alur kerja multi-tenant yang dapat diaudit daripada menyalin satu cloud API mentah-mentah.

Apa yang dievaluasi pewawancara

  • Apakah Anda memodelkan tenant, secret, versi, konsumen, dan kebijakan sembari mencegah akses lintas-tenant.
  • Apakah Anda merancang versi yang tumpang tindih, verifikasi kesehatan, percobaan ulang yang idempoten, dan promosi yang dapat dibatalkan (reversible).
  • Apakah Anda membedakan rotasi terjadwal, pencabutan darurat setelah kebocoran, dan pemusnahan.
  • Apakah Anda dapat menjelaskan kompromi antara ketersediaan control-plane, caching, audit, dan operasional.

Klarifikasi yang perlu ditanyakan terlebih dahulu

Konfirmasikan jenis secret, bentuk konsumen, jumlah tenant, frekuensi rotasi, tumpang tindih maksimum, dan toleransi gangguan. Tanyakan apakah platform menghasilkan nilai secara mandiri, apakah API pihak ketiga harus diperbarui, apakah konsumen melakukan hot-reload, dan apakah isolasi regional, retensi, persetujuan manual, atau pencabutan darurat diperlukan. Nyatakan asumsi jika skala tidak disebutkan, dan pisahkan nilai secret dari penyimpanan metadata.

Kerangka jawaban 30 detik

Saya akan mencakup pendaftaran kebijakan, pembuatan versi baru, distribusi bertahap, promosi terverifikasi, lalu pencabutan dan audit. Setiap tenant mendapatkan namespace secret dan kebijakan otorisasi yang terisolasi; nilai secret hanya ada di KMS khusus atau secret manager. Control plane membuat versi pending, meminta konsumen untuk memuatnya dan melaporkan kesehatan, lalu memindahkan alias ke current. Versi lama tetap ada selama jendela tumpang tindih yang terkontrol. Kegagalan akan menjeda tugas dan memulihkan alias; kebocoran menggunakan jalur darurat yang lebih cepat. Setiap langkah memiliki idempotensi, persetujuan, dan catatan audit.

Jawaban mendalam langkah demi langkah

1. Memodelkan batasan tenant, secret, dan kebijakan

Metadata menyimpan tenant, tujuan, algoritma, versi, konsumen, jadwal, wilayah, pemilik, dan status. KMS atau secret manager khusus menyimpan nilai; basis data aplikasi hanya menyimpan referensi dan hash. Otorisasi dibatasi oleh tenant, tujuan, dan identitas konsumen, serta operator tidak dapat membaca plaintext secara default. Kebijakan menyatakan periode rotasi, tumpang tindih minimum, probe verifikasi, batas percobaan ulang, dan persyaratan persetujuan.

2. Menghasilkan dan mengisolasi versi pending

Penjadwal membuat tugas rotasi yang idempoten, menghasilkan versi pending, dan mencatat alasannya, versi induk, serta masa berlakunya. Generator dan distributor dipisahkan, dan log tidak pernah memuat nilai secret. Pembaruan pihak ketiga menggunakan hak istimewa terendah (least privilege) dan kredensial berumur pendek. Strategi pergantian pengguna AWS mengilustrasikan persiapan kredensial cadangan dan validasinya sebelum cutover, tetapi setiap dependensi memerlukan adapternya sendiri.

3. Mendistribusikan secara bertahap dan memverifikasi konsumen

Konsumen memperoleh referensi versi melalui otorisasi berumur pendek, tidak pernah melalui log atau variabel lingkungan yang berisi plaintext. Mulailah dengan kohort tenant atau instans yang kecil, lalu perluas. Verifikasi memeriksa autentikasi, probe bisnis, tingkat kesalahan, dan latensi. Google memperingatkan bahwa menggunakan alias latest secara langsung di lingkungan produksi dapat langsung menyebarkan nilai yang buruk, sehingga control plane harus mendukung alias yang dipatok (pinned), peluncuran terpartisi, dan promosi eksplisit.

4. Mengalihkan secara atomik, tumpang tindih, dan melakukan rollback

Pindahkan alias current dari versi lama ke versi yang terverifikasi dan pertahankan previous untuk rollback. Promosi harus bersifat kondisional sehingga rotasi yang bersamaan tidak saling menimpa. Jendela tumpang tindih memungkinkan kredensial lama tetap berfungsi sebentar, tetapi memerlukan tindakan kedaluwarsa dan pencabutan yang eksplisit. Kegagalan konsumen, regresi probe, atau keberhasilan parsial pada pihak ketiga akan menjeda tugas, memulihkan alias, dan melakukan eskalasi.

5. Mencabut secara darurat, memulihkan, dan mengamati

Setelah terjadi kebocoran atau dugaan penyalahgunaan, lewati jadwal normal: bekukan versi lama, buat pengganti, perbarui dependensi, dan perluas verifikasi. Menghapus versi di secret manager tidak cukup jika layanan eksternal masih menerima kredensial lama. Lacak keberhasilan rotasi, waktu verifikasi, durasi tumpang tindih, rollback, versi yang kedaluwarsa, penolakan lintas-tenant, peringatan akses plaintext, dan waktu respons kebocoran. Cadangan hanya menyimpan materi terenkripsi dan metadata pemulihan; simulasi berkala memverifikasi isolasi tenant dan konsistensi alias.

Contoh jawaban berkualitas tinggi

Saya akan mengklarifikasi jenis secret, kemampuan hot-reload konsumen, skala tenant, jendela tumpang tindih, dan target pencabutan darurat. Tenant, tujuan, dan konsumen membentuk domain otorisasi yang terisolasi; nilai tetap berada di KMS atau secret manager dan basis data aplikasi hanya menyimpan referensi. Penjadwal membuat versi pending yang idempoten. Distributor mengizinkan kohort kecil untuk memuatnya dan melaporkan hasil autentikasi, probe bisnis, serta latensi. Setelah disetujui, pembaruan kondisional memindahkan current, sementara previous tetap ada untuk jendela rollback yang terbatas. Kegagalan atau keberhasilan parsial akan menjeda dan memulihkan alias. Kebocoran menggunakan pencabutan langsung. Pembuatan, akses, promosi, rollback, dan persetujuan manual dicatat ke log audit anti-rusak, dengan metrik yang disegmentasikan berdasarkan tenant dan tujuan secret.

Kesalahan umum

  • Menyimpan semua nilai dalam satu basis data atau log dan mengabaikan isolasi tenant serta tujuan.
  • Menimpa nilai lama secara langsung alih-alih memodelkan pending, current, dan previous.
  • Hanya menguji penulisan ke secret manager daripada menguji konsumen nyata dan probe bisnis.
  • Bergantung pada penyebaran latest tanpa partisi, jeda, atau rollback.
  • Memperlakukan rotasi terjadwal dan pencabutan darurat sebagai alur kerja lambat yang sama.
  • Menghapus rekaman di platform tanpa mencabut kredensial lama di layanan eksternal atau cache.

Pertanyaan lanjutan dan tanggapan

Bagaimana jika konsumen tidak dapat melakukan hot-reload?

Ikatkan promosi ke proses restart atau deployment yang dapat dibatalkan, validasi pada kohort instans kecil, lalu perluas. Catat versi instans dan konfirmasinya; status "diberitahu" bukanlah "efektif".

Bagaimana jika dua tugas rotasi berjalan bersamaan?

Gunakan lease per tenant dan secret atau nomor generasi kondisional; hanya generasi saat ini yang dapat mempromosikan alias. Kunci idempotensi menangani permintaan duplikat, sementara tugas yang kedaluwarsa dijeda untuk menunggu konfirmasi manual.

Bagaimana jika pembaruan pihak ketiga berhasil tetapi persistensi lokal gagal?

Perlakukan pembaruan eksternal sebagai sesuatu yang dapat dicoba ulang tetapi tidak dapat diputar ulang secara membabi buta. Simpan bukti permintaan dan penanda idempotensi, kueri status eksternal sebelum melakukan kompensasi, dan bekukan promosi saat status tidak pasti agar operator dapat merekonsiliasinya.

Bagaimana Anda memilih jendela tumpang tindih?

Ukur waktu cache konsumen, propagasi deployment, dan durasi permintaan maksimum daripada menebak. Tumpang tindih yang lebih lama meningkatkan risiko paparan; tumpang tindih yang lebih pendek meningkatkan risiko pemadaman layanan, jadi klasifikasikan berdasarkan tujuan secret.

Bagaimana data plane beroperasi selama control plane mengalami kegagalan?

Simpan referensi versi dan kebijakan kedaluwarsa terakhir yang disetujui dalam cache. Selama pemadaman, tolak promosi baru tetapi lanjutkan dengan konfigurasi aman terakhir. Setelah pemulihan, rekonsiliasi status yang hilang menggunakan nomor generasi dan event audit.

Sumber publik

Pertanyaan terkait

Alat wawancara terkait

Gunakan Jawab untuk jawaban desain sistem

Perjelas persyaratan terlebih dahulu, lalu lanjutkan dengan skala, arsitektur, pilihan komponen, dan trade-off.

Lihat alat