none
Stored procedure'a execute yetkisi vermek ile execute as modu arasındaki fark test ettim istediğim sonuçlara ulaşamadım. RRS feed

  • 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?

    31 Ekim 2013 Perşembe 07:47

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?

    31 Ekim 2013 Perşembe 15:55

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?

    31 Ekim 2013 Perşembe 15:55
  • 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?


    5 Kasım 2013 Salı 09:14
  •  Cevabı netleştirmek açısından, Yani "execute as" yetkisinin dml işlemleri ile alakası yok diyebilir miyiz?
    7 Kasım 2013 Perşembe 07:27
  • 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?

    7 Kasım 2013 Perşembe 08:33
  • 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/




    7 Kasım 2013 Perşembe 12:56