Создание логина и пользователя не имея прав

viod
Дата: 03.02.2009 12:47:37
Здравствуйте.
Имеется задача: пользователь работает в клиентском приложении. Пользователь должен уметь создавать имена входа и пользователей бд для них. Делаться должно это по средством вызова хранимой процедуры. Основная проблема в том что пользователь, должен обладать минимальными правами - иметь доступ только на выполнение определенных хранимых процедур, не являться владельцем бд.
На деле получается, что нужно быть минимум securityadmin, чтобы создать имя входа и владельцем бд, чтобы создать в ней юзера.
Есть какой-то вариант решения этой задачи?
речь об MS SQL 2005
EXECUTE AS и джобы не подходят по ряду причин.зо
Ennor Tiegael
Дата: 03.02.2009 12:50:31
"Ряд причин" - в студию.
Glory
Дата: 03.02.2009 12:51:42
Ну а разве
"нужно быть минимум securityadmin, чтобы создать имя входа и владельцем бд, чтобы создать в ней юзера." противоречит
"пользователь, должен обладать минимальными правами - иметь доступ только на выполнение определенных хранимых процедур, не являться владельцем бд" ?
Knyazev Alexey
Дата: 03.02.2009 12:56:07
Вот буквально на днях Дима у себя в блоге писал: http://blogs.gotdotnet.ru/personal/DeColores/PermaLink.aspx?guid=7f6fe245-8324-4fe5-a560-62ac8a9d6c20
viod
Дата: 03.02.2009 12:59:00
1. для Execute as нужно impersonate разрешение. не согласуется с требованиями безопасности.
2. джоб по началу хотел сделать....
Первое - слишком частую периодичность повторения нужно поставить (связано уже с аспектами решаемой задачи).
Вообще идея с джобами была в следующем: пользователь добавляет запись в таблицу а по этой записи джоб делает логин и пароль. Проблема в том что пользователь с неким минимальным набором прав не может узнать существует ли логин. Получается что пользователь создает учетную запись и ждет результата от джоба циклично запрашивая данные из таблицы в надежде увидеть положительный результат :)

Предложили вариант с сертификатами. Не могу разобраться. Получается только при условии что работа идет с базой master
viod
Дата: 03.02.2009 13:04:57
Knyazev Alexey
Вот буквально на днях Дима у себя в блоге писал: http://blogs.gotdotnet.ru/personal/DeColores/PermaLink.aspx?guid=7f6fe245-8324-4fe5-a560-62ac8a9d6c20

Я читал этот блог, за что автору спасибо. Я не могу до конца разобраться
viod
Дата: 03.02.2009 13:06:12
Glory
Ну а разве
"нужно быть минимум securityadmin, чтобы создать имя входа и владельцем бд, чтобы создать в ней юзера." противоречит
"пользователь, должен обладать минимальными правами - иметь доступ только на выполнение определенных хранимых процедур, не являться владельцем бд" ?

Я здесь в поисках ответа на этот вопрос :) Предложите свой вариант
Glory
Дата: 03.02.2009 13:07:51
viod
Glory
Ну а разве
"нужно быть минимум securityadmin, чтобы создать имя входа и владельцем бд, чтобы создать в ней юзера." противоречит
"пользователь, должен обладать минимальными правами - иметь доступ только на выполнение определенных хранимых процедур, не являться владельцем бд" ?

Я здесь в поисках ответа на этот вопрос :) Предложите свой вариант

Хм. Я вот и спрашиваю, почему securityadmin не подходит ?
Потому что
- он не является владельцем
- и ему можно дать доступ на выполнение определенных хранимых процедур
viod
Дата: 03.02.2009 13:09:13
Пока дело не выходит за пределы базы master - все хорошо.

Не могу понять, сертификатом из базы master нельзя подписать процедуру из другой базы?

Подписанному логину можно дать права на создание юзеров в другой базе? У меня это не получается сделать.

Другой вопрос:
Я пытаюсь выполнить create user, а затем sys.sp_addrolemember, но даже если есть права на create user, то не присваивается роль, так как она в другой базе.

Объясните пожалуйста как вариант с сертификатами применить к задаче описанной в первом сообщении...
viod
Дата: 03.02.2009 13:11:45
Glory,
1. security admin может удалять логины не имеющие отношение к моему приложению
2. security admin не может создавать пользователей в моей бд.