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

Откуда:
Сообщений: 55
Добрый день. Имеются два пользователя, user_upd в базе update и user_adm в базе database. Оба пользователя в контексте сервера имеют права public. user_upd db_owner в базе update, а user_adm db_owner в базе database соответственно. Задача состоит в том чтобы user_adm получил роль db_owner в базе update с помощью скрипта, скрипт выполняется из под user_adm. Как я понимаю, EXECUTE AS не поможет, есть ли какое-нибудь решение данной задачи? Спасибо.
3 июл 13, 18:20    [14518497]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2996
Gorin, как вариант, создать линкед сервер и замапить user_adm на user_upd
3 июл 13, 18:49    [14518594]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Перечитал раз 10ть, так и н понял, что же нужно сделать и в чем проблема?! Что за "получил роль"? Давайте "скрипты", которые Вы выполняете и ошибки, которые Вы получаете...
3 июл 13, 19:15    [14518666]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Gorin
Member

Откуда:
Сообщений: 55
HandKot
Gorin, как вариант, создать линкед сервер и замапить user_adm на user_upd

К сожалению, для этого не достаточно прав у роли public.
4 июл 13, 11:20    [14520936]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Gorin
Member

Откуда:
Сообщений: 55
pkarklin
Перечитал раз 10ть, так и н понял, что же нужно сделать и в чем проблема?! Что за "получил роль"? Давайте "скрипты", которые Вы выполняете и ошибки, которые Вы получаете...


получить роль=получить членство в роли базы данных (db_owner). "Скриптов" нету, так как непонятно как это вообще реализовать. Нужно чтобы пользователь user_adm получил членство в роли db_owner в обеих БД.
4 июл 13, 11:25    [14520969]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2996
Gorin, если у вас нет админского доступа, то вряд ли Вам что-то поможет, т.к для EXECUTE AS надо иметь "разрешения IMPERSONATE"
4 июл 13, 11:26    [14520981]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gorin
"Скриптов" нету, так как непонятно как это вообще реализовать.

Т.е. вы не ищите документированные процедуры добавления в роль базы данных ?

Gorin
Нужно чтобы пользователь user_adm получил членство в роли db_owner в обеих БД.

Самому назначить себе права ?
4 июл 13, 11:28    [14520993]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Gorin
Member

Откуда:
Сообщений: 55
Glory
Gorin
"Скриптов" нету, так как непонятно как это вообще реализовать.

Т.е. вы не ищите документированные процедуры добавления в роль базы данных ?

Gorin
Нужно чтобы пользователь user_adm получил членство в роли db_owner в обеих БД.

Самому назначить себе права ?


Нет, как добавить к роли БД я знаю. Вопрос как запустить эту процедуру из-под другого пользователя.
4 июл 13, 11:32    [14521028]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
попытка расшифровки
Guest
pkarklin
Перечитал раз 10ть, так и н понял, что же нужно сделать и в чем проблема?! Что за "получил роль"? Давайте "скрипты", которые Вы выполняете и ошибки, которые Вы получаете...


мне кажется, ТС хочет сказать:
я (user_adm) не имею прав на сервер, но зато я db_owner в одной базе (database).
а в другой базе(update) мне хочется тоже быть db_owner-ом,
как мне это сделать, если я знаю имя одного из db_owner-ов(user_upd) во второй базе
(т.е. у него была надежда использовать как-то IMPERSONATE, пользуясь тем, что знает db_owner-а второй базы)
4 июл 13, 11:35    [14521050]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Gorin
Member

Откуда:
Сообщений: 55
попытка расшифровки
pkarklin
Перечитал раз 10ть, так и н понял, что же нужно сделать и в чем проблема?! Что за "получил роль"? Давайте "скрипты", которые Вы выполняете и ошибки, которые Вы получаете...


мне кажется, ТС хочет сказать:
я (user_adm) не имею прав на сервер, но зато я db_owner в одной базе (database).
а в другой базе(update) мне хочется тоже быть db_owner-ом,
как мне это сделать, если я знаю имя одного из db_owner-ов(user_upd) во второй базе
(т.е. у него была надежда использовать как-то IMPERSONATE, пользуясь тем, что знает db_owner-а второй базы)


Да, спасибо, все так, кроме того, что я знаю не просто имя одного из db_owner-ов но и пароль. То есть я пытался найти аналог виндоувского run as
4 июл 13, 11:42    [14521096]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gorin
То есть я пытался найти аналог виндоувского run as

для IMPERSONATE мало знать логин/пароль, нужно еще иметь права на IMPERSONATE

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.
4 июл 13, 11:46    [14521139]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Gorin
Member

Откуда:
Сообщений: 55
то есть во время выполнения скрипта зайти как user_upd, создать пользователя для логина user_adm и добавить его к роли db_owner.
4 июл 13, 11:46    [14521143]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Gorin
Member

Откуда:
Сообщений: 55
Glory
Gorin
То есть я пытался найти аналог виндоувского run as

для IMPERSONATE мало знать логин/пароль, нужно еще иметь права на IMPERSONATE

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.


я как понимаю что для EXECUTE AS нужны права на IMPERSONATE, но при этом пароль не нужен. То есть другая логика. А я пытаюсь найти аналог run as в Windows.
4 июл 13, 11:49    [14521165]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gorin
то есть во время выполнения скрипта зайти как user_upd, создать пользователя для логина user_adm и добавить его к роли db_owner.

exec master..xp_cmdshell 'sqlcmd -U MyLogin -P MyPass -S <ComputerName>\<InstanceName> -Q "exec ...."'
4 июл 13, 11:50    [14521177]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Gorin
Member

Откуда:
Сообщений: 55
Glory
Gorin
то есть во время выполнения скрипта зайти как user_upd, создать пользователя для логина user_adm и добавить его к роли db_owner.

exec master..xp_cmdshell 'sqlcmd -U MyLogin -P MyPass -S <ComputerName>\<InstanceName> -Q "exec ...."'

Спасибо, но ,к сожалению,с ролью public я этого не сделаю.
4 июл 13, 12:03    [14521251]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gorin
Спасибо, но ,к сожалению,с ролью public я этого не сделаю.

Тогда вы слишком много хотите, имею слишком мало прав
4 июл 13, 12:07    [14521272]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Ennor Tiegael
Member

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

OPENDATASOURCE() - там можно указать логин и пароль. Никаких особых прав вроде не требуется.
4 июл 13, 12:10    [14521290]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ennor Tiegael
OPENDATASOURCE() - там можно указать логин и пароль. Никаких особых прав вроде не требуется.

За исключением того, что функция требует возврата набора данных
4 июл 13, 12:12    [14521317]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
попытка расшифровки
Guest
Glory
Gorin
то есть во время выполнения скрипта зайти как user_upd, создать пользователя для логина user_adm и добавить его к роли db_owner.

exec master..xp_cmdshell 'sqlcmd -U MyLogin -P MyPass -S <ComputerName>\<InstanceName> -Q "exec ...."'


так с птичьими правами уровня сервера будет в ответ
The EXECUTE permission was denied on the object 'xp_cmdshell'

ТС, Вы же делая виндовское RUN AS для того же Management Studio,
забиваете другого виндовского пользователя и пароль.
ну так если Ваш user_upd это виндовский логин, то и запустите MS от его имени.
а если SQL-ный, то меняете тип авторизации и Вас снова попросят и логин, и пароль.

Вы сейчас пытаетесь найти аналог для юзера с паролем,
но пароль только у логина,
поэтому заюзать пароль можно только при подключении к серверу.
4 июл 13, 12:13    [14521325]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3274
Да, поторопился.

Ну, тогда если только хаком, luring attack т.е. - создать во второй базе таблицу, на ней триггер, в нем execute as owner...
4 июл 13, 12:16    [14521340]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Gorin
Member

Откуда:
Сообщений: 55
попытка расшифровки
Glory
пропущено...

exec master..xp_cmdshell 'sqlcmd -U MyLogin -P MyPass -S <ComputerName>\<InstanceName> -Q "exec ...."'


так с птичьими правами уровня сервера будет в ответ
The EXECUTE permission was denied on the object 'xp_cmdshell'

ТС, Вы же делая виндовское RUN AS для того же Management Studio,
забиваете другого виндовского пользователя и пароль.
ну так если Ваш user_upd это виндовский логин, то и запустите MS от его имени.
а если SQL-ный, то меняете тип авторизации и Вас снова попросят и логин, и пароль.

Вы сейчас пытаетесь найти аналог для юзера с паролем,
но пароль только у логина,
поэтому заюзать пароль можно только при подключении к серверу.


Спасибо, я уже понял, что так, наверное, нельзя как я хочу. Получается, что для этого надо разорвать соединение и зайти как user_upd. Через Studio,сделать это мне удатся, но там я сразу зайду как user_upd ) А здесь проблема в том, что есть ПО, в которым уже жестко прописано выполнение от user_adm. А так как БД не одна, а несколько дестяков, вот и хотелось сделать универсальный скрипт.
4 июл 13, 12:25    [14521422]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gorin
А так как БД не одна, а несколько дестяков, вот и хотелось сделать универсальный скрипт.

Только непонятно, зачем этот скрипт пытаться выполнять под логином/пользователем неимеющим прав ?
4 июл 13, 12:28    [14521448]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
попытка расшифровки
Guest
Gorin
Получается, что для этого надо разорвать соединение и зайти как user_upd

у вас ограничение на число подключений?
в соседнем окне студии можно подключиться другим пользователем


Gorin
Через Studio,сделать это мне удатся, но там я сразу зайду как user_upd )


почему???
если виндовский логин, запустите студию как run as от имени другого виндовского пользователя

Gorin
А здесь проблема в том, что есть ПО, в которым уже жестко прописано выполнение от user_adm. А так как БД не одна, а несколько дестяков, вот и хотелось сделать универсальный скрипт.


ну можно и скрипт.
для всех тех баз в цикле
create user user_adm from login user_adm
EXEC sp_addrolemember N'db_owner', N'user_adm'

только залогиниться все равно придется от имени того, кто отмаплен на те базы db_owner-ом
4 июл 13, 12:33    [14521491]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Gorin
Member

Откуда:
Сообщений: 55
Glory
Gorin
А так как БД не одна, а несколько дестяков, вот и хотелось сделать универсальный скрипт.

Только непонятно, зачем этот скрипт пытаться выполнять под логином/пользователем неимеющим прав ?


В этом то и проблема) Планировалось, что пользователь user_upd вносит изменения только в свою БД, a user_adm в свою. Но в ПО не предусмотрена возможность смены пользователя, поэтому и надо добавить его к роли db_owner и во вторую БД.
4 июл 13, 12:35    [14521509]     Ответить | Цитировать Сообщить модератору
 Re: Смена контекста пользователя  [new]
Gorin
Member

Откуда:
Сообщений: 55
попытка расшифровки,
Нет, нет, как решить данную задачу в Studio-не проблема. А вот как создать скрипт- проблема.
4 июл 13, 12:38    [14521545]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить