İzinler veritabanı nesnelerine erişim haklarıdır. Hatırlayacağınız gibi kullanıcının sisteme girebilmesi için login ismine ve login ismiyle ilişkilendirilmiş veritabanı kullanıcı adına( user name) gereksinim duyulur. Kullanıcı sistme girdikten sonra izinler devreye girer. İzinler kullanıcının hangi veritabanını kullanacağını ve hangi işlemleri yapabileceğini belirtir.
İzinler bir role veya kullanıcıya verilebilir. Her veritabanının bir sahibi vardır. Varsayım olarak o nesneyi oluşturan nesnenin sahibidir. Nesne oluşturulduktan sonra haklar başkasına devredilebilir. Sysadmin rolü sistem veritabanları, kullanıcıların oluşturdukları veritabanındaki tüm nesnelere tam erişim hakkına sahiptirler. Public role ise özel bir roldür.. Public rol veritabanına erişecek kullanıcı için varsayılan izinleri verir. Bu rol silinemez, fakat etki alanı azaltılabilir. Çünkü herbir kullanıcı bu izne sahiptir.
İzin Tipleri
Veritabanı üzerinde herhangi bir işlem yapabilmek için kullanıcının izni olması gerekir. İsiznler 3 kategoriye ayrılır.
Veritabanı nesneleri il ilgili olan haklardır. Veritabanı nesneleri tablolar, saklı yordamlar, udf ler viewlerdir.
Nesne izinleri aşağıdadır.
Veritabanı içerisinde bir nesne oluşturma veya yeni bir veritabanı oluşturmaya yönelik olan izinlerdir.
Komut izinleri aşağıdadır.
Server ve Veritabanı düzeyindeki rollere izin verilmesidir. Örnek olarak db_owner rolü veritabanı üzerindeki tüm izinlere sahiptir.
İzinlerin Yönetimi
Grant, Deny ve Revoke komutları kullanıcı veya role izin verme, var olan izinlerini alma komutlarıdır.
GRANT | Positive | Kullanıcı veya role izin verir. |
REVOKE | None | Kullanıcı veya role iznini geri alır. Miras kalan rol izni iptal edilir. |
DENY | Negative | Kullanıcı veya role iznini geri alır. Miras kalan rol izni iptal edilmez. |
İzinlerle ilgili örnek için, kayseri isimle user kullanılacaktır. Bu user kayserigundem veritabanını erişecek kayserigundem login ismiyle ilişkilendirilmiştir.
Örnek
select * from haber
haber tablosundaki tüm kayıtları listeler.
deny select on haber to kayseri
kayseri kullanıcısı için haber tablosunda kayıtları listeleme izni kaldırılmıştır. select * from haber cümleciği izin olmadığından çalışmaz. Kayseri kullanıcısına select komutunu kullanabilmesi için tekrar izin verelim.
revoke select on haber to kayseri
Kullanıcıya nesne izinleri, veritabanı adı altında bulunan security-users altındaki ilgili user a (örneğimizde kayseri) çift tıklanarak securables kısmından, add butonuna tıklanarak görsel olarak yapılabilir. Add kısmında belirli bir nesne seçilebilir, tüm nesneler seçilebilir veya bir role seçilebilir.