SQL Server'da Yetkilendirme:Grant,Deny,Revoke


Merhaba arkadaşlar,
 Bugün sizlerle SQL Server'da yetkilendirme konusun değineceğiz. Konu içerisinde kullanmak üzere bir login ve user tanımlayarak giriş yapalım.
create login menzeher with password=123456
 komutuyla 123456 şifresine sahip, menzeher adında bir kullanıcı oluşturmuş olduk. Şimdi bu login üzerinden bir kullanıcı yaratalım ve asıl konumuza başlayalım:
create user menzeher for login menzeher
 User oluşturmuş olduk (Login ile user name aynı isimde.)
GRANT: Yetki vermek için kullanılır.
 Genel yapısı şöyledir:
 grant (all | izinler)
 on (izneTabiTutulanlar)
 to (izinVerilenler)
 Hemen yaratığımız kullanıcı üzerinden örnekleyelim:
grant create table to menzeher --bu ifade ile menzeher adli kullaniciya tablo yaratma yetkisi vermis olduk
İsterseniz aynı kullanıcımıza tabloya eleman ekleme, silme ve güncelleme yetkileri verelim:
grant insert,update,delete to menzeher
Şimdi isterseniz herhangi bir tablo üzerinden select çekebilme yetkisi verelim. Ben Northwind kullandım, siz istediğiniz db ve tabloyu kullanabilirsiniz.
grant select on region to menzeher --bu ifade ile menzeher adli kullanici, region tablosundan select cekebilir.
WITH GRANT OPTION: Dereceli yetkilendirme işleminde kullanılır. Nedir bu peki? İzin verdiğiniz kullanıcının da izin verebilme yetisi kazanmasıdır. Yani siz bir kullanıcıya herhangi bir yetki verdiniz. O kullanıcı da, sizin ona verdiğiniz yetkilerin aynısını, başka bir kullanıcıya verebilir.
grant select,insert on region to menzeher
with grant option
 ifadesi ile biz, menzeher adlı kullanıcıya region tablosu üzerinde select ve insert hakkı veriyoruz. Ama with grant option ifadesinden ötürü, menzeher kullanıcısı da, başkasına da bu hakkı verebilir. Fazla zaten veremez, kendisi ne kadar hak aldıysa, o kadar..
DENY: Grant ifadesinin tam tersidir. Yetkileri engeller; eriştirmez.Genel yapısı şöyledir:
 deny (all | izinler)
 to (izinVerilenler)
deny create table to menzeher --bu ifade ile menzeher kullanicisina tablo yaratmayi yasakladik
deny insert,select on products to menzeher --bu ifade ile menzeher kullanicisinin products tablosuna insert ve select yapmasini engelledik
REVOKE: Grant ile oynadığınız hakları eski haline döndürmek için kullanabilirsiniz bu ifadeyi. Genel yapısı şöyledir:
 revoke (all | izinler)
 to/from (izinVerilenler)
revoke all on region to menzeher --bu ifade ile menzeher kullanicisina verilen tum yetkiler kaldirilir
 Deny neden var peki diyeceksiniz.. Şöyle anlatmaya çalışayım, deny ile bir kullanıcı hiçbir şekilde yasakladığınız şeyleri yapamaz. Ancak revoke dediğinizde, siz sadece yaptığınız işi geri almış oluyorsunuz ve sadece mevcut rol üzerinde işlem yapıyorsunuz. Aynı kullanıcı farklı rollerde bu işi yapmayı sürdürebilir.
 Yukarıda hatırlarsanız with grant option ile yetki verdiğimiz kullanıcılar da aynı yetkileri başka kullanıcılara verebiliyordu. Şimdi biz az önceki revoke örneğimizde, menzeher adli kullanicinin yetkisini kaldirdik. Peki onun yetkilendirdikleri ne olacak? Tam da bu noktada "Cascade" ifadesi devreye giriyor. Cascade ile bu da kaldırılır. Örnekleyelim hemen:
revoke all to menzeher cascade--bu ifade ile menzeher kullanicisinin yetkilendirdigi diger kullanicilarin da yetkilerini kaldirmis olduk
 Görüşmek üzere..