Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Здравствуйте.
Я написал ХП под учетной записью, обладающей фиксированной серверной ролью sysadmin. Предоставил другой учетной записи, из под которой все это будет работать права на выполнение этой ХП. При попытке выполнить ХП происходит ошибка нехватки прав на чтение внутренних таблиц. Допустим я не хочу явно предоставлять этой учетной записи права на чтение всех внутренних таблиц в ХП, как можно решить проблему?
14 июн 13, 09:40    [14432041]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
invm
Member

Откуда: Москва
Сообщений: 9495
1. Ownership Chains
2. EXECUTE AS Clause
14 июн 13, 09:44    [14432066]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
invm,
1. Межбазовые цепочки владение не причем, поскольку в ХП все таблицы принадлежат в одной БД;
2. Пробовал with EXECUTE AS 'Admin', где 'Admin' обладает ролью sysadmin. При попытке выполнить ХП происходит ошибка: The server principal "UserAdmin" is not able to access the database "xxx" under the current security context.
14 июн 13, 09:51    [14432102]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
rsolanov
Здравствуйте.
Я написал ХП под учетной записью, обладающей фиксированной серверной ролью sysadmin. Предоставил другой учетной записи, из под которой все это будет работать права на выполнение этой ХП. При попытке выполнить ХП происходит ошибка нехватки прав на чтение внутренних таблиц. Допустим я не хочу явно предоставлять этой учетной записи права на чтение всех внутренних таблиц в ХП, как можно решить проблему?

Как сказали выше:

ALTER PROCEDURE rpc_name WITH EXECUSE AS OWNER AS...
14 июн 13, 09:52    [14432109]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
1 А ХП в какой базе находится???
14 июн 13, 09:53    [14432110]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
angel_zar
1 А ХП в какой базе находится???
ХП и все внутренние таблицы находятся в той же БД, в контексте которой происходит подключение. То есть все механизмы безопасности, связанные с межбазовыми цепочками владения и т. п. отбрасываем.
14 июн 13, 09:58    [14432128]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
rsolanov,

а execute as owner вы пробовали? Не Admin, а owner
14 июн 13, 10:05    [14432156]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Сергей Викт., видимо я не досказал: ХП принадлежит схеме [schema_xxx], которая в свою очередь принадлежит роли role_xxx.
У этой роли есть явное разрешение на запуск этой ХП, но отсутствуют разрешения на чтение внутренних таблиц.
14 июн 13, 10:15    [14432199]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
invm
Member

Откуда: Москва
Сообщений: 9495
rsolanov
1. Межбазовые цепочки владение не причем, поскольку в ХП все таблицы принадлежат в одной БД;
Читать статью по ссылке с самого начала не пробовали?
rsolanov
Пробовал with EXECUTE AS 'Admin', где 'Admin' обладает ролью sysadmin. При попытке выполнить ХП происходит ошибка: The server principal "UserAdmin" is not able to access the database "xxx" under the current security context.
Ролью sysadmin может обладать логин. Указать логин в предложении execute as для процедуры нельзя. Так что совершенно не понятно что и как вы там выполняете.
rsolanov
ХП принадлежит схеме [schema_xxx], которая в свою очередь принадлежит роли role_xxx.
У этой роли есть явное разрешение на запуск этой ХП
В этом случае роли не нужно явное разрешение на запуск процедуры.
14 июн 13, 10:28    [14432266]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
invm, я прошу помощи, что в итоге необходимо сделать то?
14 июн 13, 10:34    [14432306]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
invm
Member

Откуда: Москва
Сообщений: 9495
rsolanov
invm, я прошу помощи, что в итоге необходимо сделать то?
Либо у ХП и таблицы должен быть один владелец, либо выполнять ХП в контексте пользователя с необходимыми разрешениями.
14 июн 13, 10:43    [14432367]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
rsolanov
я прошу помощи, что в итоге необходимо сделать то?


Вы бы задачу изложили, а не придуманный Вами способ ее решения. Если бы можно было бы с легкостью имперсонироваться в sysadmin - это было бы дырой в системе безопасности MS SQL.
14 июн 13, 10:43    [14432371]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Хорошо, я понял, тогда опишу что именно надо.
В БД есть специально созданная схема, внутри которой имеется набор ХП.
Необходимо настроить безопасность таким образом, чтобы для вызова на выполнение каждой из ХП, входящих в данную схему, не надо было явно прописывать права на чтение вложенных таблиц.
То есть у логина должны быть только права на запуск ХП и все. Как это наиболее грамотно можно реализовать?
17 июн 13, 09:56    [14440291]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
qwerty112
Guest
rsolanov,

14432156
17 июн 13, 09:59    [14440304]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
qwerty112, но это не работает.
17 июн 13, 10:55    [14440695]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov
qwerty112, но это не работает.

Работает.
А когда не работает, то выдает ошибку
17 июн 13, 10:59    [14440732]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
rsolanov
qwerty112, но это не работает.

Работает.
А когда не работает, то выдает ошибку
Ошибка: Connot execute as the database principal becouse the principal "role_xxx" does not exist, this type of principal cannot be impersonated, or you do not have permission.
17 июн 13, 11:20    [14440902]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov
Glory
пропущено...

Работает.
А когда не работает, то выдает ошибку
Ошибка: Connot execute as the database principal becouse the principal "role_xxx" does not exist, this type of principal cannot be impersonated, or you do not have permission.

А вы читали раздел Permissions для EXECUTE AS ?
Или просто прописали EXECUTE AS, посчитав, что этого достаточно ?
17 июн 13, 11:23    [14440947]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory, цитата из msdn:
Для выполнения модуля с указанным предложением EXECUTE AS пользователь должен иметь разрешение EXECUTE на модуль.
Только мне не понятно что тут подразумевается под модулем?
17 июн 13, 11:31    [14441025]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
invm
Member

Откуда: Москва
Сообщений: 9495
rsolanov
ХП принадлежит схеме [schema_xxx], которая в свою очередь принадлежит роли role_xxx.
При таком раскладе, когда владелец схемы роль, вы вообще не сможете создать процедуру с execute as owner.
17 июн 13, 11:32    [14441030]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov
Glory, цитата из msdn:
Для выполнения модуля с указанным предложением EXECUTE AS пользователь должен иметь разрешение EXECUTE на модуль.
Только мне не понятно что тут подразумевается под модулем?

http://msdn.microsoft.com/en-us/library/ms181362.aspx

To specify EXECUTE AS on a login, the caller must have IMPERSONATE permissions on the specified login name. To specify EXECUTE AS on a database user, the caller must have IMPERSONATE permissions on the specified user name. When EXECUTE AS CALLER is specified, IMPERSONATE permissions are not required.
17 июн 13, 11:34    [14441051]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
qwerty112
Guest
rsolanov
qwerty112, но это не работает.

"не работают" - негры в Африке
14152517
17 июн 13, 11:41    [14441118]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
qwerty112, Glory: Владельцем схемы, в которой находятся ХП, является роль. Как вы и подсказали, в ХП прописал "with execute as owner". Этой роли я дал право IMPERSONATE для пользователя БД, с которым связан логин, но все равно та же ошибка.
17 июн 13, 11:56    [14441236]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov
Этой роли я дал право IMPERSONATE для пользователя БД, с которым связан логин, но все равно та же ошибка.

Потому что To specify EXECUTE AS on a login, the caller must have IMPERSONATE
17 июн 13, 12:00    [14441260]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
rsolanov
Этой роли я дал право IMPERSONATE для пользователя БД, с которым связан логин, но все равно та же ошибка.

Потому что To specify EXECUTE AS on a login, the caller must have IMPERSONATE
А разве не это сделал: "Этой роли дал право IMPERSONATE для пользователя БД"?
17 июн 13, 12:05    [14441307]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить