Application and DB authentication.
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
-
- Завсегдатай
- Сообщения: 301
- Зарегистрирован: 04 май 2005, 11:33
Application and DB authentication.
Есть таблицы которые надо аудитить. Для этого пишем триггеры и заносим все изменения в аудитные таблицы.
Задача - идентифицировать автора изменений. Триггеру параметр не передашь, придется пользоваться внутренними функциями БД. Поэтому на application level после успешной идентификации делаем SET ROLE rolename и в триггерах используем current_user.
На таблицу Employee пишем триггер и следим за соответствием employee и rolename.
Есть в этом подходе какие изъяны, или это вообще как-то по-другому делается?
Спасибо
Задача - идентифицировать автора изменений. Триггеру параметр не передашь, придется пользоваться внутренними функциями БД. Поэтому на application level после успешной идентификации делаем SET ROLE rolename и в триггерах используем current_user.
На таблицу Employee пишем триггер и следим за соответствием employee и rolename.
Есть в этом подходе какие изъяны, или это вообще как-то по-другому делается?
Спасибо
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Application and DB authentication.
Конечно есть, если юзверь законнектится напрямую, то хрен узнаешь кто что сделал.StS писал(а): Есть в этом подходе какие изъяны
А в этом и состоит, я так понимаю, задача нормального аудита.
По хорошему, если нужен нормальный аудит, каждый юзверь должен работать со своими credentials.
А если так не получается, то остаётся надеятся на "авось пронесёт"...
-
- Завсегдатай
- Сообщения: 301
- Зарегистрирован: 04 май 2005, 11:33
Re: Application and DB authentication.
Ну законнектится напрямую, ну и что? Триггеры ведь.Marmot писал(а): Конечно есть, если юзверь законнектится напрямую, то хрен узнаешь кто что сделал.
В том то и фишка - перенести контроль за credentials (permissions) на БД.Marmot писал(а): По хорошему, если нужен нормальный аудит, каждый юзверь должен работать со своими credentials.
А если так не получается, то остаётся надеятся на "авось пронесёт"...
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Application and DB authentication.
Ну а кто мешает сделать SET ROLE какой угодно?StS писал(а):Ну законнектится напрямую, ну и что? Триггеры ведь.Marmot писал(а): Конечно есть, если юзверь законнектится напрямую, то хрен узнаешь кто что сделал.
Ничего не понимаю, нафига извращаться если юзер коннектится со своими собственными credentials???StS писал(а):В том то и фишка - перенести контроль за credentials (permissions) на БД.Marmot писал(а): По хорошему, если нужен нормальный аудит, каждый юзверь должен работать со своими credentials.
А если так не получается, то остаётся надеятся на "авось пронесёт"...
или нет?
-
- Завсегдатай
- Сообщения: 301
- Зарегистрирован: 04 май 2005, 11:33
Re: Application and DB authentication.
Да, все понял. Был неправ. посыпаю голову пеплом.Marmot писал(а): Ничего не понимаю, нафига извращаться если юзер коннектится со своими собственными credentials???
или нет?
Действительно, можно же коннекшн к БД делать с usename and password которые ввел пользователь.
Thanks.
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Application and DB authentication.
Ну к сожалению это не всегда возможно...StS писал(а):Действительно, можно же коннекшн к БД делать с usename and password которые ввел пользователь.
Thanks.
На мой взгляд лучше всего все updates делать через stored procedures, вызывать которые может только the application user connected from predefined IP range.
+ невожзможность остальным юзераm заходить/коннектится с application server boxes.
К томуже, во многих случаях, такой подход будет намного удобнее для девелопмента чем триггеры.
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: Application and DB authentication.
обычно... пользователи ходят через мидл тир и в базу ходит толльо один пользователь - бизнесс логика. если это так, то БЛ должна сама логи писать... триггеры сакс... и не правильно это... мои два цента.StS писал(а):Есть таблицы которые надо аудитить. Для этого пишем триггеры и заносим все изменения в аудитные таблицы.
Задача - идентифицировать автора изменений. Триггеру параметр не передашь, придется пользоваться внутренними функциями БД. Поэтому на application level после успешной идентификации делаем SET ROLE rolename и в триггерах используем current_user.
На таблицу Employee пишем триггер и следим за соответствием employee и rolename.
Есть в этом подходе какие изъяны, или это вообще как-то по-другому делается?
Спасибо
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Application and DB authentication.
Вoобщем согласен, но зависит от DBпапа Карло писал(а):триггеры сакс... и не правильно это... мои два цента.

Проблема с middle-tier как защищатся от прямых коннекшинов.
На самом деле всё зависит от уровня надёжности системы.
Чем выше требования, тем сложнее оно будет...
-
- Завсегдатай
- Сообщения: 301
- Зарегистрирован: 04 май 2005, 11:33
Re: Application and DB authentication.
Почему? Определить что все работы с БД ведутся только через приложение(я). Для работы с приложением нужно залогиниться, т.е. ввести username/password.Marmot писал(а):Ну к сожалению это не всегда возможно...
А вот это, к сожалению действительно не всегда возможно. что если пользователь захочет поработать с приложением (БД) из дома, где у него динамический IP?Marmot писал(а): + невожзможность остальным юзераm заходить/коннектится с application server boxes.
Не нравится мне ограничение коннектится с application server boxes. Допустим пропала сеть и на UPSах сидят только сервера.
Чем? Какие в этом случае у триггеров отличия?Marmot писал(а):К томуже, во многих случаях, такой подход будет намного удобнее для девелопмента чем триггеры.
-
- Завсегдатай
- Сообщения: 301
- Зарегистрирован: 04 май 2005, 11:33
Re: Application and DB authentication.
Запарюсь я писать логи на 2-3 десятка таблиц плюс еще репорты по изменениям.папа Карло писал(а): обычно... пользователи ходят через мидл тир и в базу ходит толльо один пользователь - бизнесс логика. если это так, то БЛ должна сама логи писать... триггеры сакс... и не правильно это... мои два цента.
Все примеры (ну или большинство) аудита написаны на триггерах.
-
- Маньяк
- Сообщения: 2841
- Зарегистрирован: 20 фев 2003, 09:15
- Откуда: Vancouver
Re: Application and DB authentication.
Фундаментальный изъян в триггерах по большому счету один - теоретическая протеря производительности. Который может быть существенен в практических величинах а может и нет. Следующий пункт - это поддержка кода в базе и пр. Но это уже орг проблемы. Естественно ежели кто то ходит через мидл таер то там да один пользователь поскольку с точки зрения базы коннектиться к нему сервер а не юзер. А ежели там коннекшен пул есть как это положено по понятиям то потребовать чтоб кажный юзер ходил в базу со своим именем и паролем - это тебя на части порвут как тряпку.StS писал(а):Запарюсь я писать логи на 2-3 десятка таблиц плюс еще репорты по изменениям.папа Карло писал(а): обычно... пользователи ходят через мидл тир и в базу ходит толльо один пользователь - бизнесс логика. если это так, то БЛ должна сама логи писать... триггеры сакс... и не правильно это... мои два цента.
Все примеры (ну или большинство) аудита написаны на триггерах.
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Application and DB authentication.
Вот у нас например 3М юзеровStS писал(а):Почему? Определить что все работы с БД ведутся только через приложение(я). Для работы с приложением нужно залогиниться, т.е. ввести username/password.

Ага, так и запишем, используется идеологически устаревшая clent-server architecture...StS писал(а):А вот это, к сожалению действительно не всегда возможно. что если пользователь захочет поработать с приложением (БД) из дома, где у него динамический IP?Marmot писал(а): + невожзможность остальным юзераm заходить/коннектится с application server boxes.
Не нравится мне ограничение коннектится с application server boxes. Допустим пропала сеть и на UPSах сидят только сервера.

Ну во-первых, как уже сказали, производительностьStS писал(а):Чем? Какие в этом случае у триггеров отличия?Marmot писал(а):К томуже, во многих случаях, такой подход будет намного удобнее для девелопмента чем триггеры.
Во-вторых, stored procedures allow to log business transactions в целом а не только отдельные записи в таблицах.
А в-третьих, из собственного опыта, отлаживать (unit test, etc) их (stored procedures) намного проще...
-
- Завсегдатай
- Сообщения: 301
- Зарегистрирован: 04 май 2005, 11:33
Re: Application and DB authentication.
It's not the case. У нас от силы - сотня.Marmot писал(а):Вот у нас например 3М юзеров
Не, я имел в виду прямой коннекшн к базе с application server в случае пропажи лепестричества. Но, наверное, это уже крайности. Паранойя.Marmot писал(а): Ага, так и запишем, используется идеологически устаревшая clent-server architecture...

А как насчет per-statement triggers?Marmot писал(а): Во-вторых, stored procedures allow to log business transactions в целом а не только отдельные записи в таблицах.
-
- Житель
- Сообщения: 662
- Зарегистрирован: 10 апр 2006, 13:16
- Откуда: Coquitlam
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Application and DB authentication.
А пофиг, например у нас бывают транзакции у которых на входе всего пара параметров, а в результате мы апдейтим 15 разных таблиц, и в некоторых у них намного больше чем одны запись.StS писал(а): А как насчет per-statement triggers?
Если бы нам был нужен аудит, то логить надо только кто, когда, и эти самые два параметра.
А на триггерах я даже не представляю как это всё делать в этом случае, что-бы не создавать кучу мусора в логах.