SQL Server 2008'de tüm Active Directory grubu güvenlik erişimini nasıl atayabilirim?


40

Entegre güvenliği, bir etki alanında bulunan iç uygulamamda kullanmak istiyorum. Ne yazık ki, bunun işe yaramadığını hiç bulamadım. Belirli bir tabloya okuma / yazma erişimi için tüm Exchange (Active Directory) Grubunun SQL Server'daki rolünü atamak istiyorum. Bu şekilde, herhangi bir kişi işe alındığında bir operatör oluşturmak zorunda kalmam veya birileri kovulduğunda bir operatör silmek zorunda kalmam. Mümkün mü? Bunu yapmak için hangi adımları atabilirim?

Yanıtlar:


48
  • Reklam grubunu giriş olarak ayarlayın. Ve "giriş", kullanıcı / giriş adının AD kavramı değil sunucu düzeyinde giriş anlamına gelir. SQL Server konuşmasında, bu bir sunucu seviyesi sorumlusu
  • Eşlenmiş bir kullanıcı oluşturun. Bir kullanıcının doğrudan masalarda olmasına izin vermemelisiniz. Ve "kullanıcı", kullanıcı AD kavramı değil veritabanı kullanıcısı anlamına gelir: SQL Server konuşmasında, bu bir "veritabanı seviyesi yöneticisi" dir.
  • Role kullanıcı ekle (ayrıca "veritabanı düzeyinde bir yönetici")
  • Tablolardaki rollere verilen HİÇBİR izinler (bir masa veya proc vb. Bir "güvenilir" dir)

Örnek komut dosyası

USE master;
GO
CREATE LOGIN [MYDOMAIN\APPLICATION SUPPORT] FROM WINDOWS;
GO
USE mydb;
GO
CREATE USER [MYDOMAIN\APPLICATION SUPPORT] FROM LOGIN [MYDOMAIN\APPLICATION SUPPORT];
GO
CREATE ROLE rSupport;
GO
EXEC sp_addrolemember 'rSupport', 'MYDOMAIN\APPLICATION SUPPORT';
GO
GRANT SELECT, INSERT,UPDATE, etc ON Mytable TO rSupport;
GO

sp_addrolememberSQL Server 2012 ile başlayarak kullanım ALTER ROLEyerine bırakılmalıdır.


3
SQL kullanıcıları yerine rollere neden izin vermeniz gerektiğini açıklamanız yararlı olacaktır (bu durumda, AD grupları).
Drew Chapin

Belki de "kullanıcı [...] oluşturmak anlamına için , yerine "girişten" giriş [...]"?
Agostino

KULLANICI OLUŞTURUN ... GİRİŞ İÇİN ...; ve ... CREATE USER DAN ... LOGIN; ikisi de benim için çalışıyor (MSSQL2016). Bir fark olup olmadığından emin değil misiniz?
Ters Mühendisi

Hayır, her ikisi de geçerlidir docs.microsoft.com/en-us/sql/t-sql/statements/…
gbn

4

SQL Server içindeki izinleri bir AD Grubuna vermek oldukça kolaydır. T-SQL veya Management Studio ile yapılabilir.

Örneğin, bir AD grubunuz MYDOMAIN\APPLICATION SUPPORTvarsa, oturum açmayı sunucu düzeyinde oluşturur ve ardından veri okuyucu gibi biraz daha ayrıntılı izinler vermek için ayrı veritabanlarına eşlemeler kullanırsınız.

İdeal olarak, tüm uygulama erişimi saklı yordamlar * yoluyla yapılmalıdır, bu nedenle yalnızca o veritabanında saklı yordamlar üzerinde izinler gerekir.

* Görüş güvenlik açısından, belirli bir kullanıcı bazı özel verileri görebilmesi için, bir yordam oluşturmak ve kullanıcı bağışta bulunabileceğini yürütmek o prosedür üzerinde izni, başka bir şey. Kullanıcının doğrudan sorgu yapmasına izin vermek, ilgili tüm tablolarda seçme izni vermek anlamına gelir . Ayrıca prosedürlerle çalışmak ve hata ayıklamak daha kolaydır.

Saklı yordamlar tablo erişimini soyutlar ve erişimi sınırlar. DBA türlerinde "tüm örnek değişkenlerinizi görmeme izin verin: Yöntemleri, alıcıları veya ayarlayıcıları kullanmak istemiyorum" gibi.


3

Gönderen Marc_s yanıtlayan "SQL Server oturum olarak Active Directory kullanıcı grubu eklemek için" :

SQL Server Management Studio'da, gidin Object Explorer > (your server) > Security > Loginsve sağ tıklayın New Login:

görüntü tanımını buraya girin

Ardından açılan iletişim kutusunda, görmek istediğiniz nesne türlerini seçin ( Groupsvarsayılan olarak devre dışı bırakılır - kontrol edin!) Ve nesnelerinizi aramak istediğiniz yeri seçin (örn. Kullanın Entire Directory) ve ardından AD grubunuzu bulun .

görüntü tanımını buraya girin

Artık düzenli bir SQL Server Girişi var - tıpkı tek bir AD kullanıcısı için bir tane oluşturduğunuz gibi. Bu yeni girişe, ihtiyaç duyduğu veritabanlarındaki izinleri verin ve gitmeyin!

Bu AD grubunun herhangi bir üyesi şimdi SQL Server'da oturum açabilir ve veritabanınızı kullanabilir.


2
Bu SO cevabına bağlantı vermek muhtemelen faydalıdır, ancak gönderiye yeni bir şey eklemiyorsunuz, değil mi? Bağlantıyı yorum olarak göndermiş olabilirsiniz.
Andriy M

2
Cevap, Nesne Türü altındaki Grupları kontrol etmek için güzel bir ekran görüntüsüne sahip, çünkü bunu yapmaya çalışırken eksik olduğum şeydi. Bir bağlantı, bence yararlı bir şekilde göstermiyor. Sadece bir sonraki kişiye yardım etmeye çalışıyorum ...
Mien

Ne demek istiyorsun? Genellikle bir bağlantı onu takip etmek için oradadır ve bağlantıyı takip eden herkes konuştuğunuz hoş ekran görüntüsünü ve buraya yeniden gönderdiğiniz diğer her şeyi görür. Yine de tartışmayacağım, sadece fikrimin değişmediğini size bildirmek: bir link (yorumda) da aynısını yapar.
Andriy M

4
Benim düşüncem de değişmedi. Bir yorumdaki bir bağlantı, bir web sayfasındaki gerçek bir resimle aynı bilgileri iletmez. "Göster, söyleme."
Mien

1

Kullanıcı SQL'de Sysadmin yetkisine sahip bir DOMAIN \ SecurityGroup üyesiyse, veritabanlarına erişirken bu kullanılacaktır. Aksi takdirde, her bir veritabanında DOMAIN \ SecurityGroup (lar) ın ne yetki verdiğine bakmanız gerekir. Kullanıcı 2 Güvenlik Grubu üyesiyse, SecGroupA seçme yetkisine ve SecGroupB ekleme yetkisine sahipse, kullanıcı seçip ekleyebilir.

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.