Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ограничение доступа, на вызов процедур 
:(
    Опции темы
metis
Дата 4.3.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Добрый день всем!
У меня такой вопрос, как программно запретить вызов процедур(ы) конкретному пользователю? И вобще возможно такое сделать? 
PM MAIL   Вверх
SharedNoob
Дата 5.3.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 25.6.2007
Где: UA

Репутация: 2
Всего: 5



а поподробнее можно ? что именно вы хотите сделать ? на каком уровне хотите запрещать (SQL Server или некое свое приложение)?
PM MAIL ICQ Skype   Вверх
metis
Дата 8.3.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Прошу прошения за неправильно поставленный вопрос.
На самом деле мне нужно сделать следующее. Есть таблица u_name 
id - id пользователя
Login - имя пользователя
Pass - пароль 
Grup - наименование группы (user, admin, student)
Нужно при добавлении нового пользователя в мою таблицу, чтобы на сервере создавался пользователь с таким же именем и в зависимости от  группы (в моей таблице) пользователю присваивалась принадлежность к одной из ролей БД
на пример 
id            Login         Pass             Grup
1             Ivanov       5000            admin
После добавления этой записи в таблицу u_name на уровне сервера (не для конкретной базы) создается пользователь Ivanov который является членом роли securityadmin. 
Подскажите пожалуйста как это все можно сделать или может это гденибудь описано достаточно подробно. Буду рад любой помощи. Заранее благодарен

PM MAIL   Вверх
SergKO
Дата 11.3.2008, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 14.3.2005

Репутация: 17
Всего: 20



Примерно так, если я правильно понял задачу.

1. 2005 SQL
 - создаете схемы с требуемым набором прав (существуют права на Execute, Select, Delete, Update и др.)
 - создаете login 
Код

    CREATE LOGIN ИмяПользователя WITH PASSWORD=N'пароль', 
    DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=off


 - создаете пользователя в БД
Код

    use MyDb
    go
    CREATE USER ИмяПользователя FOR LOGIN ИмяПользователя WITH DEFAULT_SCHEMA=[ТребуемаяСхема];
    go

 - заносите информацию о пользователе в свою таблицу.

2. 2000
 - создаете роли с требуемым набором прав 
 - создаете логин
Код
    EXEC sp_addlogin @loginame = N'Login', @passwd = N'password'

 - создаете пользователя БД
Код

    use MyDb
    go
    EXEC sp_grantdbaccess @loginame = N'Login'

 - относите его к требуемой роли
Код

    EXEC sp_addrolemember  @rolename = N'ИмяРоли', @membername = N'Login'

 - заносите информацию о пользователе в свою таблицу.

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


PM MAIL   Вверх
metis
Дата 12.3.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



SergKO, Спасибо большое за помощь, буду пробовать.
PM MAIL   Вверх
nawok78
Дата 13.3.2008, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.3.2008

Репутация: нет
Всего: нет



ЗАЧЕМ? это все??? это же все УЖЕ реализовано средствами самого MS SQL SERVER'а!
создавай пользователя, помещай его в группу, назначай ему права... зачем ИЗОБРЕТАТЬ ВЕЛОСИПЕД?
PM MAIL   Вверх
metis
Дата 13.3.2008, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Цитата(nawok78 @ 13.3.2008,  10:05)
ЗАЧЕМ? это все??? это же все УЖЕ реализовано средствами самого MS SQL SERVER'а!
создавай пользователя, помещай его в группу, назначай ему права... зачем ИЗОБРЕТАТЬ ВЕЛОСИПЕД?

Согласен полностью, но это придумал не я,  я должен это реализовать. Задание есть задание....
PM MAIL   Вверх
metis
Дата 17.3.2008, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



SergKO
Код

CREATE LOGIN ИмяПользователя WITH PASSWORD=N'пароль', 
CREATE USER ИмяПользователя  FOR LOGIN ИмяПользователя;

У меня еще такой вопрос возник, возможно ли указывать значения  Login и User не явно, а переменными(или входящими параметрами)?
Спасибо.

Это сообщение отредактировал(а) metis - 17.3.2008, 11:34
PM MAIL   Вверх
Magnifico
Дата 17.3.2008, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 10
Всего: 17



По идее такие вещи делаются динамическим запросм
хотя у меня что то не получается (может у кого получится?)

Код

declare @login nvarchar(255);
set @login = "klaus";
declare @pass nvarchar(255);
set @pass = "111111";
declare @str nvarchar(255);

set @str = 'CREATE LOGIN' + @login+  'WITH PASSWORD=N'' +@pass +''
        DEFAULT_DATABASE=[study], DEFAULT_LANGUAGE=[us_english],CHECK_EXPIRATION=OFF,CHECK_POLICY=off'

exec(@str)


статья на эту тему:
http://www.sql.ru/faq/faq_topic.aspx?fid=104


--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
SergKO
Дата 17.3.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 14.3.2005

Репутация: 17
Всего: 20



Цитата(Magnifico @  17.3.2008,  12:21 Найти цитируемый пост)
По идее такие вещи делаются динамическим запросм

Совершенно верно. Вот усеченный фрагмент из работающей процедуры
Код

    if not exists(select * from master.dbo.syslogins where loginname = @UserLogin)
    begin
        begin TRY
            select @CmdStr = 'CREATE LOGIN ['+@UserLogin+'] WITH PASSWORD=N'''+@password+''', 
                    DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF';
            execute sp_executesql @CmdStr;
        end TRY
        begin CATCH
            select @ErrMsg = 'Ошибка при создании пользователя '+@UserLogin+'.'+Char(10)+ERROR_MESSAGE();
            goto Err;
        end CATCH;
    end

PM MAIL   Вверх
metis
Дата 17.3.2008, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Magnifico
Так же делал, и тоже не получилось smile 

SergKO
Спасибо большое за пример. Думаю теперь разберусь.
PM MAIL   Вверх
metis
Дата 18.3.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Разобрался, все работает.
Код

declare @Login nvarchar(128);
declare @Pass nvarchar(128);
declare @str nvarchar(1024);
declare @rolename nvarchar(128);
set @Login = 'metis';
set @Pass = '000';
set @rolename = 'Admin'
set @str = 'CREATE LOGIN ['+@Login+'] WITH PASSWORD=N'''+@Pass+''',
          DEFAULT_DATABASE=[master],
          DEFAULT_LANGUAGE=[us_english],
          CHECK_EXPIRATION=OFF,
          CHECK_POLICY=off;
          CREATE USER ['+@Login+'] FOR LOGIN ['+@Login+']
          WITH DEFAULT_SCHEMA = [dbo];
          execute sp_addrolemember ['+@rolename+'],['+@Login+']'
exec (@str);
return

Может кому пригодится

Это сообщение отредактировал(а) metis - 20.3.2008, 09:47
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.