1

Мне нужно ограничить доступ пользователей к SELECT, INSERT, UPDATE и DELETE, чтобы пользователь мог управлять данными только с помощью хранимых процедур, которые я предоставляю.Ограничить пользователя хранимыми процедурами

Так, например

SELECT * FROM Table1 

должен возвращать

The SELECT permission was denied on the object 'Table1' 

однако, если есть хранимая процедура SelectTable1 определяется как

CREATE PROCEDURE SelectTable1 
AS 
BEGIN 
    SELECT * FROM Table1 
END 

(реальный содержит фильтрацию и параметры, так что это не бессмысленно, как выше)

Пользователь должен выполнить его успешно и получить набор результатов.

Но, очевидно, я не успеваю реализовать этот набор разрешений. Может ли кто-нибудь указать мне на какой-то конкретный учебник? MSDN не очень помог.

База данных SQL Server 2012 и все объекты (таблицы и хранимые процедуры) находятся в пользовательской схеме.

ответ

3

Вы можете сделать это, используя GRANT EXEC либо по определенным процедурам, либо по schemas или по базе данных.

Следующий пример предоставляет разрешение на выполнение хранимой процедуры HumanResources.uspUpdateEmployeeHireInfo в роли приложения под названием Recruiting11.

USE AdventureWorks2012; 
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo 
    TO Recruiting11; 
GO 
+0

Это работает, за исключением того, что я получаю Разрешение SELECT было отклонено на объекте «Таблица1» при попытке выполнить процедуру, как и при необработанном запросе. – adontz

+1

@adontz Пожалуйста, ознакомьтесь с целями собственности http://technet.microsoft.com/en-us/library/aa905173%28v=sql.80%29.aspx –

2

Благодаря Igor у меня на правой странице MSDN и последовали ссылки прав.

Однако использование цепей собственности предложила было слишком сложным для меня, так что я использовал

WITH EXECUTE AS OWNER 

на моих хранимые процедуры и что работает очень хорошо. Когда я вхожу в систему с использованием ограниченного пользователя, я вижу только процедуры, никаких таблиц вообще, и я могу выполнять процедуры, но даже не выбирать из таблиц.

Кроме того, я хочу упомянуть, что эта концепция очень похожа на setuid и поэтому была мне знакома.

Я отмечаю ответ Igors как ответ, потому что цепочки собственности, по-видимому, более общие, просто хотели поделиться информацией, которую я нашел.

Смежные вопросы