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

Откуда:
Сообщений: 85
Приветствую гуру mssql
Вопрос:
Пользователю разрешено выполнение процедуры, в которой селективный запрос на таблицу
в другой схеме по отношению к процедуре. У пользователь нет прав на чтение этой таблицы,
только через процедуру. Процедура не выполняется, пишет запрет на чтение этой таблицы.
Подскажите в чем тут грабли? Доступ прямого чтение таблиц недопустимо, только через процедуры
Заранее благодарен

версия сервера mssql200r2
25 дек 14, 12:47    [17050614]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
Vlad_ZJ
Member

Откуда:
Сообщений: 85
Vlad_ZJ,
версия сервера mssql2008r2
25 дек 14, 12:48    [17050621]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
Владислав Колосов
Member

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

create proc ...
with execute as тот_у_кого_есть_права_на_таблицу
25 дек 14, 12:59    [17050723]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
Vlad_ZJ
Member

Откуда:
Сообщений: 85
Владислав Колосов,
согласен можно и так, но работало в моем варианте,
что-то произошло и в один момент перестало работать...
разве процедура не обладает правом на чтение таблиц,к которым
обращается
25 дек 14, 13:05    [17050777]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Vlad_ZJ
что-то произошло и в один момент перестало работать...
Известно что произошло - у процедуры и таблицы перестали совпадать владельцы. Читайте про цепочки владения.
25 дек 14, 13:19    [17050877]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
Vlad_ZJ
Member

Откуда:
Сообщений: 85
invm,
спасибо обязательно изучу,
но у всех таблиц и процедур owner = dbo
25 дек 14, 13:55    [17051143]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Vlad_ZJ
invm,
спасибо обязательно изучу,
но у всех таблиц и процедур owner = dbo
Vlad_ZJ
Пользователю разрешено выполнение процедуры, в которой селективный запрос на таблицу
в другой схеме по отношению к процедуре
Это тоже Вы писали?
Владелец=Схема
Где же правда?!
25 дек 14, 14:02    [17051196]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Автор начал путаться в показаниях :)
25 дек 14, 14:12    [17051264]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
o-o
Guest
iap
Vlad_ZJ
invm,
спасибо обязательно изучу,
но у всех таблиц и процедур owner = dbo
Vlad_ZJ
Пользователю разрешено выполнение процедуры, в которой селективный запрос на таблицу
в другой схеме по отношению к процедуре
Это тоже Вы писали?
Владелец=Схема
Где же правда?!

это по умолчанию владелец -- схема.
а если явно сменить владельца, типа
alter authorization on object::usp_p to super_owner

то владелец уже super_owner.
посмотреть можно в sys.objects.principal_id.
или он там явно прописан, или действительно владелец -- схема:
sys.objects
principal_id int
ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.
25 дек 14, 14:20    [17051314]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
o-o
Guest
ну в смысле, владелец схемы, конечно. к-ый тоже преспокойно может быть dbo
25 дек 14, 14:23    [17051326]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Vlad_ZJ
но у всех таблиц и процедур owner = dbo
Чудес не бывает. Либо владельцы разные, либо у вас динамический запрос.
25 дек 14, 14:31    [17051393]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
o-o
Guest
ставлю на разных владельцев.
просто смотрит владельца не там :)
25 дек 14, 14:36    [17051446]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
Vlad_ZJ
Member

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


CREATE PROCEDURE [схема1].[процедура]
begin
select * from [схема2].[таблица]
end

процедура в схема1 обращается к таблице в схема2
дано разрешение пользователю на выполнение процедуры
а на таблицу нет
процедура не выполняется пишет нет разрешений на select ()

у объектов [схема1].[процедура] и [схема2].[таблица] owner = dbo (смотрел в sp_help)
25 дек 14, 15:18    [17051881]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
o-o
Guest
Vlad_ZJ,

а таблица -- точно таблица, а не вьюха?
у нас во вью любят запихать юнион двух таблиц аж из разных баз,
там все цепочки нафиг летят
25 дек 14, 15:39    [17052111]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
Vlad_ZJ
Member

Откуда:
Сообщений: 85
o-o,
точно таблица
25 дек 14, 16:09    [17052412]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
ну так выдайте грант на селект тому юзеру к [схема2].[таблица]
25 дек 14, 16:10    [17052424]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
o-o
Guest
Vlad_ZJ,

не воспроизводится.
точно все схемы перед всем прописаны, и перед таблицей в процедуре, и в вызове процедуры?
еще приведите на всякий оригинальный текст сообщения об ошибке
25 дек 14, 16:12    [17052442]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
o-o
Guest
Konst_One
ну так выдайте грант на селект тому юзеру к [схема2].[таблица]

Vlad_ZJ
Доступ прямого чтение таблиц недопустимо, только через процедуры
25 дек 14, 16:13    [17052453]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
o-o
Konst_One
ну так выдайте грант на селект тому юзеру к [схема2].[таблица]

Vlad_ZJ
Доступ прямого чтение таблиц недопустимо, только через процедуры


и пользователи скорее всего виндусовые , да ещё разбросаны по разным хитрым системным ролям?
25 дек 14, 16:16    [17052481]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
o-o
Guest
Konst_One,

"виндусовые"? спсб, возьму на заметку
но при чем тут разбросанность?
ведь не должны права проверяться, раскидывай/не раскидывай
25 дек 14, 16:20    [17052514]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
Konst_One
и пользователи скорее всего виндусовые , да ещё разбросаны по разным хитрым системным ролям?
Какая разница?

Если есть права на запуск процедуры, то не нужны права на объекты, к которым создатель процедуры имеет права.

Тут что то другое. Может, какая то опция указана при создании процедуры, может, объекты какие то непростые (через линкед, например)...

Нужно посмотреть код процедуры (достаточно заголовок и местог обращения к объекту).
25 дек 14, 16:22    [17052532]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
o-o
Konst_One,

"виндусовые"? спсб, возьму на заметку
но при чем тут разбросанность?
ведь не должны права проверяться, раскидывай/не раскидывай


пжл

ролям могли выдать права, пусть лучше ТС рассказывает , что у него там и как. а то мы нафантазируем
25 дек 14, 16:22    [17052538]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
o-o
Guest
alexeyvg
Может, какая то опция указана при создании процедуры

например?
какая опция отменяет цепочки владения или заставляет явно проверять права при неразрывной цепочке?
alexeyvg
может, объекты какие то непростые (через линкед, например)...

ТС божится, что там просто таблица.
но, если честно, то я доверяю только картинкам.
пока не покажут в коде процедуры явное обращение с указанием схемы
и отсутствием другой базы, например, -- не поверю.
а еще лучше показать от заголовка процедуры и до обращения к таблице.
может, там еще сверху в коде 1000 строк, а между строк запрятан какой-нибудь execute as user(login?) = '...'
25 дек 14, 16:33    [17052615]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
Vlad_ZJ
Member

Откуда:
Сообщений: 85
пользователи из группы AD заведены

спасибо большое всем за диалог

все заработало
поступил брутально
перегрузил сервак
пересоздал схему, таблицу, процедуру, пользователя
25 дек 14, 16:49    [17052721]     Ответить | Цитировать Сообщить модератору
 Re: выполнение процедур  [new]
o-o
Guest
Vlad_ZJ
спасибо большое всем за диалог

диалог -- это когда двое.
монолог -- сам с собой.
предлагаю применить к нашей беседе слово мультилог :)
---
Vlad_ZJ, вот взял и похоронил веру в чудо
но код процедуры точно не меняли, да?
я покопаю в сторону юзеров,
виндусовые юзеры это да, полны сюрпризов...
25 дек 14, 17:03    [17052826]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить