SQL-разрешения для пользователя входа в систему для дальнейшего создания учетных записей и ролей приложений - PullRequest
1 голос
/ 02 марта 2011

Я использую SQL Server Express 2005.

У меня есть только одна база данных для работы и создания логинов, пользователей и предоставления разрешений только для этой базы данных.

Я создал базу данных shopDB,

Затем логин shopDBLogin.

Затем я выбрал shopDB и создал пользователя shopDBUser для shopDBLogin.Код такой:

create database shopDB

use shopDB
create login shopDBLogin with password='_'  , default_database = shopDB

use shopDB
create user shopDBUser for login shopDBLogin 

Теперь я хочу дать разрешение shopDBUser на выполнение следующих задач:

- создать 3 новых логина L1, L2, L3 и 3 новых пользователя U1, U2, U3 внутри этих логинов

- дать разрешения U2, U3 только для вставки в базу данных sql

- создать 3 роли приложения

Как мне дать разрешениядля этих задач пользователю?Пожалуйста, помогите.

1 Ответ

3 голосов
/ 02 марта 2011

Мне нужно идти с db_securityadmin .

Используйте sp_addrolemember , чтобы раздать роль.

Пример:

EXEC sp_addrolemember 'db_securityadmin', 'shopDBUser'

Если вы просто хотите, чтобы shopDBUser мог создавать «подпользователей» для своего собственного пользователя: вы не можете делать это с ролями. Я предлагаю создать хранимую процедуру, которая делает это, предоставляя сохраненным повышенным разрешениям prcedure, а затем предоставляя разрешения shopDBUser для выполнения хранимой процедуры.

Вы, конечно, должны будете самостоятельно выполнить необходимые проверки в STP. Главным образом потому, что я ДУМАЮ, что концепция суб-пользователей просто не известна в SQL.

EDIT: Возможно реализовать концепцию суб-пользователей как отдельную таблицу UserInfo. Смотрите пример ниже:

CREATE PROCEDURE [dbo].[stp_CreateSubUser]
(
    @SubUser nvarchar(200),
    @Pass nvarchar(200)
)
AS
BEGIN
    EXEC('create login ' + @SubUser + ' with password=''' + @Pass + ''', default_database = shopDB')
    EXECUTE AS OWNER
    EXEC('create user ' + @SubUser + ' for login ' + @SubUser )
    EXECUTE AS OWNER
    EXEC sp_addrolemember 'db_datareader', @SubUser
    EXECUTE AS OWNER
    EXEC sp_addrolemember 'db_datawriter', @SubUser
    EXECUTE AS OWNER

    INSERT [dbo].[UserInfo]
    ([UserName],[ParentUserName])
    VALUES
    (@SubUser, USER)
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...