Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вопрос по execute as  [new]
Michail A.
Member

Откуда:
Сообщений: 91
Добрый день!

Подскажите, пож-та.

Есть 2 БД, в них под dbo создаю таблицы.

Затем в 3 БД создаю процедуру под dbo на select из этих 2 таблиц.
В процедуре прописываю with execute as owner (dbo).

При попытке выполнения процедуры, получаю ошибку ...is not able to access the database... under the current security context".

Когда делаю процедуру with execute as caller - всё ок.

Чего может не хватать?
27 май 19, 10:25    [21894476]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
invm
Member

Откуда: Москва
Сообщений: 8813
http://www.sommarskog.se/grantperm.html
27 май 19, 10:27    [21894480]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 872
учетная запись должна быть во всех базах.
свойство баз даннных DB cross db ownership chaining должно быть включено.
27 май 19, 11:16    [21894518]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
Michail A.
Member

Откуда:
Сообщений: 91
Slava_Nik,

Помогло включение данной опции для всех БД

ALTER DATABASE [test] SET TRUSTWORTHY ON;

При этом DB cross db ownership chaining (ALTER DATABASE Database SET DB_CHAINING ON) нигде не указывал.

Это нормально?
27 май 19, 11:25    [21894529]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 872
Michail A.,
да, нормально.


DB_CHAINING можно не включать тогда
27 май 19, 11:59    [21894597]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
Michail A.
Member

Откуда:
Сообщений: 91
Спасибо!
27 май 19, 12:02    [21894600]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
msLex
Member

Откуда:
Сообщений: 6741
Slava_Nik
учетная запись должна быть во всех базах.


Не обязательно, достаточно в базах иметь grant connect для guest.
27 май 19, 12:35    [21894663]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
msLex
Member

Откуда:
Сообщений: 6741
Michail A.
Slava_Nik,

Помогло включение данной опции для всех БД

ALTER DATABASE [test] SET TRUSTWORTHY ON;

При этом DB cross db ownership chaining (ALTER DATABASE Database SET DB_CHAINING ON) нигде не указывал.

Это нормально?


Для всех баз не обязательно, достаточно для той(тех), где находится процедура с "execute as owner".
27 май 19, 12:59    [21894705]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
Michail A.
Member

Откуда:
Сообщений: 91
msLex,

спасибо за уточнение!
27 май 19, 13:20    [21894738]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
Michail A.
Member

Откуда:
Сообщений: 91
подскажите, а существует ли похожая опция (with execute as -//-) для представлений и функций?
27 май 19, 13:38    [21894779]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
invm
Member

Откуда: Москва
Сообщений: 8813
Michail A.,

Если уж решили сделать дыру в безопасности, задействовав trustworthy - хотя бы уберите у владельца БД админские полномочия, если таковые имеются.
27 май 19, 13:49    [21894797]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
Michail A.
Member

Откуда:
Сообщений: 91
invm, а в чем дыра?
27 май 19, 13:57    [21894808]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1047
Michail A.,

Вам invm привел в самом начале статью, прочитайте ее, она хоть и большая но полезная.
27 май 19, 14:05    [21894818]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по execute as  [new]
invm
Member

Откуда: Москва
Сообщений: 8813
Michail A.
invm, а в чем дыра?
Любой пользователь, входящий в роль db_owner или имеющий impersonate на dbo, может выполнить код от имени владельца БД.
27 май 19, 14:08    [21894823]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить