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

Откуда: Москва
Сообщений: 24
День добрый.
Возникла проблемка, над которой уже сломал голову.

Есть сервер (sql server 10.50.1600), есть бд, есть табличка.
Есть аккаунт, который будет являться сервисным монитором. На базе есть таблички, данные из которых должны быть видны этому сервисному монитору, но доступ к самим таблицам давать запрещено согласно политики безопасности, так как аккаунт не доменный и обезличенный и необходимо ограничить его по хостам. Но возможности этого сделать пока не нашел. В общем условие того, что данный профайл должен иметь доступ к данным только с определенного хоста, а при заходе с другого хоста должен видеть пустоту, подтолкнуло на необходимость работать через view и родить следующий скрипт:

use  *база*
go

CREATE VIEW *имя вьюхи*
AS

select * from *таблица*
where 
SYSTEM_USER=*профайл, с которого будет возможность запускать эту вьюху* and
HOST_NAME() in (*именя хостов, с которых можно запускать данную вьюху. С других хостов выдаст пустоту)


Но вот в чем загвоздка: сервисный монитор (профайл) не должен иметь доступ к таблице и должен получать данные только через вьюху.

И вот тут тупик. Возникают два вопроса:

1) Можно ли ограничить доступ на таблицу, что бы доступ на select имел определенный профайл с определенного хоста (как это сделано на примере выше со view)?
2) Можно ли реализовать запуск вьюхи одним пользователем от имени другого?
Допустим, что бы сервисный монитор запускал вьюху с определенного хоста, которая в свою очередь запускала другую вьюху от имени другого пользователя, имеющего доступ на чтение нужных таблиц. А в идеале реализовать все это в одной вьюхе.

Подсобите, пожалуйста.
11 фев 14, 10:29    [15549663]     Ответить | Цитировать Сообщить модератору
 Re: select view без доступа к таблице.  [new]
китайский сервер
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 3582
paag5
2) Можно ли реализовать запуск вьюхи одним пользователем от имени другого?

это, чтоле?
EXECUTE AS (Transact-SQL)
EXECUTE AS, предложение (Transact-SQL)
11 фев 14, 10:36    [15549702]     Ответить | Цитировать Сообщить модератору
 Re: select view без доступа к таблице.  [new]
invm
Member

Откуда: Москва
Сообщений: 9688
Если у схем, к которым относятся *имя вьюхи* и *таблица*, достаточно будет
grant select on [*имя вьюхи*] to ...


ЗЫ: Читать про цепочки владения.
11 фев 14, 10:47    [15549766]     Ответить | Цитировать Сообщить модератору
 Re: select view без доступа к таблице.  [new]
invm
Member

Откуда: Москва
Сообщений: 9688
Если у схем, к которым относятся *имя вьюхи* и *таблица* будет один владелец, достаточно будет
11 фев 14, 10:48    [15549779]     Ответить | Цитировать Сообщить модератору
 Re: select view без доступа к таблице.  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4422
В чем проблема?
Не давайте права на чтение таблицы, а дайте на чтение вьюхи.
11 фев 14, 10:52    [15549805]     Ответить | Цитировать Сообщить модератору
 Re: select view без доступа к таблице.  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4422
Предвидя вопрос - "А так получится?"
отвечаю - "А вы попробуйте!"
11 фев 14, 10:53    [15549811]     Ответить | Цитировать Сообщить модератору
 Re: select view без доступа к таблице.  [new]
paag5
Member

Откуда: Москва
Сообщений: 24
SQL2008, все гениальное просто. Зашел отписаться как раз о том, что написанного мною скрипта с головой хватило для выполнения поставленных задач (что несказанно удивило). Нужно было изначально опробовать его, а не работать только с теорией.

Всем спасибо за помощь.
11 фев 14, 11:37    [15550120]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить