Sql server login bölümünde herhangi bir logine girdiğimizde yada yeni bir login oluşturacağımız zaman User mapping bölümünden veritabanımıza veritabanı seviyesinde yetki veririz daha sipesifik yetki vermek için veritabanı sağ tıklayıp permissiondan yetkileride verebilirz. Burada önemli bir detay olarak with grant yetkisi verdiğimizde o kullanıcı o veritabanı altında yetkili başka bir kullanıcıya aynı yetkileri verebilir olacak.
Bu yetkiyi verebilmek için LOGIN1 login’i TEST veritabanı altında yetkili, LOGIN2 de aynı veritabanı altında yetkili şimdi ben ilk kullanıcıyla giriş yaptığımda diğer kullanıcıyı database’in üzerine sağ tıkladığımda göremem ama ben ilk kullanıcının diğer login’leri görebilmesi için administrator login’inden LOGIN1 kullanıcısına ilgili veritabanı üzerinde db_owner yetkisi verdiğimde diğer loginleride görmüş olur. Bu düzenlemeden sonra LOGIN1 kullanıcısına veritabanı üzerinde permissions bölümünden LOGIN1’e herhangi bir grant ve with grant yetkisi verip neler olduğunu gözlemleyeceğiz.

İlk başta bir login oluşturuyorum daha sonra bu login’i TEST veritabanı üzerinde yetki veriyorum.

Kullanıcımızı TEST veritabanında yetkilendiriyorum. Daha sonra bu oluşturmuş olduğum LOGIN1 kullanıcıyla login olalım ve sql server’a Login ile bağlantımızı yaptıktan sonra gözlemleyelim.


Login kısmında sadece ilgili login’imiz var. Çünkü database üzerinde başka bir login yok. S1\TEST Administrator login’imizden LOGIN2 diye yeni bir login oluşturalım ve aynı veritabanı altında yetki verelim. Script ile yapalım.
USE [master]
GO
CREATE LOGIN [LOGIN2] WITH PASSWORD=N'1', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [YUNUS]
GO
CREATE USER [LOGIN2] FOR LOGIN [LOGIN2]
GO
Login’imizi oluşturduktan sonra tekrardan LOGIN1 kullanıcı altında gözlemleyelim.

LOGIN2 kullanıcımızın gelmediğini görmüş olduk. Şimdi administrator kullanıcısından LOGIN1 kullanıcısına With Grant yetkisi verelim.

Bu yetkiyi verdikten sonra tekrar LOGIN1 kullanıcısıyla login olalım ve TEST veritabanı üzerindeki login’leri gözlemleyelim. Tekrardan gelmediğini göreceksiniz LOGIN1’in herhangi bir değişiklik yapması için db_owner yetkisinde olması gerekmektedir. LOGIN1 veritabanı üzerinde public yetkisi olduğu için ne kadar yetki vermiş gibide düşünsek sql server en kısıtlayacı kural hangisi ise onu kullanır.

LOGIN2 kullanıcısının geldiğini görmüş olduk. Şimdi bir tane daha login oluşturayım bakalım gelecek mi?

Geldiğini görmüş olduk.

LOGIN1 kullanıcısı sql server’a bağlandığı zaman veritabanı üzerine sağ tıklayarak permissions bölümünden LOGIN2 ve LOGIN3 kullanıcısına kullanıcısına herhangi bir yetkiyi verebilir. çünkü db_ owner yetkisine sahip.
LOGIN1 kullanıcısı db_owner yetkilerine sahip olduğu için her işlemi yapabilir. Bu LOGIN1 kullanıcısıyla giriş yaptıktan sonra TEST veritabanı üzerine sağ tıklayarak permission bölümünden LOGIN2 veya LOGIN3 kullanıcılarına istediği yetkiyi verebilir biz şuan da sadece LOGIN2 kullanıcısına veritabanının yedeğini alma yetkisi vereceğiz ve bu yetkiyi LOGIN2 kullanıcısının başka loginlerede vermesi için with grant yetkisi vermiş olacağız.(LOGIN2 ve LOGIN3 kullanıcıları TEST veritabanında public yetkilerine sahip)

LOGIN2 kullanıcısıyla login olduktan sonra TEST veritabanı üzerinde backup işlemini başarılı bir şekilde gerçekleştirmiş oluyoruz.

LOGIN2 kullanıcısı LOGIN3 kullanıcısına database backup yetkisi verebilir ama başka bir yetki veremez. Hata mesajıyla karşılaşırız.
Not: LOGIN2’nin kendinden sonraki kullanıcılara yetki verilmesi için diğer login görebilmesi gerekmektedir. Administrator kullanıcısından instance bazı LOGIN2 kullanıcısına view any defination yetkisi verildiğinde LOGIN2 kullanıcısı kendi kullanıcısı ile login olduktan sonra yetkili olduğu veritabanı altında diğer loginleri görmesi sağlanır.


Yukarıdaki resimde dikkat edersek her login başka bir login’e bu yetkiyi veriyor. LOGIN3 kullanıcısıyla login olduktan sonra backup’ın başarılı bir şekilde alındığını görmüş oluyorum. Bu backup’ı dikkat edersek LOGIN3 kullanıcısıyla yapmış olduk.

Ama LOGIN2 başka bir yetki vermeye kalkışırsa LOGIN3 kullanıcısına hata mesajı ile karşılaşmaktadır. Çünkü sadece Backup için With grant yetkisi vermiştik. Buda LOGIN2 kullanıcısına view any defination yetkisinin doğru bir yetki olduğunu göstermektedir.

Başka bir makalede görüşmek üzere..
“Onlara kısa bir süre hayatın nimetlerini tattırır, sonra da onları çok ağır bir azaba katlanmaya mecbur bırakırız.”Lokman-24