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

Откуда:
Сообщений: 141
sql server 2008 r2 (10.50.1600)

есть ресторенная база как temp_bud
есть пользователь другой базы (bud) , с правами на базу bud - dbo_owner. в базе temp_bud его нет!
входит в стандартную серверную роль public
есть пользователь select_admin , который входит в серверную роль sysadmin и не привязанный ни к одной из баз

пытаюсь из базы bud сделать вот такой вызов под пользователем select_admin

exec ('select * from [temp_bud].dbo.Topsheet') as login = 'select_admin'


в ответ получаю:
Msg 15406, Level 16, State 1, Line 1
Cannot execute as the server principal because the principal "select_admin" does not exist, this type of principal cannot be impersonated, or you do not have permission.

я что-то не так делаю или просто из-за того, что у моего пользователя под которым я выполняю строку меньше прав чем у select_admin?
23 янв 13, 11:01    [13813856]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Ну, как бы объяснено, в чем проблема:

this type of principal cannot be impersonated, or you do not have permission

Вы бы лучше задачу огласили. Скорее всего без смены контекста можно обойтись.
23 янв 13, 11:11    [13813922]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
pkarklin
Ну, как бы объяснено, в чем проблема:

this type of principal cannot be impersonated, or you do not have permission

Вы бы лучше задачу огласили. Скорее всего без смены контекста можно обойтись.


как бы да, но были сомнения!))

задача заключается в том, чтобы сделать select из ,востановленного бэкапа в пустую созданную базу без пользователей в ней , и при этом не давать первичному пользователю роль sysadmin!

для этого был заведен другой пользователь с ролью sysadmin и была попытка сделать запрос из восстановленной базы от имени этого пользователя, находясь при этом в роли обычного пользователя
задача пока терпит фиаско))

так чот если есть какой-то вариант, подходящий под задачу, буду вам очень признателен!!
23 янв 13, 11:16    [13813955]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
rigid_joke
так чот если есть какой-то вариант, подходящий под задачу, буду вам очень признателен!!


Если владельцами обеих баз будут одни и теже логины (sa, например). В бд temp_bud пользователью Guеst будет разрешен коннект и у баз будет разрешено DB_CHAINING, то никаких доп. логинов создавать ненадо.
23 янв 13, 11:20    [13813982]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
pkarklin
rigid_joke
так чот если есть какой-то вариант, подходящий под задачу, буду вам очень признателен!!


Если владельцами обеих баз будут одни и теже логины (sa, например). В бд temp_bud пользователью Guеst будет разрешен коннект и у баз будет разрешено DB_CHAINING, то никаких доп. логинов создавать ненадо.


что-то я не очень понял или вы меня не очень поняли

у меня в базе temp_bud нет никаких логинов (считайте что пустая база)! восстанавливал базу как новую под логином пользователя у которого в системной роли есть кроме public еще и dbcreator

если вы имеете ввиду вот так:
exec ('select * from [temp_bud].dbo.Topsheet') as login = 'sa'

то могу сказать что пишет тоже самое что и в первом примере!
23 янв 13, 11:27    [13814035]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
или вы имели ввиду что можно программным способом из-под обычного пользователя базы bud с системной ролью public и не завязанного на temp_bud
дать какие-то полномочию, которые разрешат сделать запрос?
23 янв 13, 11:29    [13814047]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
Glory
Member

Откуда:
Сообщений: 104760
rigid_joke
у меня в базе temp_bud нет никаких логинов (считайте что пустая база)!

Начем с того, что логинов вообще нет в базах
Логины находятся на сервере. А в базах находятся пользователи.
Вы учитываете это при написании exec () as ?

rigid_joke
то могу сказать что пишет тоже самое что и в первом примере!

Разумеется.
А вы хотели, чтобы вот так просто любой ВасяПупкин смог "прикидываться" администратором ?
Для чего тогда нужна была бы вся система безопасности ?
23 янв 13, 11:31    [13814067]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
rigid_joke
что-то я не очень понял


Читаем про Ownership Chains в документации. Я написал условия, необходимые для ее работы между бд. Приэтом никакой имперсонации EXEC ... AS ... делать не надо.
23 янв 13, 11:47    [13814167]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
Glory
rigid_joke
у меня в базе temp_bud нет никаких логинов (считайте что пустая база)!

Начем с того, что логинов вообще нет в базах
Логины находятся на сервере. А в базах находятся пользователи.
Вы учитываете это при написании exec () as ?

rigid_joke
то могу сказать что пишет тоже самое что и в первом примере!

Разумеется.
А вы хотели, чтобы вот так просто любой ВасяПупкин смог "прикидываться" администратором ?
Для чего тогда нужна была бы вся система безопасности ?


понятное дело, что логины находятся на сервере, я просто некорректно выразился и только потому что в моем примере видно, что я пытаюсь сделать as login , а не as user !

про Ownership Chains я сейчас почитаю в любом случае! но если в вашем случае не много текста и вам не сложно написать или скинуть, как образец, свой пример, то буду вам благодарен!
23 янв 13, 11:51    [13814194]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
rigid_joke
свой пример


При выполнении условий, который я огласил ранее, Ваш запрос будет выглядеть просто:

select * from [temp_bud].dbo.Topsheet
23 янв 13, 11:55    [13814229]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
pkarklin
rigid_joke
свой пример


При выполнении условий, который я огласил ранее, Ваш запрос будет выглядеть просто:

select * from [temp_bud].dbo.Topsheet


поставил галочку на Cross database ownership chaining на сервере, делаю запрос выше, выдает:
The server principal "user_new" is not able to access the database "temp_bud" under the current security context.


или я опять что-то не доделал?
23 янв 13, 12:12    [13814353]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
pkarklin
Member

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


Угу.
23 янв 13, 12:32    [13814515]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
pkarklin
rigid_joke
или я опять что-то не доделал?


Угу.


не подскажите что?))
23 янв 13, 12:48    [13814649]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
rigid_joke
pkarklin
пропущено...


Угу.


не подскажите что?))

гостя включи, писали же
23 янв 13, 12:55    [13814707]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
stavgreengo
rigid_joke
пропущено...


не подскажите что?))

гостя включи, писали же




включил таким образом:

USE msdb;
GRANT connect TO guest;
GO

получилось вот что:
Картинка с другого сайта.

при запросе
select * from [temp_bud].dbo.Topsheet
выдает такую же ошибку:
автор
Msg 916, Level 14, State 1, Line 1
The server principal "user_new" is not able to access the database "temp_bud" under the current security context
23 янв 13, 13:02    [13814790]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
Glory
Member

Откуда:
Сообщений: 104760
И как это понимать ?
USE msdb;
GRANT connect TO guest;
GO

not able to access the database "temp_bud"
23 янв 13, 13:04    [13814809]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
Glory
И как это понимать ?
USE msdb;
GRANT connect TO guest;
GO

not able to access the database "temp_bud"


в смысле?

насколько я понимаю, эта команда включает пользователя Guest , который мне выше рекомендовали включить чтобы все заработало
не заработало
если же вы спрашиваете - существует ли база temp_bud на сервере на данный момент, то ответ - да

есть вот такая ссылка там вычитал, сделал как написанно.
я не до конца понию весь процесс , поэтому и прошу подсказать
либо киньте ссылкой где написано нормально и доходчиво, а то уже кучу сайтов перелопатил, не могу или не вижу того что нужно
23 янв 13, 13:11    [13814858]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
Glory
Member

Откуда:
Сообщений: 104760
rigid_joke
насколько я понимаю, эта команда включает пользователя Guest , который мне выше рекомендовали включить чтобы все заработало

Пользователя включаем в базе msdb, а лезем в базуtemp_bud.
Логика железная.
23 янв 13, 13:13    [13814890]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
Glory
rigid_joke
насколько я понимаю, эта команда включает пользователя Guest , который мне выше рекомендовали включить чтобы все заработало

Пользователя включаем в базе msdb, а лезем в базуtemp_bud.
Логика железная.


если бы я отлично представлял себе механизм работы, то вопроса как обратится к другой базе не имея прав я бы не задал
и к теме разговора:

Картинка с другого сайта.
там где замазано считайте что стоит обсуждаемый нами пользователь user_new

нафига тогда мне вообще включать пользователя Guest, если из user_new я не могу это сделать?

или может что-то посоветуете?
23 янв 13, 13:20    [13814960]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
извиняюсь за качество картинки, торопился

Картинка с другого сайта.
23 янв 13, 13:22    [13814975]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
Glory
Member

Откуда:
Сообщений: 104760
rigid_joke
извиняюсь за качество картинки, торопился

Не понял. Вы хотите еще а и GRANT-ы выполнять в базе, где у вас нет прав ?
Самому себе назначить права нельзя. Иначе бы каждый поназначал себе админских прав

Сообщение было отредактировано: 23 янв 13, 13:24
23 янв 13, 13:23    [13814993]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
Glory
rigid_joke
извиняюсь за качество картинки, торопился

Не понял. Вы хотите еще а и GRANT-ы выполнять в базе, где у вас нет прав ?
Самому себе назначить права нельзя. Иначе бы каждый поназначал себе админских прав


ну значит все что советовали выше не имеет вообще никакого смысла!
я вроде ясно изложил задачу:

требуется select в новую базу куда никто не заведен, от пользователя , который может иметь любые права кроме sysadmin!
причем условие что это должно происходить от лица этого пользователя, так сказать в автоматическом режиме

а не так - зашел под админом, настроил все и после этого все заработало
если бы был такой вариант, то я бы просто добавил пользователя в базу temp_bud под ролью dbo_owner и не мучался бы и не изголялся бы)))
23 янв 13, 13:28    [13815029]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
Glory
Member

Откуда:
Сообщений: 104760
rigid_joke
требуется select в новую базу куда никто не заведен, от пользователя , который может иметь любые права кроме sysadmin!
причем условие что это должно происходить от лица этого пользователя, так сказать в автоматическом режиме

Так и непонятно, почему вы тогда включаете guest-а под этим пользователем ?

Сделайте job c нужными действиями. Дайте вашему пользователю права на запуск джоба.
23 янв 13, 13:32    [13815059]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
rigid_joke
я вроде ясно изложил задачу


И для нее было описано решение.

Базу Вы ресторите с какими правами? Вот с этими же и делайте все необходимые манипуляции.
23 янв 13, 13:34    [13815085]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться в правах!  [new]
rigid_joke
Member

Откуда:
Сообщений: 141
pkarklin
rigid_joke
я вроде ясно изложил задачу


И для нее было описано решение.

Базу Вы ресторите с какими правами? Вот с этими же и делайте все необходимые манипуляции.


с правами user_new, у него стоит серверная роль dbcreator

насчет запуска джоба идея хорошая, сейчас попробую
23 янв 13, 13:41    [13815137]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить