Skenario : Anda menyerahkan cadangan basis data dan diberitahu untuk mengembalikannya ke server (yang telah menjadi hosting basis data lain), tetapi tidak diberi informasi berguna tentang apa yang berisi cadangan tersebut atau apakah sumber tersebut dapat dipercaya.
Pertanyaan 1 : Apa implikasi potensial dari memulihkan cadangan yang bisa berbahaya?
Pertanyaan 2 : Apa yang dapat Anda lakukan untuk melindungi server / data Anda di database lain dari dampak memulihkan cadangan yang berpotensi berbahaya? RESTORE VERIFYONLY
tampaknya merupakan langkah pertama yang baik. Jawaban pamungkas mungkin adalah 'pulihkan database di VM sandbox tanpa akses ke dunia luar', tetapi mari kita asumsikan bahwa opsi tersebut tidak masuk akal. Apa lagi yang harus dilakukan dalam situasi ini?
sumber
Jawaban:
Basis data mungkin berisi kode berbahaya, mungkin prosedur yang akan mengubah kata sandi untuk masuk "sa" atau jatuhkan setiap basis data. Namun satu-satunya cara saya bisa melihat bahwa menyebabkan masalah adalah bagi seseorang untuk memulihkan database, dan kemudian secara manual menjalankan kode apa pun dalam database itu. Itu tidak akan dijalankan dengan cara otomatis.
Tidak ada pengaturan yang dapat diterapkan dalam database untuk memiliki SQL Server secara otomatis menjalankan beberapa kode dalam database setelah mengembalikannya ke server. Jika ya, saya harapkan Microsoft akan kehilangan sertifikasi Common Criteria untuk produk tersebut. Itu adalah kesalahan besar yang diizinkan dalam DBMS kepada saya.
sumber
WITH ENABLE_BROKER
et al), maka kode dapat dijalankan "secara otomatis." Jelas pemulih tidak akan mau menggunakan opsi-opsi itu jika keamanan menjadi perhatian, tetapi berpotensi terkubur di dalam aplikasi vendor pihak ketiga di mana pengguna mungkin tidak melihatnya.Ada beberapa langkah pencegahan yang bisa Anda lakukan.
Seperti kata Shawn, kode tidak akan dijalankan dengan sendirinya kecuali beberapa prosedur tersimpan yang tampaknya vbalid memiliki exec dari kode berbahaya lainnya. Ini adalah alasan memeriksa kode di dalam masing-masing dari mereka sebelum meletakkannya dalam mode multi-pengguna.
sumber
Saya sampai di sini, tapi saya bisa memikirkan setidaknya satu skenario berbahaya: jika Anda mengembalikan database yang memiliki filetable , file-file itu sekarang ada di jaringan Anda secara default (dan khususnya, pada SQL Server Anda). Anda dapat memulihkan virus.
Itu dengan sendirinya tidak akan melakukan apa-apa, tentu saja - virus tidak tiba-tiba menjadi mahluk hidup - tetapi jika pengguna Anda kemudian mencoba mengakses file, mereka bisa terinfeksi. (Hei, saya katakan saya sudah mencapai.) Saya membayangkan sebuah skenario di mana seorang hacker luar ingin mendapatkan malware di pintu, dan dia kemudian mengirim email ke Bob dalam akuntansi mengatakan, "Ini file: \ sqlserver \ filetableshare \ myvirus.exe "- pada saat itu sudah melewati firewall Anda tanpa deteksi, dan kami sekarang ke antivirus internal dan alat anti-malware Anda.
sumber
Pulihkan hanya verifikasi integritas database yang TIDAK AKAN memberitahu Anda apakah cadangan menyertakan kode berbahaya atau tidak KEMBALIKAN VERIFYONLY tidak berusaha memverifikasi struktur data yang terkandung dalam volume cadangan. Sangat tidak disukai bahwa jika cadangan berasal dari dalam perusahaan tempat Anda bekerja bisa berbahaya tetapi jika itu berasal dari pihak ketiga, Anda perlu berhati-hati seperti yang ditunjukkan Shawn.
Dokumentasi Microsoft Online mengatakan itu
• Untuk tujuan keamanan, kami sarankan Anda tidak melampirkan atau mengembalikan basis data dari sumber yang tidak dikenal atau tidak dipercaya. Database tersebut dapat berisi kode berbahaya yang dapat mengeksekusi kode Transact-SQL yang tidak diinginkan atau menyebabkan kesalahan dengan memodifikasi skema atau struktur database fisik. Sebelum Anda menggunakan database dari sumber yang tidak dikenal atau tidak terpercaya, jalankan DBCC CHECKDB pada database di server nonproduksi dan juga periksa kode, seperti prosedur tersimpan atau kode lain yang ditetapkan pengguna, dalam database.
sumber
Pertanyaannya sebagian besar berfokus pada cadangan yang mengandung malware, tetapi juga dimungkinkan untuk mendapatkan perilaku yang tidak diinginkan dan berpotensi berbahaya dari operasi pemulihan itu sendiri.
Saya tidak sengaja menemukan di masa lalu bahwa mungkin untuk crash SQL Server dengan mencoba mengembalikan file cadangan yang rusak yang menyebabkan SQL Server mencoba membaca melewati akhir file cadangan dan crash. Saya tidak yakin versi mana yang rentan atau tepatnya apa yang diperlukan untuk mereproduksi masalah. Saya mendokumentasikan beberapa rincian terbatas di sini ketika saya mengalami masalah ini beberapa tahun yang lalu.
sumber
Apa resikonya memulihkan database yang tidak diketahui dari sumber yang tidak dikenal? Tidak ada
Risiko apa yang ada dalam membiarkan aplikasi yang tidak dikenal terhubung menggunakan akun sysadmin untuk terhubung ke database itu dan mulai menjalankan kode? BANYAK! Jika akun aplikasi hanya memiliki hak di dalam basis data dan tidak ada akses tingkat server maka tidak ada yang dapat dilakukan di luar basis data. Ini pada dasarnya bermula untuk memiliki pengaturan kerangka kerja keamanan yang tepat di server untuk memulai.
sumber
Bagus. Anda menuntut pernyataan tertulis yang ditandatangani dari siapa pun yang memberi tahu Anda untuk melakukan ini sehingga mereka menerima tanggung jawab penuh atas konsekuensinya. Jika mereka tidak mau melakukan itu, Anda harus menguji instal di kotak pasir setelah memeriksa file cadangan (jika mungkin), dan teliti semua tabel, prosedur, dll. sistem produksi. Meski begitu, Anda harus menjelaskan (kepada bos Anda dan atasannya) bahwa Anda tidak pernah memercayai cadangan dan melakukan ini hanya berdasarkan perintah langsung.
Jika mereka tidak mau menandatangani pernyataan seperti itu, beri tahu atasan mereka sebelum melakukan sesuatu. Sebagai seorang profesional, adalah tugas Anda untuk melindungi sistem Anda sebanyak mungkin, tidak peduli apa pun yang diperintahkan oleh beberapa atasan yang redup. Anda mungkin dipecat, tetapi Anda dapat mengangkat kepala tinggi-tinggi dan tahu Anda melakukan hal yang benar.
sumber
Tidak ada banyak bahaya per kata, selain beberapa yang jauh disarankan di sini. Seperti yang disebutkan, sulit untuk memiliki barang-barang yang dapat dieksekusi secara otomatis dalam cadangan basis data itu sendiri. Perlu semacam mekanisme pemicu eksterior.
Dapatkan laptop / desktop lama dan versi evaluasi dari perangkat lunak Database Anda (SQLExpress) jika lisensi menjadi masalah. Salin file cadangan di mesin, cabut jaringan / nirkabel, dan lakukan pemulihan. Kemudian mulailah menggali. Luangkan semua waktu yang Anda butuhkan, karena ada banyak tempat yang bisa disembunyikan, kebanyakan dari mereka sudah dibahas oleh posting lain di utas ini.
Integritas DBA Anda dan pemeliharaan lingkungan Produksi Anda lebih penting daripada pesanan apa pun yang diberikan oleh atasan.
sumber