Tüm saklı yordamlara YÜRÜTÜN VER


Yanıtlar:


250

SQL Server 2008 ve Üstü:

/* CREATE A NEW ROLE */
CREATE ROLE db_executor

/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor

Yalnızca bir kullanıcı için (bir rol değil):

USE [DBName]
GO
GRANT EXECUTE TO [user]

30
+1 artı: Gelecekteki saklı yordamlara, örneğin henüz veritabanınızda bulunmayanlar - ancak daha sonra oluşturulacaklar için YÜRÜTME izinleri bile verir.
marc_s

2
userKöşeli parantez içinde olmanız gerekebileceğini belirtmekte fayda var. Bu benim kullanım durumumda en azından kısmen, kullanıcımın ekli bir etki alanına sahip olması nedeniyle doğruydu (yani, içinde bir \ karakteri vardı). düzenleme: çıkış karaktersiz eğik çizgi karakteri düzeltildi
PrinceTyke

1
Kullanıcıyı neden db_ddladmin rolüne atamıyorsunuz? "Db_ddladmin sabit veritabanı rolü üyeleri, bir veritabanındaki herhangi bir Veri Tanımlama Dili (DDL) komutunu çalıştırabilir." - buraya
Michael Tobisch

1
@MichaelTobisch burada sadece Depolanan Prosedürleri yürütmeniz gerekiyor. DDL Rolü Oluşturma, Değiştirme, Bırakma ... senaryolarında kullanılmalıdır. Bu bağlantılar yararlı olmalıdır: docs.microsoft.com/en-us/sql/relational-databases/security/… ve geeksforgeeks.org/sql-ddl-dml-dcl-tcl-commands
QMaster

2
Ve bir kullanıcıyı başka bir araştırma adımından kurtarması durumunda bir role kullanıcı eklemenin bir sonraki düzeyi. ROLÜ DEĞİŞTİRİN db_executor Buraya ÜYE EKLE Kullanıcı Adı
Piwaf

73

SQL Server 2005 , açıkladığınız gibi, bir veritabanı ilkesine veritabanı yürütme izinleri verme yeteneği getirdi :

GRANT EXECUTE TO [MyDomain\MyUser]

Bu, tüm şemalardaki tüm saklı yordamları örtük olarak içeren veritabanı kapsamında izin verecektir. Bu, depolanan yordam başına açıkça izin vermeniz gerekmediği anlamına gelir.

Daha ayrıntılı olmak istiyorsanız, şema yürütme izinleri vererek de kısıtlayabilirsiniz :

GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]

5
Bunu belirli bir şemaya yapabilmek harika, bu nedenle sys üzerindeki izinlerden kaçınmak
RemarkLima

17

Yukarıdaki cevaplara ek olarak şunu eklemek istiyorum:


Bunun yerine bunu bir role atamak ve ardından rolü kullanıcılara / kullanıcılara atamak isteyebilirsiniz. myAppRightsÜzerinden bir rol oluşturduğunuzu varsayalım

CREATE ROLE [myAppRights] 

daha sonra aracılığıyla yürütme hakları verebilirsiniz

GRANT EXECUTE TO [myAppRights] 

bu role.


Veya şema düzeyinde yapmak istiyorsanız :

GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]

ayrıca çalışır (bu örnekte, rol myAppRightsdaha dbosonra şemanın tüm öğeleri üzerinde yürütme haklarına sahip olacaktır ).

Bu şekilde, bunu yalnızca bir kez yapmanız gerekir ve ilgili tüm uygulama haklarını daha sonra değiştirmeniz gerekirse bir kullanıcıya kolayca atayabilir / iptal edebilirsiniz - özellikle daha karmaşık erişim profilleri oluşturmak istiyorsanız yararlıdır.

Not: Bir şemaya bir rol verirseniz, bu daha sonra oluşturacağınız öğeleri de etkiler - bu, amaçladığınız tasarıma bağlı olarak yararlı olabilir veya olmayabilir, bu nedenle bunu aklınızda bulundurun.


-5

[ROLE] İÇİN UYGULAMA VERİN

Bu kesinlikle yardımcı olur


Kamusal rolü yürütmek istemezsiniz, bu güvenlik kaygılarına yol açar. Sadece kullanıcıya veya role verin. Belirli işlemlere yürütme izni vermek, kimin neye vurduğunu kontrol edebilmeniz için en iyi yoldur.
ammills01

Buradaki alay, bir Soru-Cevap sitesi için uygun değildir, özellikle de muhtemelen tehlikeli sonuçlar verdiğinde.
Christopher Brown

"Her oturum açma, genel sabit sunucu rolüne aittir ve her veritabanı kullanıcısı, genel veritabanı rolüne aittir. Bir oturum açma veya kullanıcıya güvenli bir dosyada belirli izinler verilmediğinde veya reddedilmediğinde, oturum açma veya kullanıcı, o güvenli hale getirilebilir "Yani PUBLIC'e herhangi bir izin verilmesi, bu izinlerin tüm kullanıcılara verilmesi anlamına gelir. Bu büyük bir güvenlik açığıdır. Daha fazla bilgi için bu bağlantıyı okuyun: docs.microsoft.com/en-us/sql/relational-databases/security/…
QMaster

Bunun gibi cevaplarla, orada çok sayıda kötü güvenli web sitesi ve veri tabanı olması şaşırtıcı değil. Tanrım.
Dave Lucre
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.