Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Права на создание логина, пользователя в БД и включение его в предопределённую роль.  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
Добрый вечер.

В моей БД есть пользовательская роль MyRole.
Столкнулся с необходимостью создания пользователя, который имел бы права на
создание логина к SQL-серверу;
создание соответствующих пользователей в БД;
включение их в группу MyRole.

Как это сделать правильно, используя встроенные роли SQL-сервера и БД, чтоб ничего лишнего пользователь сделать не смог?
28 май 16, 22:32    [19231707]     Ответить | Цитировать Сообщить модератору
 Re: Права на создание логина, пользователя в БД и включение его в предопределённую роль.  [new]
=Сергей=
Member

Откуда:
Сообщений: 329
похоже, используя встроенные роли - никак?
Остаётся дать пользователю разрешение на исполнение сопутствующих процедур: sp_adduser...?
28 май 16, 22:40    [19231726]     Ответить | Цитировать Сообщить модератору
 Re: Права на создание логина, пользователя в БД и включение его в предопределённую роль.  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5975
securityadmin
29 май 16, 03:11    [19232157]     Ответить | Цитировать Сообщить модератору
 Re: Права на создание логина, пользователя в БД и включение его в предопределённую роль.  [new]
=Сергей=
Member

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

сделал иначе:
создал 3 процедуры, необходимые пользователю для работы.
создал логин [MyUser] и соответствующих пользователей в НУЖНЫХ базах.

use [master]
grant alter any login to [MyUser]

use [MyDB1]
grant alter any user to [MyUser]
grant alter any role to [MyUser]
grant execute on [dbo].[SP1] to [MyUser]
grant execute on [dbo].[SP2] to [MyUser]
grant execute on [dbo].[SP3] to [MyUser]

use [MyDB2]
grant alter any user to [MyUser]
grant alter any role to [MyUser]

use [MyDB3]
grant alter any user to [MyUser]
grant alter any role to [MyUser]


Как правильно нужно сделать? Покритикуйте плиз.
29 май 16, 12:03    [19232352]     Ответить | Цитировать Сообщить модератору
 Re: Права на создание логина, пользователя в БД и включение его в предопределённую роль.  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
=Сергей=
Как правильно нужно сделать?
Создаете в master служебную процедуру управления учетными записями:
+
use master;
go

create certificate certLoginsManagement
encryption by password = 'abcdefgh'
with subject = 'Logins Management',
expiry_date = '99991231';
go

create login LoginsManagement from certificate certLoginsManagement;
go

exec sp_addsrvrolemember 'LoginsManagement', 'sysadmin';
go

create role rLoginsManagement;
go

if object_id('sp_LoginsManagement', 'P') is null
 exec('create procedure dbo.sp_LoginsManagement as set nocount on;');
go

alter procedure dbo.sp_LoginsManagement
as
begin
 set nocount on;

 create login...
 create user...
 etc.
end;
go

grant execute on dbo.sp_LoginsManagement to rLoginsManagement;
go

add signature to dbo.sp_LoginsManagement by certificate certLoginsManagement
with password = 'abcdefgh';
go

exec sys.sp_MS_marksystemobject 'sp_LoginsManagement';
go

Теперь для учетной записи, которой требуется управлять другими только посредством процедуры sp_LoginsManagement, достаточно завести пользователя в master и включить его в роль rLoginsManagement.
Процедура помечена как системная и будет выполняться в контексте вызывающей БД, а не master.

ЗЫ: После модификации sp_LoginsManagement ее необходимо заново подписывать сертификатом.
29 май 16, 14:34    [19232562]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить