1 Ekim 2016 Cumartesi

Okuma Yapılması Engellenmiş Tablodan SP ile Okuma Yapılabilir mi?

Select yapabilmesi DENY ile engellenmiş kullanıcı SP kullanarak tablodan okuma yapabilir mi?
Bu sorunun cevabı evet ya da hayır şeklinde yanıtlayacağımız kadar basit değil. Okuma yapıp yapamayacağınızı belirleyen başka faktörler de var. Bu nedenle soruyu açıklayacak yazı yazma gereksinimi doğdu.
MS SQL serverda GRANT komutu içi kullanıcılara (Login veya User) yetki tanımlarken, tersine DENY ile yetkiler engellenir.
SALES isimli kullanıcıya  tablo üzerinde Select yetkisi tanımladıktan sonra ilgili kullanıcı tablodan okuma yapabilir.














DENY tanımlandığında ise daha önce SELECT yetkisi verilmiş olsa bile okuma yapamayacaktır.















Şimdi benzer işlemi yapacak stored procedure create edelim ve onunla okuma yapmaya çalışalım. Ne dersiniz okuma yapabilecek miyiz?














Create ettiğimiz SP'ye EXECUTE yetkisi tanımladıktan sonra, kullanıcının tablodan SELECT yapması engellenmiş olmasına rağmen SP'i çağrılıp istenilen kayıt okunabildi. MS SQL server SP'ler çağrıldığında, kullanıcının Execute yetkisi olup olmadığına bakıp eğer yetkisi var ise çalıştırmasını sağlıyor. SP içindeki nesneler üzerindeki yetki kontolünü ise aşamalı olarak yapıyor. Eğer içeride kullanılan nesneler ile SP'nin owner'ı aynı ise herhangi bir yetki kontolü yapmadan çalıştırıyor. Yukarıdaki örneğimiz bu şekilde gerçekleşti. Eğer owner'lar farklı ise alt nesneler için de yetki kontrolü yapıyor.
Create ettiğimiz SP'nin owner'ı değiştirip aynı işlemi tekrarlayalım.








Görüldüğü gibi select yetkisi DENY ile alındığından dolayı okuma yapılamadı ve Sp hata döndürdü.

Hiç yorum yok:

Yorum Gönder