Pertanyaan pertama saya, harap lembut. Saya mengerti bahwa akun sa memungkinkan kontrol penuh atas SQL Server dan semua database, pengguna, izin dll.
Saya memiliki keyakinan mutlak bahwa aplikasi tidak boleh menggunakan kata sandi sa tanpa alasan bisnis yang sempurna dan terfokus. Jawaban untuk Pertanyaan ini mencakup banyak alasan saya untuk diskusi yang berfokus pada TI
Saya dipaksa menerima sistem manajemen layanan baru yang TIDAK AKAN berfungsi kecuali menggunakan kata sandi sa. Saya tidak pernah punya waktu untuk mencari tahu mengapa ketika membuat evaluasi tetapi tim server mencoba menginstalnya untuk menggunakan peran tetap yang telah saya atur dengan menggabungkan db_creater dan izin lain yang saya pikir akan diperlukan. yang gagal. Saya kemudian membiarkan tim server menginstal dengan akun sa tetapi berjalan di bawah akun dalam peran dbo untuk databasenya tetapi itu juga gagal. Secara kasar saya mencoba menjalankannya dengan akun dalam peran sysadmin tetapi bahkan itu gagal dan tidak dengan pesan kesalahan yang berguna yang memungkinkan saya untuk mengetahui apa yang sedang terjadi tanpa menghabiskan lebih banyak waktu daripada yang saya miliki. Ini hanya akan bekerja dengan akun sa dan kata sandi yang disimpan dalam teks yang jelas di file konfigurasi.
Ketika saya bertanya ini dan tim server berbicara dengan vendor mereka mendapat jawaban yang mengkhawatirkan dari 'Apa masalahnya dengan itu?' dan kemudian 'well kita bisa melihat pengacakan password' ffs pengacakan
Saya tahu bahwa ada cara dan cara untuk membatasi akses ke file tetapi itu hanyalah kelemahan lain dalam keamanan menurut saya
Ngomong-ngomong, pertanyaan saya adalah, bisakah seseorang mengarahkan saya ke beberapa dokumentasi yang dapat saya gunakan untuk menjelaskan kepada bisnis alasan mengapa ini adalah hal yang buruk dan harus menjadi besar, tidak, tidak. Saya bekerja di bidang yang berarti bahwa saya perlu menjaga keamanan dengan serius dan telah berjuang untuk membuat bisnis mengerti dan akhirnya mungkin berada di luar peringkat tetapi saya harus mencoba.
sumber
sa
atau anggotasysadmin
, termasuk login windows?sa
secara eksplisit.Jawaban:
Itu tergantung pada bisnis Anda, tetapi hal utama dalam kebanyakan kasus adalah memastikan itu tidak dilihat sebagai masalah TI. Ini adalah masalah keamanan dan sementara dua orang bisnis besar yang tumpang tindih lebih mungkin untuk mendengarkan jika Anda mengatakan "keamanan" daripada jika Anda hanya "mengeluh tentang hal-hal IT umum".
Apakah Anda bekerja dengan klien yang memiliki persyaratan keamanan? Itu adalah tempat yang bagus untuk memulai. Jika kami menjalankan aplikasi dengan akses level sa, atau hanya aplikasi yang tidak mengamankan kredensial dengan benar bahkan jika tidak menggunakan akses priveleged (kami lebih suka Windows Integrated daripada pengguna yang tersimpan / pass jika memungkinkan), dan kami tunduk pada keamanan mengaudit, audit itu akan gagal dan kami akan berisiko kehilangan pelanggan dan / atau harus memberikan uang kembali kepada klien kelompok kami (organisasi perbankan dalam hal produk yang saya kerjakan sebagian besar, bagian lain dari kelompok itu berurusan dengan polisi dan kesehatan) otoritas dan sebagainya) keamanan adalah bagian dari penawaran kami yang sesuai dengan tujuan. Para pebisnis akan memahami tingkat keparahan dari ancaman potensial itu bahkan jika mereka biasanya membayar tidak lebih dari sekadar saran untuk rekomendasi TI.
Bahkan mengabaikan persyaratan yang dipaksakan oleh klien, jika Anda berusaha untuk memenuhi berbagai standar keamanan standar industri, sekali lagi otentikasi jenis aplikasi ini akan mengecewakan Anda dalam menghadapi audit karena jauh dari praktik terbaik sehingga menjadi sesuatu yang secara umum dianggap sebagai sesuatu yang secara umum dianggap sebagai pada daftar "tidak seharusnya dilakukan". Jelaskan kepada pembuat keputusan bisnis Anda bahwa keamanan adalah bagian penting dari aplikasi, dan fakta bahwa vendor ini tampaknya tidak mengetahui (atau setidaknya khawatir tentang) membuat Anda memiliki keraguan tentang apa lagi yang mungkin tidak mampu mereka lakukan. berurusan dengan: mengetahui tentang praktik terbaik keamanan DB adalah (well, harus) bagian dari pekerjaan mereka dan menerapkan itu tidak sulit.
Juga tunjukkan bahwa Anda (pembeli) harus mendikte persyaratan keamanan yang wajar kepada vendor, bukan sebaliknya. Ini adalah data Anda, sehingga mereka tidak memenuhi syarat untuk menyatakan apa yang dianggap cukup aman.
sumber
Tidak ada aplikasi yang perlu memiliki akses SA - selamanya. (Kecuali tujuan utamanya adalah administrasi basis data.)
Ini adalah aturan umum untuk tidak pernah memberikan lebih banyak hak untuk login apa pun (aplikasi- atau pribadi-) daripada bisnis mengharuskan login itu.
Tidak ada aplikasi yang sepenuhnya aman. Sebagian besar memiliki semacam kerentanan SQL Injection atau XSS. Jika penyusup dapat mengeksekusi pernyataan pilihannya dan memiliki akses 'SA', ada banyak hal yang dapat terjadi pada data Anda yang dapat mematikan bisnis secara instan. (Terutama jika data perlu dipercaya karena digunakan oleh penegak hukum.) Tanyakan kepada pemegang saham apa yang harus mereka lakukan, jika seseorang dapat dengan sengaja mengubah bahkan satu catatan dan informasi itu bocor.
Sekarang, dengan akses 'SA', tidak hanya database aplikasi yang dapat diubah, tetapi juga setiap database lainnya pada sistem. Jadi, tanyakan kepada pemangku kepentingan Anda apa yang akan mereka lakukan jika Anda akan membuat salinan SEMUA database Anda dan mengirimkannya ke koran. Karena itu mungkin terjadi jika karyawan yang tidak puas menemukan celah keamanan ini untuk tetap ada.
Penjual mengatakan mereka bisa mengacak kata sandi. Itu BS. Aplikasi perlu mengakses kata sandi dalam bentuk teks untuk menggunakannya, sehingga kunci untuk menguraikan kata sandi akan disimpan tanpa kata sandi tepat di sebelahnya. Juga, seperti yang disebutkan sebelumnya, masalah sebenarnya bukanlah seseorang yang menemukan kata sandi ini; itu adalah orang-orang (salah) yang menggunakan sistem ini melalui kerentanan akan mendapatkan akses penuh ke semua database Anda tanpa pernah melihat kata sandi.
Penyebab yang paling mungkin untuk SA diperlukan adalah bahwa aplikasi perlu berinteraksi dengan SQL Agent. Setidaknya itu adalah salah satu fungsi yang lebih sulit untuk diterapkan dengan benar dan kebanyakan orang hanya mengambil rute "gunakan SA" untuk mengatasinya. Membutuhkan 'SA' itu sendiri mungkin disebabkan oleh vendor yang tidak tahu cara memeriksa izin sysadmin.
Ada dua solusi yang bisa Anda coba:
Ganti nama SA (praktik terbaik keamanan) dan buat akun baru bernama 'SA' dengan hak terbatas. (Tidak pernah mencoba ini, tetapi seharusnya berhasil)
Jangan menginstal perangkat lunak. Anda sebagai seorang profesional tidak dapat memikul tanggung jawab atas tindakan itu, jadi Anda tidak boleh menginstalnya. Untuk memberi Anda perbandingan, minta tukang ledeng untuk menjalankan saluran gas langsung melalui perapian alih-alih memutarnya untuk menghemat pipa / uang. Anda mungkin menertawakan gambar ini, tetapi saya percaya ini adalah perbandingan yang tepat - Perangkat lunak ini akan meledak cepat atau lambat, mungkin lebih cepat. Dan ketika itu terjadi, itu mungkin akan menurunkan bisnis juga.
Jika ini semua tidak menghentikan "mereka" dari memerlukan perangkat lunak ini, rekomendasi terakhir yang bisa saya berikan adalah menjalankannya. Jika sesuatu terjadi pada data Anda akan menjadi orang pertama yang bertanggung jawab. Jadi, dengan aplikasi ini di tempat Anda mungkin tidak memiliki keamanan kerja, jadi cari majikan yang memberi Anda setidaknya beberapa.
sumber
alter login sa with name = [as];
.Saya melihat dua garis menyerang ini.
Kepatuhan . Apakah ada kriteria kepatuhan yang dimandatkan berlaku di toko Anda? Cari dengan seksama kata-katanya dan lihat apakah Anda menemukan sesuatu yang tidak sesuai dengan 'persyaratan' aplikasi. Jika Anda menemukan sesuatu yang mencegah
sa
penggunaan oleh suatu aplikasi, Anda memiliki kotak anti air anti peluru, karena aplikasi tersebut akan membuat bisnis Anda bertanggung jawab dll.Akses Admin Pengguna . Pastikan Anda menyajikan dengan jelas kasus bahwa aplikasi yang memerlukan
sa
akses berlaku itu memberikansa
akses ke semua pengguna perusahaan yang memiliki hak admin di workstation di mana aplikasi diinstal. Tidak ada cara untuk menyembunyikansa
kata sandi dari admin lokal tempat aplikasi berjalan, itu adalah fakta dan tidak ada jumlah 'pengacakan' yang dapat mencegah hal ini. Tidak ada akar kepercayaan lokal yang tidak bisa dicapai oleh admin lokal, jika dia mau. Jelaskan bahwa memiliki aplikasi yang mengharuskansa
sama dengan memberisa
hak istimewa kepada semua pengguna yang menjalankan aplikasi. Jelaskan apa artinya itu, apa yang dapat dilakukan pengguna secara efektif:Jelaskan kepada pembuat keputusan bahwa menerima aplikasi ini berarti mempercayakan setiap karyawan yang memiliki akses administrator ke workstation yang menjalankan aplikasi dengan semua hak istimewa yang disebutkan di atas. Vendor akan mencoba mempertahankan posisinya dengan memohon semacam 'enkripsi'
sa
kata sandi untuk aplikasi tersebut. Ini tidak menahan air. Tidak ada skema enkripsi yang dapat menahan serangan dari administrator. Dan jelaskan bahwa jumlah keterampilan teknis yang diperlukan untuk menemukan kata sandi 'tersembunyi' secara lokal sama sekali tidak relevan. Karyawan tidak akan melakukannya sendiri, salah satu dari mereka akan google untuk itu dan menemukan skrip yang mudah digunakan yang melakukannya.sumber
Pertama, kata sandi sa disimpan plaintext? Anda harus memilih dengan dompet Anda. Siapa pun yang berpikir itu dapat diterima harus dikeluarkan dari bisnis.
Berikut ini adalah anologi yang dapat membantu Anda menjelaskan masalah ini: Karyawan Alice membutuhkan akses ke lantai pertama. Apakah Anda memberinya kunci master untuk seluruh bangunan atau hanya kunci untuk lantai pertama? Jawab: Anda hanya memberinya kunci lantai pertama. Mengapa? Karena itu mengurangi kemungkinan kerusakan yang tidak disengaja atau disengaja. Jika Alice tidak bisa sampai ke ruang server lantai dua di tempat pertama maka dia tidak akan pernah melakukan hal buruk di sana.
Ini adalah Prinsip Least Priviledge.
Mengapa aplikasi perlu menggunakan akun sa, itu adalah pertanyaan yang harus dijawab oleh PerfMon atau Extended Events. Buat jejak PerfMon menggunakan templat T-SQL, mungkin difilter menurut nama aplikasi.
Dari atas kepala saya, berikut adalah argumen lain yang menentang penggunaan sa: Menggunakan akun sa membutuhkan layanan SQL Server untuk berada dalam mode otentikasi campuran. WIndows hanya autentikasi yang lebih baik karena kami dapat memanfaatkan semua fitur aman Kerberos.
sumber
Dari perspektif teknis, tidak ada alasan bahwa suatu aplikasi akan membutuhkan izin SA. Apa yang mungkin terjadi adalah bahwa pengembang aplikasi mungkin memeriksa untuk melihat apakah login mereka memiliki izin sysadmin dan jika tidak, itu hanya melempar pesan kesalahan. Dengan cara ini mereka dapat mengklaim bahwa aplikasi tersebut membutuhkan hak SA.
Jika Anda harus memiliki aplikasi ini maka saya akan menjalankannya pada contoh terpisah yang tidak memiliki hal lain di dalamnya.
sumber
Mungkin vendor Anda meminta / membutuhkan "sa" karena di suatu tempat dalam aplikasi mereka mereka menggunakan XP_CMDSHELL. (Jangan biarkan saya memulai kerusakan yang mungkin terjadi dengan akses tidak terbatas ke XP_CMDSHELL. Cukup dengan mengatakan bahwa ini berpotensi membuka bukan hanya data Anda tetapi mesin host dan, mungkin, hal lain di jaringan Anda ke akses mirip admin)
Jika ada kebutuhan yang sah, Anda dapat memberikan akses terbatas melalui akun proxy. Lihat, misalnya, BOL: http://msdn.microsoft.com/en-us/library/ms175046.aspx
sumber
Tidak ada aplikasi yang memerlukan akun SA dan kata sandi untuk beroperasi.
Namun, saya telah menginstal produk Manajemen Layanan TI, dan selama proses instalasi Anda memiliki opsi untuk memasok kredensial akun SA untuk memungkinkan pemasang untuk membuat DB dan melampirkan akun ke DB untuk digunakan perangkat lunak. Kredensial akun SA tidak disimpan dalam log aplikasi atau penginstal di mana pun. Perangkat lunak ini juga menyediakan opsi untuk menggunakan database yang dibuat sebelumnya selama instalasi.
Jadi saya hanya akan mengkonfirmasi jika akun SA diperlukan untuk instalasi, atau pengoperasian perangkat lunak Manajemen Layanan TI ini.
Jika Instalasi: buat akun 'sa' sementara - lakukan instalasi - dan hapus akun.
Jika Pengoperasian: Hindari perangkat lunak seperti wabah. (atau menyiapkan server SQL mandiri yang hanya akan menampung satu database itu.)
sumber
Parameter keamanan sistem SQL Server default apa pun yang disediakan harus diubah. Dianjurkan untuk tidak menggunakan mode campuran (mengaktifkan otentikasi Windows dan SQL Server) untuk otentikasi. Alih-alih, beralihlah ke otentikasi Windows saja - yang akan menegakkan kebijakan kata sandi Windows - memeriksa panjang kata sandi, durasi hidup, dan riwayat. Fitur kebijakan kata sandi Windows yang membuatnya berbeda dari otentikasi SQL Server adalah penguncian login - setelah sejumlah upaya login yang gagal berturut-turut, login menjadi terkunci dan tidak dapat digunakan lagi untuk penggunaan lebih lanjut
Di sisi lain, otentikasi SQL Server tidak menyediakan metode untuk mendeteksi upaya serangan brute-force, dan yang lebih buruk, SQL Server bahkan dioptimalkan untuk menangani sejumlah besar upaya login cepat. Jadi, jika otentikasi SQL Server adalah suatu keharusan dalam sistem SQL Server tertentu, sangat disarankan untuk menonaktifkan login SA
sumber