ВИДАЙТЕ ВИКОНАННЯ до всіх зберігаються процедур


147

Чи ефективно дана наступна команда дає користувачеві "MyUser" дозвіл на виконання ВСІХ збережених процедур у базі даних?

GRANT EXECUTE TO [MyDomain\MyUser]

Відповіді:


244

SQL Server 2008 і вище:

/* CREATE A NEW ROLE */
CREATE ROLE db_executor

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

Для лише користувача (не для ролі):

USE [DBName]
GO
GRANT EXECUTE TO [user]

28
+1 плюс: він навіть надає ВИКОНАННЯ дозволів для майбутніх збережених процедур, наприклад, тих, яких ще немає у вашій базі даних, але вони будуть створені пізніше.
marc_s

2
Я думаю, що варто зазначити, що, userможливо, вам доведеться знаходитись у квадратних дужках. Це було справедливим у моєму випадку використання хоча б частково, оскільки мій користувач мав приєднаний домен (тобто у ньому був символ \). редагувати: фіксований
нерівномірний нахильний знак

1
Чому б не призначити користувача на роль db_ddladmin? "Члени ролі бази даних db_ddladmin з фіксованою базою даних можуть запускати будь-яку команду мови визначення даних (DDL) у базі даних." - дивіться тут
Майкл Тобіш

1
@MichaelTobisch тут просто потрібно виконати збережені процедури. Роль DDL повинна використовуватися в сценаріях Create, Alter, Drop, ... Ці посилання повинні бути корисними: docs.microsoft.com/en-us/sql/relational-databases/security/… та geeksforgeeks.org/sql-ddl-dml-dcl-tcl-commands
QMaster

2
І наступний рівень додавання користувача до ролі, якщо це врятує когось ще один крок дослідження. АЛЬТЕР РОЛЬ db_executor ДОДАТИ ЧЛЕНА YourUserNameHere
Piwaf

72

SQL Server 2005 запровадив можливість надання дозволу на виконання бази даних за принципом бази даних, як ви описали:

GRANT EXECUTE TO [MyDomain\MyUser]

Це дозволить отримати дозвіл на область баз даних, яка неявно включає всі збережені процедури у всіх схемах. Це означає, що вам не потрібно явно надавати дозволи на збережену процедуру.

Ви також можете обмежити надання дозволу на виконання схеми, якщо ви хочете бути більш детальним:

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


17

Окрім відповідей вище, я хочу додати:


Ви можете замість цього призначити цю роль ролі , а потім призначити її користувачам. Припустимо, ви створили роль myAppRightsчерез

CREATE ROLE [myAppRights] 

тоді ви можете надати права на виконання через

GRANT EXECUTE TO [myAppRights] 

до цієї ролі.


Або, якщо ви хочете зробити це на рівні схеми:

GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]

також працює (у цьому прикладі роль myAppRightsбуде мати права виконання на всі елементи схеми dboпісля цього).

Таким чином, вам доведеться це зробити лише один раз, і ви можете легко призначити / відкликати всі пов'язані права на додаток з користувачем / від користувача, якщо вам потрібно змінити це згодом - особливо корисно, якщо ви хочете створити більш складні профілі доступу.

Примітка. Якщо ви надаєте роль схемі, яка впливає також на елементи, які ви створили пізніше - це може бути корисним або не залежно від дизайну, який ви задумали, тому пам’ятайте про це.


-5

ВИКОНУЙТЕ ВИСТАВКУ [ROLE]

Цей, безумовно, допоможе


Ви не хочете дозволити виконувати публічну роль, це відкриває проблеми безпеки. Просто надайте це користувачеві або ролі. Надання виконавця певним програмам - найкращий спосіб, щоб ви могли контролювати, хто в що потрапляє.
ammills01

Сарказм тут не підходить для питань, що стосуються питань, пов'язаних з питаннями, особливо коли він дає можливі небезпечні результати.
Крістофер Браун

"Кожен логін належить до ролі загальнодоступного сервера, а кожен користувач бази належить до ролі загальнодоступних баз даних. Коли логін або користувач не отримав або заборонив конкретні дозволи на захищений файл, логін або користувач успадковує дозволи, надані публіці на це безпечне "Отже надання будь-яких дозволів PUBLIC, тобто надання цих дозволів усім користувачам. Це велика вразливість. Прочитайте це посилання для додаткових: docs.microsoft.com/en-us/sql/relational-databases/security/…
QMaster

З такими відповідями, не дивно, що там так багато погано захищених веб-сайтів та баз даних. Чоловік Гез.
Дейв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.