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

Откуда:
Сообщений: 104760
rsolanov
А разве не это сделал: "Этой роли дал право IMPERSONATE для пользователя БД"?

Вы понимаете, кто такой caller ?
Это тот, кто вызывает процедуру. А не тот, кто ей владеет
17 июн 13, 12:07    [14441316]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory, я понимаю что caller для ХП это пользователь БД, но только я не понимаю какую последовательность действий необходимо проделать чтобы выполнить условие "the caller must have IMPERSONATE".
17 июн 13, 12:18    [14441386]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
Glory
Member

Откуда:
Сообщений: 104760
А какая послдедовательность действий должна быть на "must have ... permissions" ?
Наверное назначить эти permissions
17 июн 13, 12:25    [14441421]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory, и еще один момент: если все таблицы, используемые в ХП принадлежат той же БД, что и ХП и все остальное, то зачем нужно использовать олицетворение?
17 июн 13, 12:28    [14441434]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov
если все таблицы, используемые в ХП принадлежат той же БД, что и ХП и все остальное, то зачем нужно использовать олицетворение?

Чтобы любой встречный не мог "сказать" - хочу олицетворяться как sa.
17 июн 13, 12:30    [14441444]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
А какая послдедовательность действий должна быть на "must have ... permissions" ?
Наверное назначить эти permissions
Это?
GRANT IMPERSONATE ON USER::[PreTrading] TO [role_Clearinghouse]
GO
17 июн 13, 12:38    [14441482]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
Glory
Member

Откуда:
Сообщений: 104760
Такое впечатление, что вы не отличаете лево и право

--Give IMPERSONATE permissions on user2 to user1
--so that user1 can successfully set the execution context to user2.
GRANT IMPERSONATE ON USER:: user2 TO user1;
17 июн 13, 12:40    [14441493]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
Такое впечатление, что вы не отличаете лево и право

--Give IMPERSONATE permissions on user2 to user1
--so that user1 can successfully set the execution context to user2.
GRANT IMPERSONATE ON USER:: user2 TO user1;
Но дело в том, что нет никакого user1 и user2, а есть только пользователь PreTrading и роль role_Clearinghouse.
17 июн 13, 12:59    [14441632]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
Glory
Member

Откуда:
Сообщений: 104760
rsolanov
Но дело в том, что нет никакого user1 и user2, а есть только пользователь PreTrading и роль role_Clearinghouse.

фейспалм просто
Олицетворятся ролью нельзя.
Вы хотите сказать, что у вас роль владаеет процедурой ?
17 июн 13, 13:03    [14441658]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Glory
rsolanov
Но дело в том, что нет никакого user1 и user2, а есть только пользователь PreTrading и роль role_Clearinghouse.

фейспалм просто
Олицетворятся ролью нельзя.
Вы хотите сказать, что у вас роль владеет процедурой ?
У ХП владельцем является схема, у схемы владелец роль. Я изменил владельца схемы с роли на пользователя. Изменил вызов ХП с with execute as owner на as 'Admin', раздал права:
GRANT IMPERSONATE ON USER::[Admin] TO [PreTrading]
GO
Но ничего не изменилось!
17 июн 13, 13:24    [14441829]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
nezhadnye_my
Guest
create database rsolanov;
go

use rsolanov;
create user no_rights without login;  -- бесправный пользователь
create user t_owner without login; -- будущий владелец схемы (и таблиц в ней)
go

create schema t_owner_sch authorization t_owner; -- сделали владельцем схемы
go

create table t_owner_sch.t(id int);
go

create proc t_owner_sch.p 
with execute as 't_owner'  -- исполняется от имени владельца схемы
as
select * from t_owner_sch.t;
go


grant execute on  t_owner_sch.p  to no_rights; -- дали права только на процедуру
go

execute as user = 'no_rights' /*смотрим, как оно будет, когда бесправный пользователь запустит. в Ваш код это не надо, это только тест!*/
select * from t_owner_sch.t; -- облом

exec t_owner_sch.p; -- достучался

revert -- /*вернули пользователя на своего; Вам оно тоже не надо, это часть теста*/
17 июн 13, 14:00    [14442085]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
invm
Member

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

В данном конкретном случае with execute as не нужно.
17 июн 13, 14:08    [14442149]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
nezhadnye_my
Guest
invm,
правильно.
у меня выше прямо "два в одном".
rsolanov, если владелец схемы и таблиц один и тот же, не надо даже execute as.

execute as нужно, если вот так:
create proc dbo.p 
with execute as 't_owner'  -- исполняется от имени владельца схемы
as
select * from t_owner_sch.t;
go


grant execute on  dbo.p  to no_rights; -- дали права только на процедуру
go

execute as user = 'no_rights' /*смотрим, как оно будет, когда бесправный пользователь запустит. в Ваш код это не надо, это только тест!*/
select * from t_owner_sch.t; -- облом

exec dbo.p; -- достучался

revert -- /*вернули пользователя на своего; Вам оно тоже не надо, это часть теста*/
17 июн 13, 14:23    [14442271]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
nezhadnye_my
Guest
вернее, так: если владелец процедуры и таблиц один и тот же.
т.е. как, например, выше было: если они все в одной схеме и никому явно владельца не переопределяли
17 июн 13, 14:27    [14442300]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
invm
Member

Откуда: Москва
Сообщений: 9443
nezhadnye_my
вернее, так: если владелец процедуры и таблиц один и тот же.
т.е. как, например, выше было: если они все в одной схеме и никому явно владельца не переопределяли
ТС'у уже давалась, в первом же посте ссылка на теорию, и писалось это же самое в середине обсуждения.
Видимо, ТС не читатель...
17 июн 13, 14:34    [14442343]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
nezhadnye_my
Guest
invm,
+
как бы с той недели топик читаю, в курсе :)
у меня уже просто последняя попытка донести написанное ранее до ТС
(по комментам можно было догадаться,типа "revert в код себе не заноси" )
17 июн 13, 14:38    [14442373]     Ответить | Цитировать Сообщить модератору
 Re: Права на запуск ХП  [new]
rsolanov
Member

Откуда:
Сообщений: 930
Спасибо вам всем огромное за помощь, с вашей помощью полностью разобрался в этом вопросе и все получилось! СПАСИБО!
17 июн 13, 16:01    [14443058]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Microsoft SQL Server Ответить