Terlepas dari protes keras kami, manajemen kami telah memutuskan bahwa tim pengembangan harus diberi hak 'sa' di server pengembangan. Tangkapannya adalah bahwa kita, kelompok pendukung DB masih bertanggung jawab untuk memelihara kotak ini.
Kami sekarang telah dipercayakan tugas untuk membuat daftar Dos dan Larangan untuk tim pengembangan dengan hak istimewa yang ditingkatkan ini.
Silakan tambahkan ke daftar ini:
DO - membatasi aktivitas pada DB yang sedang dikembangkan
TIDAK --
- ubah pengaturan instance SQL apa pun
- sp_configure (termasuk cmdshell)
- tambah / ubah / hapus semua pengaturan keamanan
- tambah / ubah / hapus objek basis data
- tambah / ubah / hapus objek server seperti perangkat cadangan dan server terkait
- tambah / ubah / hapus replikasi
- tambah / ubah / hapus paket perawatan
- sentuh basis data apa pun yang bukan milik tim Anda
Setiap petunjuk ke alat yang tersedia untuk melacak aktivitas pengguna ini akan sangat dihargai.
Jawaban:
Jika belum terlambat, satu opsi kompromi yang menurut saya berfungsi dengan baik alih-alih memutakhirkan izin atau mengganti akun pengembang yang ada, buat akun terpisah yang hanya digunakan saat mereka membutuhkan izin tinggi.
Jadi biasanya mereka bekerja di bawah akun "terbatas" individu (yang saya gunakan secara longgar karena akun terbatas ini masih memerlukan beberapa izin yang lumayan - yaitu membuat, menjatuhkan, mengubah tabel). Tetapi untuk kesempatan langka ketika mereka merasa perlu
sa
, mereka dapat masuk menggunakan akun ini. Kemudian Anda dapat menandai akun di log Anda dan melakukan pemantauan ekstra. Anda telah memberi para pengembang akses yang mereka minta, tetapi dengan cara yang sedikit lebih terkendali.Akhirnya, jika ada penyalahgunaan, log pada akun ini dapat digunakan sebagai bukti untuk membawanya pergi.
sumber
Dikatakan di sini (MSDN) Anda perlu sysadmin (sa) untuk debug pada SQL Server 2005.
Namun, pertanyaan SO ini menunjukkan cara lain tanpa sa, yang saya pikir awalnya. Cukup izinkan mereka untuk berjalan
sp_sidedebug
Saya juga menyarankan memberi mereka SQL Express lokal yang juga memecahkan masalah lain ...
(diedit dengan info lebih lanjut)
Edit, setelah jawaban W. Craig Trader
Masalah lain dengan hak "sa", dalam kasus terburuk:
misalnya
xp_cmdshell 'scm -Action 6 -Server PRODSERVER'
sumber
Saran yang saya miliki adalah mengatur Manajemen Berbasis Kebijakan dan menegakkan semua 'lakukan' Anda dan 'jangan' sebagai aturan kebijakan. Ini akan sangat melindungi instansinya.
Saya juga akan menggunakan audit perubahan DDL, lihat Mengaudit di SQL Server 2008 , bukan sebagai pencegah, tetapi sebagian besar sebagai sistem pelacakan perubahan sehingga ketika ada sesuatu yang kacau, setidaknya Anda akan tahu apa yang berubah.
sumber
Jika itu server DEVELOPMENT, apa masalah dengan DEVELOPERS untuk dapat memiliki akses penuh? Memberi tahu pengembang bahwa Anda tidak dapat menambah / menghapus / mengubah objek basis data (misalnya: tabel, kolom, indeks) seperti memberi tahu mereka "Anda dapat memiliki kompiler, tetapi Anda tidak diizinkan menjalankannya". Tampak bagi saya bahwa pengembang ingin / memerlukan akses ke contoh database mereka sendiri secara khusus untuk memungkinkan mereka menguji berbagai metode penyelesaian masalah TANPA harus muck dengan database PRODUCTION atau TEST. Anda harus mendorong perilaku semacam itu, bukan mengecilkannya.
Beberapa mungkin menyarankan bahwa pengembang bekerja dengan contoh lokal SQL Express, tetapi sementara SQL Express untuk setiap pengembang dapat memecahkan masalah tertentu, ia memiliki keterbatasan dan karakteristik kinerja yang berbeda dari SQL Server penuh pada server yang terpisah.
Apa yang HARUS Anda lakukan adalah melembagakan jadwal pencadangan rutin (setidaknya setiap malam) dan bekerja dengan pengembang untuk memastikan bahwa mereka tahu cara memulai pencadangan yang tidak dijadwalkan, dan memulihkan dari pencadangan, sehingga waktu henti diminimalkan jika terjadi masalah.
sumber
Yang dev server, bukan DB kelompok dukungan server, atau server produksi. Simpan cadangan / gambar yang bagus dan biarkan devs meretas. Membiarkan kontrol DBA pada devbox seperti membiarkan ekor mengibas anjing. Ada di sana untuk pengembang untuk melakukan pekerjaan pengembang. Ini kadang-kadang melibatkan hal-hal yang melanggar dan menjatuhkan tabel, dan kemudian meletakkannya kembali dengan pengaturan yang berbeda. Kotak pengembang selalu akan rusak setelah beberapa saat, itulah yang kami lakukan. Jika kita tidak tahu di mana masalah terjadi, kami mencoba berbagai hal. Beberapa dari mereka mudah dibatalkan, beberapa tidak begitu banyak.
sumber
sa
, tetapi buatlah agar mereka tidak secara default, sehingga mereka sadar ketika mereka melakukan sesuatu yang akan membutuhkan sedikit kerja ekstra untuk digunakan dengan benar.Saya tidak berpikir bahwa mereka membutuhkan hak SA di kotak Pengembangan. Dalam hampir semua kasus, mereka dapat melakukannya tanpa.
Saya pikir pilihan yang baik adalah menginstal edisi dev lokal.
pertanyaan:
Anda tidak ingin pengembang menambah / mengubah / menghapus objek basis data? !! Bagaimana mereka akan berkembang?
sumber
Kami mengharuskan semua perubahan struktur basis data dilakukan dengan skrip (bahkan pada dev) dan disimpan dalam subversi. Kemudian pada jadwal yang telah ditentukan kita menyegarkan dev dari prod dan mereka harus menjalankan kembali skrip mereka untuk kembali ke tempat mereka berada dalam siklus pengembangan. Ini membantu memastikan bahwa semuanya dilakukan melalui skrip dan bahwa mereka memiliki skrip yang siap ketika saatnya untuk penyebaran.
Saya tahu di tahun 2008 Anda dapat mengatur Pemicu DDL untuk melacak perubahan struktural basis data, dapatkah Anda melakukan ini pada tahun 2005? Dengan cara ini setidaknya Anda bisa mengetahui kapan seseorang mengubah pengaturan siapa yang melakukannya dan mencari tahu mengapa.
sumber
SQL Server Audit adalah apa yang Anda inginkan, tetapi, jika Anda akan melakukan semua pembuatan objek database untuk mereka, mengapa dev perlu sa?
http://msdn.microsoft.com/en-us/library/cc280526.aspx
sumber