Akun layanan SQL Server, hak dan hak Windows

12

Pertanyaan saya adalah, jika Anda membuat akun pengguna domain baru untuk setiap proses SQL Server, izin apa yang harus ditetapkan untuk setiap akun? Atau apakah manajer konfigurasi SQL benar-benar menangani ini, dan saya baru saja mengalami masalah yang tidak terduga?

Saya cukup sering harus men-setup Microsoft SQL Server dan bertanya-tanya apakah ada yang bisa memberikan saran tentang mengkonfigurasi akun layanan yang harus dijalankan. IMO ini secara samar-samar didokumentasikan oleh Microsoft, sementara mereka mengarahkan Anda ke arah yang benar, saya tidak pernah bisa menemukan contoh konkret.

Untuk meringkas apa yang telah saya lihat sejauh ini:

Untuk penerapan sederhana \ lingkungan pengembangan, boleh saja menggunakan default akun virtual yang digunakan pemasang: mis NT SERVICE\MSSQLSERVER

Hindari menggunakan SYSTEMakun, ini tidak aman.

Untuk produksi dan dalam lingkungan domain, disarankan untuk menggunakan Akun Layanan Terkelola, atau membuat akun pengguna domain (bukan admin) untuk setiap layanan. Diduga jika Anda menggunakan akun domain pada saat pemasangan, penginstal akan menetapkan izin yang diperlukan untuk Anda.

Jika mengubah akun layanan pada instalasi yang ada dari akun virtual ke akun domain, rekomendasinya adalah menggunakan manajer konfigurasi SQL Server untuk mengatur akun layanan baru. Diduga ini akan mengatur izin yang diperlukan untuk Anda.

Saya baru saja mencoba mengubah akun layanan di instal yang ada ke akun domain dan itu akan memberi saya kegagalan logon sampai saya memberikan log on as serviceizin akun , yang bertentangan dengan bagian di mana manajer konfigurasi SQL Server akan mengatur izin yang diperlukan. (Meskipun saya tidak yakin apakah GPO mungkin telah mengganggu pengaturan kebijakan keamanan lokal ini)

Microsoft memang memberikan daftar izin yang diberikan oleh SQL Server Setup pada halaman ini .

Tetapi tidak jelas bagi saya jika itu adalah sesuatu yang harus saya lakukan secara manual untuk pengguna yang saya buat untuk menjalankan layanan, atau apakah menggunakan SQL config manager harus secara otomatis mengatur izin ini.

SQL Server 2014, Pengontrol Domain ada di Windows Server 2008 R2.

anjing plum
sumber
Versi SQL yang mana? Apakah ini lingkungan AD? Jika demikian, apa level domainnya?
Katherine Villyard
Terima kasih, saya telah menambahkan versi ke pertanyaan. SQL Server 2014, Pengontrol Domain pada tingkat fungsional Windows Server 2008 R2
1
Ini tidak terlihat seperti dokumentasi yang tidak jelas bagi saya. Ini terlihat cukup komprehensif. - msdn.microsoft.com/en-us/library/ms143504.aspx
Ya saya setuju, secara keseluruhan dokumentasinya bagus tetapi bagian yang saya tidak yakin tentangnya kabur adalah apa yang saya maksudkan. Anda benar, pada umumnya dokumentasi sangat rinci.
plumdog

Jawaban:

10

Saya cukup sering harus mensetup MS SQL Server dan bertanya-tanya apakah ada yang bisa memberikan saran untuk mengkonfigurasi akun yang harus dijalankan oleh layanan. IMO ini secara samar-samar didokumentasikan oleh Microsoft, sementara mereka mengarahkan Anda ke arah yang benar, saya tidak pernah bisa menemukan contoh konkret.

Ini sebenarnya didokumentasikan secara menyeluruh: http://msdn.microsoft.com/en-us/library/ms143504.aspx

Apakah ada bagian yang tidak Anda yakini?

Untuk penerapan sederhana \ lingkungan pengembangan, boleh saja menggunakan default akun virtual yang digunakan penginstal: mis. NT SERVICE \ MSSQLSERVER

Ini akan tergantung pada lingkungan. Saya, secara pribadi, benci menemukan server yang seseorang setup menggunakan akun lokal dan meminta untuk mendapatkan akses ke sumber daya jaringan beberapa waktu di masa depan, di antara masalah lainnya.

Untuk produksi dan dalam lingkungan domain, disarankan untuk menggunakan Akun Layanan Terkelola, atau membuat akun pengguna domain (bukan admin) untuk setiap layanan.

Sekali lagi, tergantung, tetapi secara umum saya akan setuju (contoh counter akan menjadi kelompok ketersediaan di mana masuk akal untuk menggunakan akun domain tunggal di semua contoh).

Diduga jika Anda menggunakan akun domain pada saat pemasangan, penginstal akan menetapkan izin yang diperlukan untuk Anda.

Kecuali jika ada kegagalan, dll, itu akan melakukannya. Saya tidak yakin mengapa bagian "Diduga".

Jika mengubah akun layanan pada instalasi yang ada dari akun virtual ke akun domain, rekomendasinya adalah menggunakan manajer konfigurasi SQL Server untuk mengatur akun layanan baru. Diduga ini akan mengatur izin yang diperlukan untuk Anda.

Saat mengubah salah satu layanan untuk SQL Server, selalu gunakan SSCM. Selalu. Titik. Ini akan mengatur izin untuk akun baru ke dasar-dasar. Jika sebelum akun sistem lokal digunakan dan izin tidak terbatas untuk semua yang ada di sistem telah, saya akan mengharapkan sesuatu gagal izin setelah perubahan karena keamanan yang lebih ketat. Itu bukan kesalahan SQL Server SSCM, itu kesalahan admin karena tidak memberikan izin EXTRA yang tepat (seperti mengakses berbagi jaringan, folder terbatas, item di luar ruang lingkup pemasangan SQL Server, dll.)

Saya baru saja mencoba mengubah akun layanan di instalasi yang ada ke akun domain dan itu akan memberi saya kegagalan logon sampai saya memberikan izin akun 'masuk sebagai layanan', yang bertentangan dengan bagian di mana manajer konfigurasi SQL Server akan mengatur yang diperlukan izin. (Meskipun saya tidak yakin apakah GPO mungkin telah mengganggu pengaturan kebijakan keamanan lokal ini)

Kedengarannya seperti GPO yang menyebabkan masalah (IMHO). Bukan yang pertama kali :)

Jadi pertanyaan saya adalah, jika Anda membuat akun pengguna domain baru untuk setiap proses SQL Server izin apa yang harus ditetapkan untuk setiap akun?

Saya akan secara eksplisit mengatur izin apa pun di luar yang dinyatakan dalam tautan msdn yang saya miliki di atas (juga diberikan oleh @joeqwerty dan di OP Anda). Misalnya, pada folder "cadangan" pada jaringan berbagi, pada drive baru ditambahkan untuk menyimpan database baru (di mana pengaturan sudah berjalan tetapi drive tidak ada), dll.

Tetapi tidak jelas bagi saya jika itu adalah sesuatu yang harus saya lakukan secara manual untuk pengguna yang saya buat untuk menjalankan layanan, atau apakah menggunakan SQL config manager harus secara otomatis mengatur izin ini.

Kecuali ada sesuatu yang sangat rusak dengan server, ini tidak harus diberikan secara manual.

Sean Gallardy
sumber
Terima kasih atas balasan Anda, saya setuju dengan komentar Anda. Saya men-setup SQL server pada VM bersih yang berbeda untuk memeriksa ini, dan saya bisa menukar dari akun virtual NT SERVICE / MSSQLSERVER ke akun pengguna domain dan itu berhasil tanpa masalah. Jadi saya pikir jawabannya adalah seperti yang Anda katakan, gunakan SQL Server Configuration Manager untuk mengubah login akun pengguna layanan dan tidak ada izin tambahan yang diperlukan.
plumdog
Satu komentar tambahan, maaf saya bisa membuat pertanyaan saya lebih jelas dengan meletakkan poin utama saya di bagian atas posting yang akan saya lakukan di masa depan. Pertanyaan utama yang saya tidak yakin tentang adalah; [jika Anda membuat akun pengguna domain baru untuk setiap proses SQL Server, izin apa yang harus ditetapkan untuk setiap akun? ...]. Alasan saya merasa dokumentasi itu kabur di bagian ini adalah karena ada daftar izin yang ditetapkan, tetapi tidak jelas apakah SSCM akan mengatur ini untuk Anda.
Plumdog
@ plumdog Per komentar kedua Anda, sebagian besar izin diberikan oleh penginstal. Akun dan sid layanan virtual terikat dengan itu, itulah sebabnya SSCM harus selalu digunakan sehingga transfer masuk dan keluar dari izin yang terkait dengan yang dilakukan dengan benar, antara lain seperti keamanan terkait dengan enkripsi kunci utama layanan, dll. .
Sean Gallardy