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

Откуда:
Сообщений: 20
Добрый день
у меня в SQL Server 2008 есть таблица с данными... и допустим пять пользователей которые могут её просматривать (пользователи Windows)... сейчас просмотр идет через запрос SELECT * FROM table1
можно ли как-то сделать такое ограничение, чтоб если зашел "пользователь 1", то он увидит разрешенные ему данные, а "пользователь 2" - только разрешенные ему данные... разрешенные данные могут пересекаться у "пользователь 1" и "пользователь 2"...
Заранее благодарю за Ваши ответы
26 авг 09, 15:01    [7582333]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
kot_vas
Добрый день
у меня в SQL Server 2008 есть таблица с данными... и допустим пять пользователей которые могут её просматривать (пользователи Windows)... сейчас просмотр идет через запрос SELECT * FROM table1
можно ли как-то сделать такое ограничение, чтоб если зашел "пользователь 1", то он увидит разрешенные ему данные, а "пользователь 2" - только разрешенные ему данные... разрешенные данные могут пересекаться у "пользователь 1" и "пользователь 2"...
Заранее благодарю за Ваши ответы

А у вас есть поле в таблице, которое определяет, что разрешено каждому пользователю ?
26 авг 09, 15:02    [7582342]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21502
Создавать представления и давать на них разные права, доступ к самой таблице не разрешать
26 авг 09, 15:02    [7582350]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
kot_vas
Member

Откуда:
Сообщений: 20
Shocker.Pro
Создавать представления и давать на них разные права, доступ к самой таблице не разрешать


т.е. для каждой группы пользователей у меня должно быть свое представление с неповторяющимся именем?
26 авг 09, 15:11    [7582414]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Implementing Row- and Cell-Level Security in Classified Databases Using SQL Server
26 авг 09, 15:11    [7582415]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21502
kot_vas
Shocker.Pro
Создавать представления и давать на них разные права, доступ к самой таблице не разрешать


т.е. для каждой группы пользователей у меня должно быть свое представление с неповторяющимся именем?



Вы не ответили на вопрос Glory.
Можно создать инлайновую функцию (параметрическое представление) с параметром "имя пользователя". Можно создать процедуру, которая будет сама определять имя пользователя и возвращать только предназначенные ему данные (доступ к таблице опять же запрещен). Можно ограничить на уровне клиентского приложения - использовать разные запросы вместо "SELECT * FROM table1".

Не очень понятен клиент. То есть откуда взялось "SELECT * FROM table1"? И на каком уровне определены ваши пользователи - это пользователи SQL-сервера или вашего клиентского приложения.

В общем - требуется более подробное описание задачи. А так - дадим только общего плана советы.
26 авг 09, 16:04    [7582813]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
kot_vas
Member

Откуда:
Сообщений: 20
Glory
kot_vas
Добрый день
у меня в SQL Server 2008 есть таблица с данными... и допустим пять пользователей которые могут её просматривать (пользователи Windows)... сейчас просмотр идет через запрос SELECT * FROM table1
можно ли как-то сделать такое ограничение, чтоб если зашел "пользователь 1", то он увидит разрешенные ему данные, а "пользователь 2" - только разрешенные ему данные... разрешенные данные могут пересекаться у "пользователь 1" и "пользователь 2"...
Заранее благодарю за Ваши ответы

А у вас есть поле в таблице, которое определяет, что разрешено каждому пользователю ?


нет. такого поля нет... а без него никак нельзя обойтись?
26 авг 09, 18:10    [7583624]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36803
kot_vas
нет. такого поля нет... а без него никак нельзя обойтись?
Т.е. типа сделать как бы что бы сервер сам угадывал, что кому можно видеть, а что нет?

Сообщение было отредактировано: 26 авг 09, 18:18
26 авг 09, 18:18    [7583675]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21502
kot_vas
нет. такого поля нет... а без него никак нельзя обойтись?



Можно.
Тогда рассказывайте, что в вашем понимании означает "разрешенные пользователю данные"
26 авг 09, 18:24    [7583718]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
kot_vas
Member

Откуда:
Сообщений: 20
Shocker.Pro

Можно создать процедуру, которая будет сама определять имя пользователя и возвращать только предназначенные ему данные (доступ к таблице опять же запрещен).


а каким образом процедура определит какие данные предназначены пользователю? необходимо создавать ещё одну таблицу где будут эти разрешения?
26 авг 09, 18:27    [7583729]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
kot_vas
Member

Откуда:
Сообщений: 20
а можно сделать просто ещё одну таблицу где для каждого пользователя будут перечисляться допустимые значения, а потом с использованием хранимки вычислять юзера и выводить для него данные???
26 авг 09, 18:29    [7583739]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21502
kot_vas
а каким образом процедура определит какие данные предназначены пользователю? необходимо создавать ещё одну таблицу где будут эти разрешения?


Например Пользователь1 может просматривать только отрицательные и нулевые значения какого-то поля, Пользователь2 только положительные и нулевые значения какого-то поля. Я ж не знаю, потому и спрашиваю топикстартера
26 авг 09, 18:37    [7583769]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21502
kot_vas
а каким образом процедура определит какие данные предназначены пользователю? необходимо создавать ещё одну таблицу где будут эти разрешения?



Тьфу, черт, я не сообразил, что вы и есть автор топика. Потому что на этот вопрос не может задать автор топика, наоборот, он должен на него ответить.

ИТАК: А каким образом у вас в данных определяется какая строка какому пользователю предназначена?


А может вы все-таки хотите узнать не как ограничить права на строки для пользователей, а как организовать систему, позволяющую ограничить права (а вопрос ограничения прав - это уже совсем даже второй вопрос).

Тогда ответьте на вопросы, которые заданы выше
1) Как у вас организованы пользователи?
2) Какой принцип отбора строк, то есть кто определяет, что показывать определенному пользователю, а что - нет?
26 авг 09, 19:31    [7583929]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
kot_vas
Member

Откуда:
Сообщений: 20
Shocker.Pro


Тогда ответьте на вопросы, которые заданы выше
1) Как у вас организованы пользователи?
2) Какой принцип отбора строк, то есть кто определяет, что показывать определенному пользователю, а что - нет?


1. В данный момент есть только пользователь sa и 2 доменных пользователя AD, у которых есть право datareader на таблицу... В дальнейшем будут добавлены ещё пользователи AD
2. В таблице есть поле "Номер телефона", по которому необходимо производить отбор... Определять доступность данных буду я, но пока не сильно понимаю как это сделать. :-(

После нескольких Ваших ответов думал создать таблицу с 2-мя полями по которым производить отбор: "пользователь", "доступный номер телефона". Потом создать хранимку которая б возвращала мне таблицу в зависимости от того, какой пользователь выполнил хранимку...
но в данный момент немножечко начал сомневаться: правильно я планировал делать или нет???
26 авг 09, 22:46    [7584269]     Ответить | Цитировать Сообщить модератору
 Re: ограничения на просмотр строк таблицы  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21502
при условии, что разным пользователсям может быть доступна одна и та же строка (вы это упоминали) - верно. В общем получается классический случай отношения многие-ко-многим и он решается через таблицу отношений.
26 авг 09, 23:42    [7584379]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить