En iyi yanıtlayıcılar
Stored procedure'a execute yetkisi vermek ile execute as modu arasındaki fark test ettim istediğim sonuçlara ulaşamadım.

Soru
-
SQL server 2012 de bir test yaptım. Bu testte bir sp yazdım. Sp' de A tablosuna insert, B tablosuna update var.
Daha sonra , sql server'da bir kullanıcı tanımladım loginuser diye. Bu kullanıcının ilgili test veritabanı üzerinde public yetkisi vardı. Yani DML ve hatta select işlemi dahi yapamıyordu. Dolayısıyla , A ve B tablolarına da insert ve update yapamıyordu. Daha sonra ,
test database'inde loginuser kullanıcısına, sp'yi execute etme yetkisi verdim. Bu yetki sonrasında loginuser kullanıcısı, sp vasıtası ile A ve B tablolarına insert update yapabildi.
Daha sonra , bu kullanıcıdan execute yetkisini kaldırdım. Sp'de değişiklik yaptım, "with execute as owner" yetkisi verdim.
Fakat login kullanıcısı, bu sefer sp'yi çalıştıramadı. Sp'yi çalıştırabilmesi lazım değil miydi? Bunu bana açıklar mısınız?
Yanıtlar
-
Merhaba,
Sp'ye Execute as owner eklemeniz demek ilgili sp'yi execute etme ytkisine sahip kullanıcı bu sp yi cagırdığında kendi yetkileriyle değil sp yi create eden userın(Ownerın) yetkileriyle caliştiracaktır. Peki bunun ne anlamı var zaten sp içinde kullanıcının yetkisi olmasa bile update insert yapabiliyor. evet yapabilir zaten execute as owner bunun için değil daha spesifik izinler için kullanılır örneğin dinamik sqller ya da daha fazla izin gerektirien create drop table gibi ddl işlemlerinin yetkilendirilmesi için kullanılır.
Execute as owner kullansanız bile o sp'yi execute edecek olan user'a execute yetkisi vermelisiniz yoksa Execute as owner her onune gelen bu spyi caliştirsin demek değildir.
SQL Server 2012 Kitabımı incelediniz mi? - Yanıt Olarak Öneren Özgür Duranlıoğlu 2 Kasım 2013 Cumartesi 06:20
- Yanıt Olarak İşaretleyen Burak ORDU 4 Kasım 2013 Pazartesi 07:27
Tüm Yanıtlar
-
Merhaba,
Sp'ye Execute as owner eklemeniz demek ilgili sp'yi execute etme ytkisine sahip kullanıcı bu sp yi cagırdığında kendi yetkileriyle değil sp yi create eden userın(Ownerın) yetkileriyle caliştiracaktır. Peki bunun ne anlamı var zaten sp içinde kullanıcının yetkisi olmasa bile update insert yapabiliyor. evet yapabilir zaten execute as owner bunun için değil daha spesifik izinler için kullanılır örneğin dinamik sqller ya da daha fazla izin gerektirien create drop table gibi ddl işlemlerinin yetkilendirilmesi için kullanılır.
Execute as owner kullansanız bile o sp'yi execute edecek olan user'a execute yetkisi vermelisiniz yoksa Execute as owner her onune gelen bu spyi caliştirsin demek değildir.
SQL Server 2012 Kitabımı incelediniz mi? - Yanıt Olarak Öneren Özgür Duranlıoğlu 2 Kasım 2013 Cumartesi 06:20
- Yanıt Olarak İşaretleyen Burak ORDU 4 Kasım 2013 Pazartesi 07:27
-
Fakat benim yaşadığım sorunda hala bir çelişki var. Ben loginuser'a execute yetkisi versem.
Ama sp içinde "execute as owner" ifadesini kullanmasam dahi kullanıcı sp'yi çalıştırıyor. Fakat sp, içinde A tablosuna insert, B tablosuna update var. Oysaki loginuser kullanıcısında bu yetkiler yok. Execute yetkisi , insert ve update'e de izin veriyorsa, "execute as" ifadesinin ne önemi kalıyor?
- Düzenleyen Sql server Admin 5 Kasım 2013 Salı 09:15
-
-
Merhaba,
Bu sekilde derseniz eğer genellemiş olursunuz. bazı durumlarda mesela cross schema kullanıldıında dml işlemleri için de execute as kullanılabilir.
SQL Server 2012 Kitabımı incelediniz mi? -
Merhaba Arkadaşlar ,
bubile ilegili yazdığım makalede adım adım kafandaki sorulara cevaplayabilirsin ..
Link :
http://sqlturkiye.com/2013/11/07/granting-permission-with-the-execute-as/
- Düzenleyen Yusuf KAHVECİ 7 Kasım 2013 Perşembe 14:50