Kami memiliki beberapa pemberian:
- Pengembang membutuhkan replika database produksi pada mesin mereka.
- Pengembang memiliki kata sandi untuk basis data tersebut di file App.config.
- Kami tidak ingin data dalam basis data tersebut dikompromikan.
Beberapa solusi yang disarankan dan kelemahannya:
- Enkripsi cakram penuh. Ini menyelesaikan semua masalah, tetapi menurunkan kinerja laptop, dan kami adalah pemula, jadi tidak punya uang untuk tenaga kuda.
- Membuat VM dengan hard disk terenkripsi, dan menyimpan database di atasnya. Ini berfungsi dengan baik, tetapi tidak banyak membantu, karena ada kata sandi di Web.Config.
- Solusi nomor 2 + mengharuskan pengembang untuk mengetik kata sandi basis data setiap kali ia menjalankan apa pun. Ini menyelesaikan semua masalah, tetapi sangat rumit untuk pengembang yang terkadang menjalankan aplikasi beberapa kali dalam satu menit. Kami juga memiliki beberapa aplikasi yang terhubung ke database yang sama, dan penerapan layar kata sandi harus berbeda di masing-masing.
Jadi, pertanyaan saya adalah, apakah ada solusi umum untuk masalah seperti itu, atau ada saran tentang bagaimana membuat solusi di atas bisa diterapkan?
Jawaban:
Anda bukan hanya tidak ingin salinan database produksi, tetapi juga mungkin ilegal. Misalnya, di AS, Anda tidak dapat memindahkan data produksi keluar dari lingkungan produksi jika berisi informasi yang diatur seperti data kesehatan pribadi, data keuangan, atau bahkan data yang dapat digunakan dalam pencurian identitas. Jika Anda melakukannya, Anda dapat didenda, kehilangan kepatuhan Anda dan karenanya harus diaudit lebih agresif, atau bahkan disebutkan namanya dalam gugatan.
Jika Anda membutuhkan data skala produksi untuk pengujian, Anda memiliki beberapa opsi:
Untuk opsi # 2
sumber
Bisakah Anda setidaknya memberi pengembang VM di pusat data Anda bahwa mereka dapat RD untuk pekerjaan ini? Meskipun mereka benar-benar harus bekerja dari data non-produksi, ini akan lebih aman sampai Anda bisa sampai di sana karena data tidak akan disimpan pada laptop yang mudah dicuri.
sumber
Ubah cara kerja Anda jika memungkinkan.
Seperti yang orang lain tunjukkan:
Kedua hal ini membuat Anda menghadapi risiko yang signifikan dan harus diubah jika memungkinkan. Setidaknya Anda harus menilai dengan serius berapa biaya pembuatan perubahan ini. Jika ini adalah ketergantungan eksternal yang Anda tidak memiliki kekuatan untuk berubah, pertimbangkan untuk meningkatkan ini sebagai masalah bagi siapa pun yang memiliki kekuatan itu.
Namun, di dunia nyata, mungkin benar-benar tidak mungkin untuk mengubah ini. Dengan asumsi bahwa apa yang Anda lakukan adalah legal, Anda mungkin harus hidup dengan pengaturan ini (setidaknya untuk sementara).
Jika ini benar-benar diperlukan, Anda hanya perlu melakukan enkripsi disk penuh.
Mengingat risikonya, Anda perlu menggunakan opsi keamanan terbaik yang tersedia, dan ini dia. Jika ada hit kinerja, hidup dengannya. Ini adalah biaya bekerja dengan data sensitif.
Jika saya pelanggan Anda, saya tidak akan terkesan bahwa Anda memutuskan untuk tidak menggunakan opsi keamanan terbaik yang tersedia dengan data saya, karena itu membuat laptop Anda sedikit lebih lambat.
sumber
Jawaban Corbin March cukup bagus, saya hanya akan menambahkan detail tambahan, bahwa Anda umumnya memiliki dua kelas data dalam basis data produksi Anda: metadata sistem / aplikasi; dan data pengguna klien / data transaksional. Yang terakhir ini TIDAK PERNAH digunakan dalam lingkungan pengembangan "sebagaimana adanya".
Sangat jarang memang bahwa Anda memerlukan informasi klien produksi aktual untuk melakukan pengembangan.
Namun, jika masalah yang dijelaskan OP di sini melibatkan data rahasia dagang atau data sistem yang sangat berpemilik yang tidak melibatkan data pelanggan, yang diperlukan oleh pengembang ... pendekatan keamanan harus melibatkan skema yang tidak memiliki kata sandi db disimpan dalam teks standar di suatu tempat. Perlu ada mekanisme untuk, misalnya, membuat ulang kata sandi harian, yang tidak disimpan di disk.
sumber
client user data/transactional data... should NEVER be used in a development environment "as is."
- Ini kedengarannya tidak bisa saya lakukan. Masalah pemrograman terkait produksi yang berkaitan dengan data klien tertentu tidak akan dapat diselesaikan dalam pengaturan ini. Lebih lanjut, data langsung aktual sangat berguna dari sudut pandang pengujian. Upaya privatisasi atau anonimisasi harus difokuskan hanya pada data yang diatur secara khusus.Anda tidak menyatakan basis data dan lingkungan mana.
Jika Anda dapat menggunakan keamanan terintegrasi maka database tidak dapat diakses tanpa login sebagai pengguna itu. Ya, jika data ada di hard disk, itu bisa diretas, tetapi ini adalah pertahanan tingkat pertama.
App.config membuat saya berpikir ini mungkin .NET. Masukkan config ke dalam thumb drive dan bacalah dari thumb drive. Jika drive tidak ada maka buatlah pengguna mengetikkan kata sandi.
Apakah ada cara untuk menyimpan kata sandi dalam memori saat pertama kali dimasukkan dan dibaca oleh semua. Sekali lagi Anda tidak menyatakan lingkungan. File yang Dipetakan Memori
Dengan beberapa TDE Anda dapat menyimpan kunci pada perangkat yang terpisah sehingga mereka hanya memasok kunci ketika basis data dimulai.
sumber
Salah satu opsi yang mungkin adalah membuat salinan database dan menggosok salinan itu dengan skrip sehingga Anda berakhir dengan data yang berbeda dari apa yang sebenarnya dalam produksi. Anda tidak akan berakhir dengan data yang sama dengan produksi tetapi Anda akan memiliki skala yang sama.
sumber