Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как лучше построить безопасность БД ? (Oracle)


Страницы:   1 2 3 4 5

ANB ©   (2005-05-25 16:05:00) 

Знаю несколько способов :
- Через гранты раздаем права. Тонкая настройка (выборка только части записей или сложные условия) - на клиенте. Хуже еще не видел, легко ломается, хотя можно усложнить взлом, например, шифруя пароль.
- Доступ только на вьюхи, изменения через хранимки - жутко неудобно каждый раз переправлять эти хранимки. И блокирутся возможность выполнять обычные DML.
- Доступ только на вьюхи, изменения через instead of триггера + хранимки для удобства - так еще не видел, соответственно прокомментировать не могу.
Все комментарии, ессно, имхо.
Кто еще с какими схемами защиты сталкивался и какую может посоветовать ?


ANB   (2005-05-26 14:09:00) [21]


> Это появилось с 8и.
- а поподробнее и с примером ? Это без прикола, есть есть детализированный доступ, то это круто. Что то я в доке на 9 не нашел ничего подобного, а гуру, который учил меня 8, грил что в оракле нету такого. В мсскуле я в доке видел такую штуку.


Sergey13   (2005-05-26 14:01:00) [22]

2[61] Polevi ©   (26.05.05 13:38)
Это другой способ.

2[63] evvcom ©   (26.05.05 13:44)
>Насколько я понял о чем речь, то это только с 10 версии. А в основном народ пишет на 8 и 9.
Нет. Это появилось с 8и. Но сам я не пробовал.


ANB   (2005-05-26 13:56:00) [23]


> лучше применить View или Procedure
- ну, насколько я понял, вьюхи ты все равно юзаешь, только вместо триггеров instead of используешь ХП ? Или не так ?


evvcom   (2005-05-26 13:47:00) [24]


> Danilka ©   (26.05.05 13:42) [62]

:) Ok


evvcom   (2005-05-26 13:44:00) [25]


> Это детальный контроль доступа. Есть такое.

Насколько я понял о чем речь, то это только с 10 версии. А в основном народ пишет на 8 и 9.


Danilka   (2005-05-26 13:42:00) [26]

[58] evvcom ©   (26.05.05 13:18)
Понятно. Я как-то пропустил пост [23].
Кстати, обычно параметров не так уж и много, которые удобнее всего использовать в пакетных переменных, часть можно также использовать в таблице настройки параметров пользователя, которую точно также можно использовать во вьюхах.
Но, конечно, есть разные варианты. Ты остановился на ХП, я на вьюхах и оба довольны. :)


Polevi   (2005-05-26 13:38:00) [27]

>Sergey13 ©   (26.05.05 13:29) [60]
а зачем тогда
>Доступ только на вьюхи, изменения через instead of триггера
зачем прописывать правила в 2 местах если можно в одном ?


Sergey13   (2005-05-26 13:29:00) [28]

2[59] Polevi ©   (26.05.05 13:24)
Это детальный контроль доступа. Есть такое.


Polevi   (2005-05-26 13:24:00) [29]

я дико извиняюсь, в оракле не силен
я както присутствовал не некой конференции по базам данных и у меня был разговор с дяденькой из оракл, он утвердал что в этой СУБД существует возможность писать чтото вроде скриптов на таблицы ??? не знаю как назвать
но суть в том что при любом обращении к таблице (select или update) будет отрабаывать этот скрипт и если он не предполагает возвращать некие строки для текущего юзера - они как бы не будут для него существовать
или я чего не так понял ?


evvcom   (2005-05-26 13:18:00) [30]


> в качестве условий могут выступать пакетные функции. А они,
> в свою очередь, могут юзать пакетные переменные

Вот про это я и спрашивал. Это аналогично моему "или изгаляться через передачу параметров через запись в настроечные таблицы" в [23]. Т.е. опять же что лучше применить View или Procedure зависит от конкретной задачи. Если мы решили, что фильтровать записи будем на сервере по нескольким параметрам, то делать копию всего этого списка в переменных пакета, мягко говоря, неудобно. Поэтому в этом случае я останавливаюсь все же на ХП. Mutating у меня встретился пока всего в одном месте, решение - два триггера и ассоциативный массив в пакете - не так уж и много, имхо.


Danilka   (2005-05-26 13:05:00) [31]

[55] ANB ©   (26.05.05 13:02)
Это да, бывает, нет в жизни щастья. :)
Приходится бороться, например, хинтами. Но это не такая уж и частая ситуация.


Danilka   (2005-05-26 13:04:00) [32]

[52] evvcom ©   (26.05.05 12:56)
Это просто пример. В реале, я и * никогда в секции перечисления полей не использую, и в самой вьюхе обязательно есть условия. А когда надо вытащить из вьюхи определенные записи - для них всегда есть секция where. Делаешь селект из вьюхи с какими-то условиями - никаких проблем. :)
Кроме того, в самих вьюхах в качестве условий могут выступать пакетные функции. А они, в свою очередь, могут юзать пакетные переменные. Которые могут менять пакетные процедуры. :))
Кстати, тоже бывает полезно, вовсе необязательно, но полезно, например, в клиентской программе есть рабочая дата. При изменении этой даты, меняется соответствующая пакетная переменная.
Есть куча вьюх на различные документы, все они показывают документы на рабочую дату, которую берут из пакета.
При этом, никаких дополнительных условий не надо ставить при селекте из вьюхи.


ANB   (2005-05-26 13:02:00) [33]

Хотя, согласен немного с evvcom ©, иногда добавляя условие к запросу из вьюхи можно сломать план и получить тормоза. Но это можно и без вьюх сотворить. А тестирование тогда зачем ?


ANB   (2005-05-26 13:00:00) [34]


> evvcom ©   (26.05.05 12:56) [52]
- ест два подхода
1. select * from v_test1 where bla-bla-bla
2. Стандартные запросы можно оформить разными вьюхами.
У нас сейчас по второму варианту безопасности система построена, то есть вьюхи и ХП. И хватает этого механизма.


ANB   (2005-05-26 12:56:00) [35]


> ЗЫ: Основное воровство идет абсолютно легальными способами.
> Продал по заниженой цене, купил по завышеной. Откат в карман.
- вот это ERP и закрывала. На любую подозрительную операцию продавец должен был запросить добро у руководства, и результаты ответа протоколировались. А девелопером можно было уже по факту цены подправить.


evvcom   (2005-05-26 12:56:00) [36]


> create view v_test1 as select * from test1

И все же, как ты поступаешь, если надо бы параметр какой в этот select добавить? Ну не надо мне лимон записей возвращать.


ANB   (2005-05-26 12:53:00) [37]

Проверил. Действительно ничего не падает. Хотя эффекты прикольные при апдейте :))).
Получается, вариант 3 пока лучший. Не очень трудоемко, гибко и надежно.

Кто нибудь пробовал 4 ? Это сильно гемморно ?


Sergey13   (2005-05-26 12:51:00) [38]

2 [47] ANB ©   (26.05.05 12:42)
> Во вторых, если я (на месте заказчика) знаю, что программист закрыл все дыры

Ты знаешь живые примеры такого? Нет, закзчиков, которые считают, что программист закрыл все дыры, я еще представляю. А вот программистов закрывших вседыры в сложных системах не видел. 8-)

ЗЫ: Основное воровство идет абсолютно легальными способами. Продал по заниженой цене, купил по завышеной. Откат в карман. А дивелопером в таблицах лазить - это извращение. 8-)


Danilka   (2005-05-26 12:45:00) [39]

специально в триггере не добавил никаких условий, шоб страшнее выглядел :))


Danilka   (2005-05-26 12:43:00) [40]

[28] ANB ©   (26.05.05 11:33)
Понятно. Я просто не знал как это называется. :)
Нет, конечно в триггерах instead of нет никаких мутатингов, оно и понятно почему: триггер заменяет стандартные действия.
Впрочем, можешь сам убедится:

create table test1 (xxx int primary key, yyy int)
/
create view v_test1 as select * from test1
/
create trigger tr_test1 instead of insert or update on v_test1 for each row
declare
 v_xxx int;
begin
 select nvl(max(xxx),0)+1 into v_xxx from test1;
 delete from test1;
 insert into test1 (xxx, yyy) values (v_xxx, :new.yyy);
end;
/
insert into v_test1 (yyy) values (12)
/
update v_test1 set yyy = 122
/
select * from v_test1
/


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо