|
SA 12 и выше: Защита от стороннего досупа, как ?
|
|||
---|---|---|---|
#18+
Hi All, Есть классический Client-Server, т.е. пользователь с помощью программы по tcp/ip ходит к серверу БД (SA 12 или выше). Когда пользователь работает с данными, то из программы на сервер посылаются sql-команды (insert, update, delete и т.п.). Соответственно в программе есть ограничения на то, с какими именно документами может работать пользователь. Но есть проблема: она состоит в том, что пользователь-оператор используя свой логин может соединиться с БД не через мою программу, а через какую нибудь прогу умеющую работать с БД или хотя бы через тот же Sybase Central - и тогда он может обойти все ограничения на изменения данных и править любые документы. Вопрос как это можно предотвратить ? У меня пока есть всего два варианта: переход на трехзвеньевку (что бы работать с БД можно было только через сервер приложений) или всю работу по изменению данных с соответствующими проверками перевести в SP и отобрать права на прямое изменение данных в таблицах (тогда даже в случае вызова такой SP из сторонних программ он сможет менять данные только в соответствии с логином текущего пользователя (своим логином) и не сможет менять чужие данные) . Может есть еще какие то варианты решения этой проблемы ? Скажем какие то спец. фичи SA 12 или выше ? То есть я хочу запретить работу с БД любым сторонним программам. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 11:01 |
|
SA 12 и выше: Защита от стороннего досупа, как ?
|
|||
---|---|---|---|
#18+
Оба предложенных варианта вполне правильные и рабочие. Они конечно потребуют сильного редизайна нынешней системы, но зато они хорошо известны и есть много книг по ним. Но есть и третий вариант. Он не потребует переписывания клиентов, и позволит более-менее сохранить текущую структуру БД, но... Переименовываешь все таблицы в что-то типа "<oldname>_table". Создаешь на их месте (со старыми именами) представления типа Код: sql 1. 2. 3.
Здесь ABCD_row_allowed_for() это собственная функция разрешающая или запрещающая данному юзеру видеть конкретную строку из таблицы. Это может быть и просто join на какую-нибудь таблицу авторизации. Потом вешаешь на эти представления instead of триггеры в которых уже и обновляешь базовые таблицы. Ну и естественно, никто кроме DBA не может смотреть/изменять базовые таблицы, а юзерам можно работать только с представлениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 20:08 |
|
SA 12 и выше: Защита от стороннего досупа, как ?
|
|||
---|---|---|---|
#18+
Stalker4То есть я хочу запретить работу с БД любым сторонним программам. Если к серверу доступ только у легитимных пользователей, то можно эккаунты в Sybase заводить и управлять ими через вашу программу. Идея в шифровании пароля вашей прогой, когда будете заводить пользователей. Пример: пользователь заводит/меняет свой пароль через вашу прогу и она заносит уже шифрованный. В итоге, через интерфейс пользователь зайти может, а напрямую в Sybase - пароль не подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2016, 14:51 |
|
SA 12 и выше: Защита от стороннего досупа, как ?
|
|||
---|---|---|---|
#18+
komradStalker4То есть я хочу запретить работу с БД любым сторонним программам. Если к серверу доступ только у легитимных пользователей, то можно эккаунты в Sybase заводить и управлять ими через вашу программу. Идея в шифровании пароля вашей прогой, когда будете заводить пользователей. Пример: пользователь заводит/меняет свой пароль через вашу прогу и она заносит уже шифрованный. В итоге, через интерфейс пользователь зайти может, а напрямую в Sybase - пароль не подходит. Шикарная идея, и как это я сам до нее не додумался. Думаю ее реализация + изменения данных только через SP существенно усилит защиту данных от сторонних изменений. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2016, 12:12 |
|
|
start [/forum/topic.php?fid=55&msg=39240093&tid=2009712]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 166ms |
0 / 0 |