Cara me-refresh grup keamanan AD pada izin Sql Server

12

Saya menggunakan Sql Server 2008 pada Small Business Server 2003; klien menggunakan WinXP.

Saya menambahkan pengguna ke Grup Keamanan Direktori Aktif saya; Mengapa pengguna ini tidak dapat langsung mengakses database? Tampaknya ada penundaan sebelum pengguna dikenali di Sql Server.

Saya menggunakan Grup Keamanan AD untuk izin secara tegas sehingga saya tidak perlu menambahkan pengguna individu di Sql Server. Jadi secara efektif saya tidak perlu melakukan apa pun selain menambahkan pengguna ke Grup Keamanan AD untuk memberikan akses.

Tetapi untuk beberapa alasan Sql Server tidak segera mengenali penambahan. Saya telah melihat ini beberapa kali. Saya menambahkan pengguna ke grup tetapi pengguna itu tidak dapat mengakses data sampai hari berikutnya. Tampaknya itu tidak meminta Active Directory secara real time. Bisakah Anda mengonfirmasi begitu?

Apa yang harus saya lakukan agar Sql Server "menyegarkan" daftar pengguna dari Active Directory?

D_Bester
sumber
Di SQL Server 2008 Management Studio, saya menambahkan login server menggunakan Grup Keamanan dan pada database membuat pengguna dipetakan ke login itu. Itu bagus sekali!
D_Bester
Namun setelah saya menambahkan pengguna baru ke Grup Keamanan itu tidak bisa mengakses database yang ditentukan. Pengguna itu memiliki akses ke server menggunakan grup lain, jadi cukup menguji koneksi ke Sql Server berfungsi dengan baik. Saya menambahkan koneksi ke Sql Server untuk pengguna (di komputernya). Ketika saya menentukan basis data saya ingin mengatakan bahwa basis data tidak tersedia.
D_Bester
Spot memeriksa berbagai Pengontrol Domain Saya melihat bahwa replikasi memang selesai setelah 15 menit, tetapi SQL mengabaikan pengguna baru ke grup AD. Restart SQL server menyelesaikan masalah, begitu juga menunggu 24 jam. Pasti cara yang lebih baik.
Aaron Auseth

Jawaban:

12

Pengguna harus keluar dari workstation mereka dan masuk kembali. Itu sebabnya perubahan tampaknya mulai berlaku pada hari berikutnya. Alasan untuk ini adalah bahwa ketika pengguna log pada hari berikutnya mereka mendapatkan token baru dari pengontrol domain dan token ini berisi daftar grup domain yang menjadi anggotanya. Token ini dengan daftar grup domain hanya diperbarui ketika pengguna masuk ke komputer mereka, jadi jika pengguna tidak pernah keluar log token tidak pernah diperbarui.

Ada juga penundaan replikasi domain multi-situs yang perlu dipertimbangkan jika pengontrol domain Anda berada di lokasi fisik yang berbeda.

mrdenny
sumber
1
Apakah ada perintah atau skrip yang dapat dijalankan pada workstation untuk "menyegarkan" token AD-nya sehingga ia dapat "tahu" pengguna sekarang menjadi anggota grup-domain baru, dan dengan demikian menghindari penundaan? --Pemutakhiran: tampaknya satu orang direkomendasikan klist purgedi dba.stackexchange.com/a/44922/29371 , tetapi dengan peringatan bahwa itu mungkin merusak aksesor sumber daya yang di-cache lainnya dimana pengguna harus membangun kembali / menghubungkan kembali ke.
NateJ
@ Mrdenny Ada rekomendasi tentang cara menangani ini untuk akun layanan? Kami menjalankan semua instance SQL di bawah akun layanan, dan menggunakan akun layanan ini untuk koneksi antara SQL Server, dan untuk SSRS, dll. Pada waktu tertentu, kami memiliki banyak koneksi antara mesin. Kami benar-benar tidak dapat memutuskan semua koneksi dan melakukan login baru di suatu tempat untuk mendapatkan info grup AD baru.
SomeGuy
Untuk akun layanan, yang dapat Anda lakukan adalah me-restart layanan pada mesin yang membutuhkan hak baru.
mrdenny
5

Ketika pengguna log on, mereka diberi token keamanan yang mencakup semua informasi tentang keanggotaan grup mereka.

Token ini berlanjut hingga pengguna log - pada saat itu dibuang - bahkan jika Anda membuat perubahan pada keanggotaan grup dalam AD untuk sementara waktu. Perubahan yang Anda buat hanya akan berlaku pada saat pengguna masuk dan menerima token keamanan baru.

Anda dapat mereproduksi skenario yang sama saat memberikan izin pada sistem file, misalnya; ini adalah perilaku AD, bukan perilaku SQL Server.

Jon Seigel
sumber
1

Jadi Anda mendapatkan hasil langsung akan mendapatkan kredensial baru setiap kali dengan menjalankan cmd / script seperti:

runas /netonly /user:domain\username "sqlcmd -S serverName -d dbname -q \"insert into testpermissions values (65)\""

menggunakan cmd.exe (bukan PowerShell, saya tidak bisa mendapatkan kutipan dengan benar).

Dengan begitu Anda akan mendapatkan token baru masing-masing dan setiap kali (tetapi harus memasukkan pwd Anda). Anda mungkin dapat melakukan sesuatu dengan teks kata sandi yang disimpan juga, jika semuanya terlalu berat.

Bagaimanapun, bekerja untuk saya dan saya harap ini membantu orang lain.

Karl
sumber