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

Откуда: Колыбель космонавтики
Сообщений: 1796
Да наступит просветление в моей голове...
Начал разбираться с правами/ролями/и иже с ними. Возникли три вопроса:

1. Роль public, как выяснилось, практически не имеет никаких прав на созданные объекты. Приходиться назначать их вручную. Как сделать так, чтобы автоматом на вновь созданные таблицы давались разрешения SELECT/INSERT/UPDATE/DELETE, на ХП - EXEC? Или неужто их вручную проставлять?

2. Возможно ли триггером, допустим, на удаление, просечь юзера, который сделал это удаление? (Если не трудно, киньте пример, плз)

3. И, наконец, объсните, в чем разница между пользователем и логином?! Как ни старался, не смог постичь этой премудрости :)

Заранее благодарен всем за любые отклики.
27 фев 04, 13:29    [554516]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с доступами.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36803
автор
Роль public, как выяснилось, практически не имеет никаких прав на созданные объекты. Приходиться назначать их вручную. Как сделать так, чтобы автоматом на вновь созданные таблицы давались разрешения SELECT/INSERT/UPDATE/DELETE, на ХП - EXEC? Или неужто их вручную проставлять?

Можно скрипт написать и запускать его иногда(всегда).
автор
2. Возможно ли триггером, допустим, на удаление, просечь юзера, который сделал это удаление? (Если не трудно, киньте пример, плз)

Функции user и/или host_name
автор
3. И, наконец, объсните, в чем разница между пользователем и логином?! Как ни старался, не смог постичь этой премудрости :)

Логин - на подключение к серверу, пользователь - доступ к базе.
27 фев 04, 13:41    [554548]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с доступами.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Как сделать так, чтобы автоматом на вновь созданные таблицы давались разрешения SELECT/INSERT/UPDATE/DELETE

Есть такие встроенные роли базы данныз db_datareader и db_datawriter

Возможно ли триггером, допустим, на удаление, просечь юзера, который сделал это удаление? (Если не трудно, киньте пример, плз)
Хм. Может лучше не давать такому пользователю прав на обновление таблицы вообще ?
27 фев 04, 13:44    [554555]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с доступами.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
1. Автоматом никак. На инструкции чтения изменения есть специальные роли в бд, а для выполнения хп тока явно. Давайте разрешения на объекты для роли public. Но вот тока у вас странная какая-то система безопастности получается - всем всем разрешено?!

2.

CREATE TRIGGER it_Table1 ON Table1

FOR INSERT
AS
...
IF (USER_NAME() <> 'dbo') AND (<SomeCondition>) BEGIN
RAISERROR ('У вас нет прав удалять эту запись!', 16, 1)
ROLLBACK TRAN
RETURN
END
GO


3. С помошью логина разрешается подключение к северу, пользователь существует в конкретной бд ему и раздаються права на объекты непосредственно или через членство в ролях.
27 фев 04, 13:52    [554581]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с доступами.  [new]
zz
Member

Откуда: Колыбель космонавтики
Сообщений: 1796
2pkarklin:
По поводу безопасности - в том-то и дело, что она только зарождается, отсюда и мои вопросы. Хочется ж сделать, как лучше, а не как всегда :) На данный момент стоит задача разграничить пользователей на тех, кто что угодно могут сделать с данными (операторы), и на админов, которые что угодно могут делать с объектами базы данных (т.е. убивать/создавать таблицы и т. д.). Вот я и думаю, как проще это реализовать.

А вопрос про триггеры возник потому, что начальству зачастую весьма интересно знать, кто что именно сделал с теми или иными данными.

2All: Еще раз большое спасибо за ответы :)
27 фев 04, 14:03    [554611]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с доступами.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36803
автор
Вот я и думаю, как проще это реализовать

Проще будет через роли. Назначайте права ролям, пользователей включайте в них.
27 фев 04, 14:05    [554615]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с доступами.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
кто что угодно могут сделать с данными (операторы),


Создайте роль Operators, раздайте ей соответсвующие права и включите туда пользователей.


автор
и на админов, которые что угодно могут делать с объектами базы данных (т.е. убивать/создавать таблицы и т. д.).


А этих включите в фиксированную роль db_owner.
27 фев 04, 14:06    [554622]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Помогите разобраться с доступами.  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8674
pkarklin

...
CREATE TRIGGER it_Table1 ON Table1
FOR INSERT
AS
  ...
  IF (USER_NAME() <> 'dbo') AND (<SomeCondition>) BEGIN
    RAISERROR ('У вас нет прав удалять эту запись!', 16, 1)
    ROLLBACK TRAN
    RETURN 
  END
GO
...


Подскажите, пожалуйста, а может ли в триггере определиться user_name() НЕ того пользователя, под которым выполнялась операция (в данном примере - операция вставки).
Если такое возможно, то при каких обстоятельствах?

PS Меня слёзно с ножом у горла (моего) уверяют, что "Ну не делала этого!!!". Я не верю, но нож у горла (моего) - весьма весомый аргумент ...
10 ноя 09, 19:10    [7910226]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с доступами.  [new]
Glory
Member

Откуда:
Сообщений: 104760
SIMPLicity_

Подскажите, пожалуйста, а может ли в триггере определиться user_name() НЕ того пользователя, под которым выполнялась операция (в данном примере - операция вставки).
Если такое возможно, то при каких обстоятельствах?

PS Меня слёзно с ножом у горла (моего) уверяют, что "Ну не делала этого!!!". Я не верю, но нож у горла (моего) - весьма весомый аргумент ...

Может. Если один приклеил бумажку с паролем на монитор, а другой взял, да и прочитал этот пароль. Ну и залогинился под ним
10 ноя 09, 19:24    [7910294]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с доступами.  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8674
Glory
SIMPLicity_

Подскажите, пожалуйста, а может ли в триггере определиться user_name() НЕ того пользователя, под которым выполнялась операция (в данном примере - операция вставки).
Если такое возможно, то при каких обстоятельствах?

PS Меня слёзно с ножом у горла (моего) уверяют, что "Ну не делала этого!!!". Я не верю, но нож у горла (моего) - весьма весомый аргумент ...

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


Т.е. в иных случаях НЕ может такого быть?
10 ноя 09, 19:45    [7910376]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить