Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
китайский сервер Member [скрыт] [заблокирован] Откуда: Сообщений: 3582 |
это, чтоле? EXECUTE AS (Transact-SQL) EXECUTE AS, предложение (Transact-SQL) |
||
11 фев 14, 10:36 [15549702] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9688 |
Если у схем, к которым относятся *имя вьюхи* и *таблица*, достаточно будетgrant select on [*имя вьюхи*] to ... ЗЫ: Читать про цепочки владения. |
11 фев 14, 10:47 [15549766] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9688 |
Если у схем, к которым относятся *имя вьюхи* и *таблица* будет один владелец, достаточно будет |
11 фев 14, 10:48 [15549779] Ответить | Цитировать Сообщить модератору |
SQL2008 Member Откуда: Москва Сообщений: 4422 |
В чем проблема? Не давайте права на чтение таблицы, а дайте на чтение вьюхи. |
11 фев 14, 10:52 [15549805] Ответить | Цитировать Сообщить модератору |
SQL2008 Member Откуда: Москва Сообщений: 4422 |
Предвидя вопрос - "А так получится?" отвечаю - "А вы попробуйте!" |
11 фев 14, 10:53 [15549811] Ответить | Цитировать Сообщить модератору |
paag5 Member Откуда: Москва Сообщений: 24 |
SQL2008, все гениальное просто. Зашел отписаться как раз о том, что написанного мною скрипта с головой хватило для выполнения поставленных задач (что несказанно удивило). Нужно было изначально опробовать его, а не работать только с теорией. Всем спасибо за помощь. |
11 фев 14, 11:37 [15550120] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |