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

Откуда: большая деревня
Сообщений: 266
Есть имя вход с проверкой подлинности Windows. Можно ли предоставить права только на чтение таблиц для всех баз на сервере? В том числе и для создаваемых в будущем. Можно для каждой базы добавлять пользователя в db_datareader, но хотелось бы решения из разряда "настроил и забыл".
10 дек 14, 10:08    [16975714]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
хмхмхм
Guest
virtuOS,

придется создавать для каждой бд пользователя, связывать его с логином и давать права db_reader.
Если это так тягостно или базы создаются так часто, то можно написать скрипт, который проверяет mapping логина и, если для какой-то базы (кроме master, model, tempdb и т.п.) у него нет пользователя - создавать этого пользователя с соответствующими правами.
Скрипт повесить на ежедневное выполнение SQL Job-ом например.
10 дек 14, 10:24    [16975792]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
o-o
Guest
ну создайте этого пользователя в model, зачислите его в датаридеры, быть ему им во всех вновь создаваемых базах. заодно и в темпдб
10 дек 14, 10:43    [16975905]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Решается через серверные роли.
10 дек 14, 15:36    [16978156]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
o-o
Guest
Владислав Колосов
Решается через серверные роли.

и в какую же серверную роль нужно запихнуть логин, чтобы он стал автоматом мапиться во все вновь создаваемые базы с правами датаридера?
10 дек 14, 16:23    [16978560]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
o-o,

самодельную, какую же ещё?
10 дек 14, 16:34    [16978674]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
o-o
Guest
Владислав Колосов,

уточним для начала, что "самодельные" серверные роли до 2012-ого нельзя было создавать вообще, но ок.
давайте создадим в 2012-ом эту супер-роль.
как я понимаю, роли уровня сервера можно выдать права уровня сервера, так что предлагаете ей выдать,
чтобы "логины этой группы автоматом мапились во все вновь создаваемые базы и получали бы при этом
членство в db_datareader"?
код давайте, короче, а то ля-ля и не более того :)
10 дек 14, 16:48    [16978792]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
o-o,

Да, что-то не так пошло в Датском королевстве :) Ещё почитаю документацию.
10 дек 14, 17:51    [16979278]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
o-o
Guest
Владислав Колосов,
да вроде же нормальное решение с model-ом, только неожиданно этот юзер вдруг в tempdb окажется отмапленным,
a я не знаю, какие у этого могут быть последствия, но раз заказывали "все" базы на чтение, то так и выйдет :)

ну и это, спасибо за 2012-ый, у меня первой реакцией было написать: ну-ну, щассс "свои серверные роли",
потом думаю, лучше сперва на всякий погуглю, а то я все еще сижу на 2008, хоть на дворе давно 2014-ый.
вот и не зря оказалось :)
10 дек 14, 18:04    [16979334]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
o-o,

model - хорошее решение, однако, я точно помню, что даже как-то использовал кастомную роль. Теперь вижу, что она или не работает или не так, как представляется работает.
10 дек 14, 18:09    [16979364]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
o-o
Guest
Владислав Колосов,

еще раз.
серверной роли можно выдать только права уровня сервера.
не могу сейчас в 2012 посмотреть, но в 2008 у меня их 26,
посмотрите на них снова, если не верите.
в каком смысле ваша роль работает не так, как ожидалось?
что вы ей выдали и что ожидали?

ADMINISTER BULK OPERATIONS
ALTER ANY CONNECTION
ALTER ANY CREDENTIAL
ALTER ANY DATABASE
ALTER ANY ENDPOINT
ALTER ANY EVENT NOTIFICATION
ALTER ANY LINKED SERVER
ALTER ANY LOGIN
ALTER ANY SERVER AUDIT
ALTER RESOURCES
ALTER SERVER STATE
ALTER SETTINGS
ALTER TRACE
AUTHENTICATE SERVER
CONNECT SQL
CONTROL SERVER
CREATE ANY DATABASE
CREATE DDL EVENT NOTIFICATION
CREATE ENDPOINT
CREATE TRACE EVENT NOTIFICATION
EXTERNAL ACCESS ASSEMBLY
SHUTDOWN
UNSAFE ASSEMBLY
VIEW ANY DATABASE
VIEW ANY DEFINITION
VIEW SERVER STATE
10 дек 14, 18:19    [16979414]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
zasandator
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 4887
virtuOS,

Разреши guest и включи эту роль в член роли sysadmin. Ну наверное не будешь забывать ничего )
10 дек 14, 18:49    [16979576]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
o-o
Guest
zasandator,

"включи эту роль в член" -- это мощно 8-о
но вроде вы тоже не отличаете уровень сервера от уровня базы.
или выложите сюда код того, что предложили
10 дек 14, 18:59    [16979636]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
virtuOS
Есть имя вход с проверкой подлинности Windows. Можно ли предоставить права только на чтение таблиц для всех баз на сервере? В том числе и для создаваемых в будущем. Можно для каждой базы добавлять пользователя в db_datareader, но хотелось бы решения из разряда "настроил и забыл".

Как вариант DDL триггер уровня сервера на создание базы. В базах которые уже существуют проставить руками.
ЗЫ: > 2000
10 дек 14, 19:20    [16979765]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 266
zasandator
Разреши guest и включи эту роль в член роли sysadmin. Ну наверное не будешь забывать ничего )

тогда уж сразу в domain admins AD ))

Решение с model меня вполне устраивает. Роли сервера тоже смотрел, нет там нужного.
11 дек 14, 08:53    [16981402]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Дать права на чтение на все базы  [new]
ksn_1976
Member

Откуда: Красноярск
Сообщений: 7
virtuOS, еще вариант выдачи
use [master]
GRANT CONNECT SQL TO 'user'
GRANT VIEW ANY DATABASE TO 'user'
GRANT VIEW SERVER STATE TO 'user'
GRANT VIEW ANY DEFINITION TO 'user'
GRANT CONNECT ANY DATABASE TO 'user',
где 'user' - sql или AD (domain\login) пользователь.
1 мар 16, 11:35    [18881292]     Ответить | Цитировать Сообщить модератору
 Re: Дать права на чтение на все базы  [new]
o-o
Guest
ksn_1976
virtuOS, еще вариант выдачи
use [master]
GRANT CONNECT SQL TO 'user'
GRANT VIEW ANY DATABASE TO 'user'
GRANT VIEW SERVER STATE TO 'user'
GRANT VIEW ANY DEFINITION TO 'user'
GRANT CONNECT ANY DATABASE TO 'user',
где 'user' - sql или AD (domain\login) пользователь.

что за лабуда???
вы хоть проверяете, что пишете?
ну давайте сюда картинку с успешной выдачей GRANT CONNECT ANY DATABASE TO 'user'.
а главное, чтобы после всего этого юзер стал вдруг *данные читать*.

на моей картинке:
в правом окне синтаксическая ошибка.
в левом -- то, что привнесут серверные права на уровень базы
(при условии, что юзер в базу отмаплен, чего вышеприведенный код не делает вообще-то)
никакой SELECT не появился.

но можно и попробовать выборку сделать:
select *
from Person.Address

Msg 229, Level 14, State 5, Line 1
The SELECT permission was denied on the object 'Address', database 'AdventureWorks', schema 'Person'.


К сообщению приложен файл. Размер - 76Kb
1 мар 16, 13:28    [18882047]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить