powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Защита данных
16 сообщений из 16, страница 1 из 1
Защита данных
    #32007113
Lohmatun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Средствами SQL-сервера можно каждому юзеру дать права на select, update, delete и insert.
Но эти права распространяются на всю таблицу. А если нужно дать каждому юзеру возможность смотреть только часть записей (скажем, введенным только им, что фиксируется в соотв. поле этой табл.) можно ли это сделать средствами администрирования SQL или нужно для этого обязательно писать код?
Может есть какие-то стандартные подходы в этом вопросе?
Спасибо.
...
Рейтинг: 0 / 0
Защита данных
    #32007114
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартные подходы есть, например через View или с использованием ХП.
...
Рейтинг: 0 / 0
Защита данных
    #32007118
Lohmatun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, а что такое ХП?
...
Рейтинг: 0 / 0
Защита данных
    #32007119
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХП - хранимые процедуры
Можно просто организовать работу с базой только через ХП, а юзерам давать права только на выполнение этих процедур.
...
Рейтинг: 0 / 0
Защита данных
    #32007133
Epanch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Genady
Последняя фраза достаточно интересна. С точки зрения разработчика БД
использование только хранимых процедур практически снимает вопросы
разграничения доступа пользователей. Но я вот например пишу как
серверную часть, так и клиентскую. В клиентских программах чуть ли не
на каждой кнопке разные запросы прописаны. Представьте сколько должно
быть SP, чтобы сделать все необходимое. Это во-первых.
Во-вторых если разработка серв и кл частей отдана разным людям,
то каждый раз работяга от Delphi будет бежать к админу и просить -
сделай мне еще штук 20 SP?

Хотелось бы услышать мнение по этому поводу.
...
Рейтинг: 0 / 0
Защита данных
    #32007146
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем плох вариант предоставления прав на представления?
...
Рейтинг: 0 / 0
Защита данных
    #32007148
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Epanch
2 Александр Гладченко

Я по моему нигде не говорил, что вариант с хранимыми процедурами единственный или наилучший

> В клиентских программах чуть ли не на каждой кнопке разные запросы прописаны.

У меня есть ХП в которую строковыми параметрами передаются: имя таблицы, условие выборки и порядок сортировки. А процедура формирует запрос и выполняет его через exec.
...
Рейтинг: 0 / 0
Защита данных
    #32007149
Epanch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вариант с Views естественно хорош. Обсуждается вторая часть (с SP). Вариант одной процедуры с параметрами не дает выигрыша в безопасности по сравнению с таблицами.
...
Рейтинг: 0 / 0
Защита данных
    #32007152
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Вариант одной процедуры с параметрами не дает выигрыша в безопасности по сравнению с таблицами.

Ну, в общем да, если не использовать ролей. С помощью роли не пускать юзера к базе минуя приложения, а в процедуре заложить логику по горизонтальному фильтру. По моему должно неплохо получиться.
...
Рейтинг: 0 / 0
Защита данных
    #32007154
Фотография AnS1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для 2х уровневой системы необходимо использовать исключительно SP.
Причины уже раз сто описаны в литературе - это и безопасность и транзакционность и трафик...

Что касется кол-ва - если система хорошо структурирована - то разобраться в нескольких тысячах процедур
не так уж и сложно

если предполагается использовать многоуровневую систему (Transaction Server), то
там допускаются запросы из бизнес - объектов к БД.
но и безопасностью там можно управлять на уровне бизнес - объектов.
...
Рейтинг: 0 / 0
Защита данных
    #32007163
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если закрыть прямой доступ к таблицам, а оставил доступ только к ХП, в которых динамически формируется строка запроса set @SQLString='select SomeField from SomeTable' и далее выполняется через вызов exec(@SQLString), то при попытке выполнить такую процедуру получишь сообщение об ошибке - попытка нарушения прав доступа. Дело в том, что текст запроса, находящийся в @SQLString выполняется не в контексте хранимолй процедуры, а в контексте пользователя, вызвавшего эту хранимую процедуру. То есть, для того, чтобы эта хранимая процедура нормально работала, нужно предоставить всем пользователям, ее вызывающим, права на прямой доступ к исходной таблице, а не только на запуск к хранимой процедуре.
А вот как такие штуки работают из роли приложения - честно говоря не знаю, не пробовал. Отзовитесь кто-нибудь из тех, кто пробовал. Не выпадает ли из контекста роли приложения динамически формируемый и выполняемый запрос?
...
Рейтинг: 0 / 0
Защита данных
    #32007173
Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и не нужно выполнять такой скрипт. Можно сделать так: select SomeField into #tmp from SomeTable
а уж затем set @SQLString='select * from #tmp' ... ну и так далее
...
Рейтинг: 0 / 0
Защита данных
    #32007183
Fompro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SP действмтельно получается много. Но малюсенькие однотипные запросы можно спокойно запихнуть в одну, передав ей дополнительный пар-р. И ешё один плюс. Зачастую меняются только правила игры, а отображение результатов остаётся прежним. И возможность "на лету" внести исправления в логику - дорогого стоят.
Что касается изначального вопроса, то
у меня в системе построена собственная система ролей с областями видимости, правами на операции etc. И всё только на SP.
...
Рейтинг: 0 / 0
Защита данных
    #32007187
Epanch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 AnS1

> для 2х уровневой системы необходимо использовать исключительно SP.
>Причины уже раз сто описаны в литературе - это и безопасность и транзакционность и >трафик...

А пару ссылочек не дадите?
...
Рейтинг: 0 / 0
Защита данных
    #32007194
Lohmatun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо. Не ожидал столь массированного ответа - похоже, что вопрос животрепещет...
Итак, три подхода - защита средствами сервера (ХП, View), защита на уровне бизнес объектов (рассказал бы кто на живых примерах - что это такое...), защита на уровне интерфейса.
Третий вариант сильно не нравится, т.к. навешивание разных проверок и ограничений в клиентской части затрудняет поддержку (с этим наборолся в 1С:Предприятии). Второй может быть хорош, но не сталкивался , первый нравится больше всего.
Голосуем?


А насчет того, что много раз в литературе описано, хотелось бы уточнить - в какой?
...
Рейтинг: 0 / 0
Защита данных
    #32007195
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Итак, три подхода - защита средствами сервера (ХП, View),
На самом деле это скорее два подхода, хотя конечно можно и совмещать


>защита на уровне бизнес объектов (рассказал бы кто на живых примерах - что это такое...),

Почитайте литературу по технологоиям COM, DCOM или CORBA.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Защита данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]