Granting permission with the EXECUTE AS

Reading Time: 3 minutes

Merhaba Arkadaşlar ,

Bu gün sizlere EXECUTE AS ile yetkilendirmeyi aktaracağım.  Örneklendirmemiz şunlar üzerinden gidecektir aslında ;

İki adet sp_ oluşturacağız ve bu sp_ lerin ikisi için bir kullanıcıya EXEC yetkisi vereceğiz.

Bu şekilde ikisi arasında ki farkı daha iyi görmüş olacağız .

Örneğimize geçmeden önce örneğimizi anlatacağımız tablolarımızı oluşturalım .

Önceden oluşturduğumuz test database ‘imiz üzerinde SQL_TÜRKİYE_1 adında tablo oluşturup içeirsine 1000 adet veri  basıyoruz.

 

Bu şekilde test tablomuzu oluşturmuş olduk . Şimdi örneğimize geçecek olursak .

İlk adım olarak örneğimizi gerşekleştireceğimiz kullanıcımızı oluşturuyoruz. Aşağıda ki script ile kullanıcımızı oluşturabiliriz :

Daha sonra    sp_SQLTR1 adında bir sp_  oluşturacağız. Burada SQL_TÜRKİYE_1 tablosunda ki 100 kaydı SQL_TÜRKİYE_2 tablosuna basacağız.

Şimdi ise EXECUTE AS ‘li ikinci sp_ mizi oluşturuyoruz .

Şu ana kadar iki adet sp ve bir kullanıcı oluşturmuş olduk . Şimdi oluşturduğumuz sp ‘leri çalıştırabilmesi için sqltr kullanıcımıza sp bazlı EXECUTE yetkisi verelim .

Sqltr kullanıcımız ile sisteme login olalım .

1

Aşağıda da görüldüğü üzere sisteme başarılı bir şekilde giriş yapılmıştır .

2

Şimdi ise EXEC yetkisi verdiğimiz sp_ leri EXECUTE etmeye çalışalım .

Sp_SQLTR1 prosedürü için aşağıda ki script ‘i çalıştırdığımızda ;

Msg 262, Level 14, State 1, Procedure sp_SQLTR1, Line 5

CREATE TABLE permission denied in database ‘test’.

4

Yukarıda ki permission yani yetki hatası almaktayız . Prosedürün içerisinde tablo oluştururken yetki hatası ile karşılaşmaktayız.

Peki  Sp_SQLTR2 prosedürünü çalıştırdığımızda nasıl bir sonuçla karşılaşacağız acaba ?

Yukarıda ki scriptimizi çalıştırdığımızda aşağıda ki ekran görüntüsünde gördüğümüz üzere 100 adet kayıdımız SQL_TÜRKİYE_2 tablomuza eklenmiştir.

3

Peki neden sp_SQLTR1 ‘i EXECUTE ettiğimizde Permission hatası aldıkta ikincisinde almadık . İki prosedürümüzün içerisine baktığımızda aralarında ki tek farkın ‘WITH EXECUTE AS OWNER

’ olduğunu görmekteyiz.

Bu bize neyi ifade etmektedir peki  ?

SP ‘ye EXECUTE AS OWNER ekleme sonucu bu sp_ ‘yi EXECUTE edecek kullanıcı bu sp_ yi  kendi yetkileri ile değil Owner ‘ın yetkisi ile çalıştıracak demektir.

 

Aklınıza takılan soruları sorabilirsiniz.

Diğer makalelerimde görüşmek üzere …

Leave a Reply

Your email address will not be published. Required fields are marked *