Sql Server izinlerinde AD güvenlik grubunu yenileme


12

Small Business Server 2003 üzerinde Sql Server 2008 kullanıyorum; istemci WinXP kullanıyor.

Active Directory Güvenlik Grubuma bir kullanıcı ekledim; Bu kullanıcı neden veritabanına hemen erişemiyor? Kullanıcı Sql Server'da tanınmadan önce bir gecikme var gibi görünüyor.

Sql Server'da bireysel kullanıcılar eklemem gerekmediği için izinler için AD Güvenlik Grupları kullanıyorum. Bu yüzden etkili bir şekilde erişim sağlamak için kullanıcıyı AD Güvenlik Grubuna eklemekten başka bir şey yapmam gerekmiyor.

Ancak bazı nedenlerden dolayı Sql Server eklentiyi hemen tanımıyor. Bunu birkaç kez gördüm. Kullanıcıyı gruba ekliyorum ancak kullanıcı ertesi güne kadar verilere erişemiyor. Active Directory'yi gerçek zamanlı sorgulamadığı anlaşılıyor. Öyle olduğunu teyit edebilir misiniz?

Sql Server'ın Active Directory'deki kullanıcı listesini "yenilemesi" için ne yapmam gerekir?


SQL Server 2008 Management Studio'da, Güvenlik Grubu'nu kullanarak bir sunucu girişi ekledim ve veritabanında bu girişle eşlenen bir kullanıcı oluşturdum. Harika çalışıyor!
D_Bester

Ancak Güvenlik Grubu'na yeni bir kullanıcı ekledikten sonra belirtilen veritabanına erişemedi. Bu kullanıcının sunucuya başka bir grup kullanarak erişimi vardır, bu nedenle Sql Server ile bağlantıyı test etmek işe yaradı. (Bilgisayarında) kullanıcı için Sql Server bağlantısı ekliyordu. Veritabanını belirlediğimde veritabanının kullanılamadığını söyledi.
D_Bester

Çeşitli Etki Alanı Denetleyicilerini nokta denetimi Çoğaltma işleminin gerçekten 15 dakika sonra tamamlandığını görüyorum, ancak SQL yeni kullanıcıyı AD grubuna aldırmıyor. SQL sunucusunu yeniden başlatmak sorunu çözer, bu da 24 saat beklemektedir. Daha iyi bir yol olmalı.
Aaron Auseth

Yanıtlar:


12

Kullanıcının iş istasyonundan çıkış yapması ve tekrar oturum açması gerekir. Bu yüzden değişikliklerin ertesi gün geçerli olduğu görülüyor. Bunun nedeni, kullanıcı ertesi gün oturum açtığında, etki alanı denetleyicisinden yeni bir belirteç alması ve bu işaretin üyesi oldukları etki alanı gruplarının listesini içermesidir. Etki alanı grupları listesiyle birlikte bu belirteç yalnızca kullanıcı bilgisayarında oturum açtığında güncellenir, bu nedenle kullanıcı hiçbir zaman oturumu kapatmazsa işaret hiç güncellenmez.

Etki alanı denetleyicileriniz farklı fiziksel konumlarda ise dikkate alınması gereken çok siteli etki alanı çoğaltma gecikmeleri de vardır.


1
Kullanıcının şimdi yeni etki alanı grubunun bir üyesi olduğunu "bilmesi" ve böylece gecikmeden kaçınması için bir iş istasyonunda AD belirtecini "yenilemek" için çalıştırılabilecek bir komut veya komut dosyası var mı? --Güncelleme: Bir kişinin dba.stackexchange.com/a/44922/29371klist purge adresinde tavsiye ettiği , ancak kullanıcının yeniden kurması / yeniden bağlanması gereken önbelleğe alınmış diğer kaynak erişimcilerini kırabileceği konusunda uyarıcı olduğu görülüyor .
NateJ

@mrdenny Hizmet hesapları için bunun nasıl ele alınacağına dair herhangi bir öneriniz var mı? Hizmet hesapları altında tüm SQL örneklerini çalıştırırız ve bu hizmet hesaplarını SQL Server'lar ve SSRS vb. İçin bağlantılar için kullanırız. Herhangi bir zamanda, makineler arasında birçok bağımız vardır. Yeni reklam grubu bilgileri almak için tüm bağlantıları gerçekten kesemeyiz ve bir yerlerde yeni bir giriş yapamayız.
SomeGuy

Servis hesapları için, tüm yapabileceğiniz yeni haklara ihtiyaç duyan makinede hizmeti yeniden başlatın.
mrdenny

5

Bir kullanıcı oturum açtığında, grup üyeliği hakkındaki tüm bilgileri içeren bir güvenlik belirteci atanır.

Bu simge, kullanıcı oturumu kapatıncaya kadar (bu noktada atılır), AD'deki grup üyeliğinde değişiklik yapsanız bile devam eder. Yaptığınız değişiklikler yalnızca kullanıcı bir sonraki oturum açışında ve yeni bir güvenlik belirteci aldığında etkili olur.

Bir dosya sistemine izin atarken aynı senaryoyu yeniden oluşturabilirsiniz; bir AD davranışı, bir SQL Server davranışı değil.


1

Bu nedenle, bir cmd / komut dosyası çalıştırarak her seferinde yeni kimlik bilgileri almak için anında sonuç alırsınız:

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

cmd.exe kullanarak (powershell değil, tırnak doğru alamadım).

Bu şekilde her seferinde yeni bir jeton alacaksınız (ancak pwd'nizi girmek zorundasınız). İşler çok zahmetliyse, muhtemelen kayıtlı bir şifre metniyle de bir şeyler yapabilirsiniz.

Her neyse, benim için çalışıyor ve umarım başka birine yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.