Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Безопасность / 11 сообщений из 11, страница 1 из 1
26.04.2004, 20:13
    #32497571
Серж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность
Надеюсь я не сильно надоел здешней публике ;)

Хотелось бы обсудить вопрос безопасности клиент-серверных приложений. Вопрос, конечно, надо перенести в другой раздел форума, но:

1) Подразумевается ASA, и ее особенности.
2) Боюсь, что в другом месте это обсуждение перейдет в пустой спор, типа "что круче - pascal или c++". А здесь пока отвечают по существу, без лишней философии.

Пишем к-с приложение. Создаем на сервере логин с правами db_owner (это в MSSQL, как в ASA еще не знаю) для пользователя. Так проще программировать, но с другой стороны "грамотный" пользователь возьмет Sybase Central, приконнектится к базе и прощай все данные. Делай что хочешь, права полные.

Второй подход. db_owner не давать, весь доступ к таблицам закрыть хранимыми процедурами и вьюшками. В каждой процедуре проверять полномочия пользователя. Такой подход позволяет построить действительно защищенное приложени, но разрабатывать его значительно дольше и сложнее.

Может быть есть другие идеи, чтобы и овцы были сыты и волки целы? ;)
...
Рейтинг: 0 / 0
26.04.2004, 20:32
    #32497587
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность
Можно имя юзера предлагать вводить такое же как и в базе, а вот пароль, который он вводит перед тем как передавать базе - перекодировать приложением. Соотв. прийдется написать прогу, которая бы эти пароли создавала. Имя тоже можно кодировать.
...
Рейтинг: 0 / 0
26.04.2004, 21:54
    #32497636
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность
А чем не устраивают стандартные GRANT средствами СУБД ? Через них спокойно можно прописать кому чего можно читать, куда писать и что запускать. Юзерам owner и created ролей не давать, так что изменить или добавить структуру они не смогут. Для тех таблиц, в которых права пользователей распостраняются на определенные записи, соотвествующе по любому придеться их закрывать и давать доступ юзерам через нужные представления, где можно возвращать только нужные записи, фильтруя их по UserID с опцией WITH CHECK OPTION.

По поводу первого подхода: можно конечно запретить логинам с правами owner конектиться к БД не из клиентского приложения. Для этого можно установить собственную процедуру инициализации подключения в опции LOGIN_PROCEDURE, в ней проводить проверку подключаемого приложения и параметров подключения и соотвествующе при нежелательном подключении убивать сессию.

Есть еще и третий подход - установить БД в режим криптования. Тогда пользователь чтобы подключиться к базе данных самостоятельно должен будет ввести логин, пароль и ключ шифрования. Ключ можно вшить в приложение и соответствующе пока его не знаешь к БД нельзя будет не только подключиться, но и вообще вскрыть ее файлы или лог.
...
Рейтинг: 0 / 0
27.04.2004, 11:57
    #32498307
Геша
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность
Я эту проблему и немного другую решил другим путем .Програмлю на Delfi,С++ Бюильдере.

1 Работа юзверей с базой идет только через ХП.
2.Грантую права только на Execute для этих ХП, а так как процедура выполняется с правами ownera то проблем изменить удалить или selectitь нет.
3.Все юзеры входят в группы . права на выполнение ХП раздаются группам.
4.К этим группам приписывается так некое число целое.(Таg)
5. в момент загрузки программы определяю в какие группы входит юзер , таким образом знаю какие Таги доступны данному юзеру.
5. Визуальные компоненты у Buildera имеют свое свойство Tag .. в дизайнере приписываю этому свойству значение целое число.
6.Есть процедура с++ , которая в момент инициализации формы (при запуске)сканирует все компоненты которые входят в состав формы и проверяет значение Tag , Если Таг компоненты =0(по умолчанию) , или входит в состав
тегов групп взятых из БД , тогда Enabled=true иначе Enabled || Visible = false ..

Вот собственно и все ...
Прав на изменение таблиц через SQL - запросы у ползователей нет ..Вся работа через процедуры ...
Плюс еще отслеживается доступ к управляющим элементам клиентского интерфейса и управление им на основании прав юзера ..

Конечно сложно немного .. но идея мне нравится и главное красиво .. ;-)
...
Рейтинг: 0 / 0
27.04.2004, 19:05
    #32499393
Серж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность
PaulJB, не совсем понял идею.

Геша, с хр. процедурами понятно, писать "лишнего" кода больше приходится.

ASCRUS, я правильно понял, что ключевое слово "WITH CHECK OPTION" ?
Т.е. над view можно выполнять insert, update, delete, причем они будут выполнены только при соблюдении условия WHERE, описанного во view?
Если это так, тогда становится все просто и красиво.
...
Рейтинг: 0 / 0
27.04.2004, 21:53
    #32499535
Sergey Orlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность
Если ASA cтоит на контроллере домена Windows NT, то можно организовать авторизацию через систему безопасности домена, так называемый Integrated login, тогда в базе прописываешь пользователей базы, которым ставишь в соответствии пользователей домена NT, в результате для доступа к базе пользователю не надо знать ни имя ни пароль. В довершению к этому можно не ставить инструменты, для доступа к базе через ODBC хватает одной DLL, правда если добавлять DSN ручками то нужны еще 2-е А вообще, все надо делать через ХП.
...
Рейтинг: 0 / 0
27.04.2004, 22:27
    #32499548
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность
авторТ.е. над view можно выполнять insert, update, delete, причем они будут выполнены только при соблюдении условия WHERE, описанного во view?
Угу, именно все так и есть. Данная опция поддерживается в ASA, ASE и MSSQL. Как в других СУБД честно говоря не знаю.
...
Рейтинг: 0 / 0
28.04.2004, 08:57
    #32499712
Геша
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность
С вьюшками конечно хорошо , но не во все из них можно инзертить апдейтить или удалять .. это тоже надо иметь в виду ..
...
Рейтинг: 0 / 0
28.04.2004, 10:06
    #32499845
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность
авторС вьюшками конечно хорошо , но не во все из них можно инзертить апдейтить или удалять .. это тоже надо иметь в виду ..
Гм. Дык представления в данном случае делаются как SELECT * FROM Table, и они всегда будут обновляемыми. Все дальнейшие запросы будут делать на их основе так, как будто бы они являются таблицами. Кстати производительность от этого совсем не пострадает.
...
Рейтинг: 0 / 0
28.04.2004, 10:30
    #32499919
Геша
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность
ASCRUS
Если делать вьюшки как "Select * from Table" тогда смысл во вьюшках? практически тоже самое просто брать таблицы и все ..
(... я просто совсем мало работал со вьюшками , может быть чтото не понимаю (с раздачей прав на них) )

Тут я насколько понял проблема в разграничении прав пользователей в зависимости от выполняемых ими фукций .. конечно можно раздавать права
им на вставку или обновление и тп .. как для таблиц так и вьюшек .. но мое сугубо личное имхо все это гораздо легче (проще) делать грантуя права на Execute для конкретной ХП .. ХП делается с овнером DBA или DBO . Никаких прав на таблицы или вьюшки юзверям не дается а все действия юзеры выполняют через ХП .
...
Рейтинг: 0 / 0
28.04.2004, 13:42
    #32500589
Серж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Безопасность
Геша, что вьюшка определяется, как

Select * from Table WHERE some condition WITH CHECK OPTION.

Таким образом убиваются два зайчика:
1) Юзер видит только те строки, которые ему положено видеть
2) Юзер не может изменить "чужие" строки.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Безопасность / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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