SQL'de Yetkilendirme GRANT, DENY, REVOKE Kullanımları

DCL, bir veri tabanı ile ilişkili kullanıcıları ve rollerin izinlerini değiştirmek için kullanılır.
GRANT, DENY ve REVOKE temel DCL komutlarıdır.

DCL komutlarını kullanabilmek için SQL Server’da varsayılan değer (default) olarak yetki sahibi olan gruplar:
sysadmin , dbcreator , db_owner , db_securityadmin ‘dir.

Öncelikle sunucuya dışarıdan bir erişim sağlamak için bir giriş (login) oluşturulmalıdır.

CREATE LOGIN BAYRAKTAR WITH PASSWORD="QWERTY123"
komutuyla "QWERTY123" şifresine sahip BAYRAKTAR adında bir kullanıcı oluşturduk.

Şimdi bu login üzerinden bir kullanıcı yaratalım ve GRANT, DENY, REVOKE kullanımlarını inceleyelim.

CREATE USER BAYRAKTAR FOR LOGIN BAYRAKTAR
User oluşturmuş olduk.

GRANT: Kullanıcılara veritabanı nesneleri üzerinde güvenlik ayrıcalıkları vermek için kullanılan komuttur.

Genel yapısı şu şekildedir: GRANT (all | izinler) ON (izneTabiTutulanlar) TO (izinVerilenler)

GRANT CREATE TABLE TO BAYRAKTAR  
BAYRAKTAR kullanıcısına tablo oluşturma yetkisi veriyoruz.

GRANT INSERT,UPDATE,DELETE TO BAYRAKTAR
BAYRAKTAR kullanıcısına güncelleme, silme ve ekleme yetkisi veriyoruz.

GRANT SELECT ON Bilimkurgu TO BAYRAKTAR
BAYRAKTAR kullanıcımızın "Bilimkurgu" tablosundan select çekebilmesine izin verelim.

WITH GRANT OPTION: Dereceli yetkilendirme işleminde kullanılır. Yetki verilmiş kullanıcının kendisinde bulunan yetkileri başka kullanıcılara verebilmesini sağlar.

GRANT SELECT,INSERT ON Bilimkurgu TO BAYRAKTAR WITH GRANT OPTION
BAYRAKTAR kullanıcısına bilimkurgu tablosu üzerinde select ve insert hakkı veriyoruz. Ama with grant option ifadesinden dolayı, BAYRAKTAR kullanıcısı da, başkasına da bu yetkiyi verebilir.

DENY: GRANT komutunun tersidir. Yetkileri engeller.

Genel yapısı şu şekildedir: DENY (ALL | izinler) TO (izinVerilenler) 

DENY CREATE TABLE TO RAMAZAN
RAMAZAN kullanıcısına tablo yaratmayı yasakladık.

DENY INSERT, SELECT ON Bilimkurgu TO RAMAZAN
RAMAZAN kullanıcısının bilimkurgu tablosunda INSERT ve SELECT kullanmasını engelledik.


REVOKE: GRANT ile değiştirdiğimiz hakları eski haline döndürmek için kullanılır. Bir nesneyi oluşturan kullanıcının REVOKE ile nesne üzerindeki yetkilendirme ve kullanma hakkı yok edilemez. 

Genel yapısı şu şekildedir:  REVOKE (all | izinler) TO/FROM (izinVerilenler)

REVOKE ALL ON REGION TO BAYRAKTAR
BAYRAKTAR kullanıcısına verilen tüm yetkileri kaldırır.