Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
ANB ©   (2005-05-26 12:10) [40]


> Val ©   (26.05.05 12:02) [38]
- ну все остынь. Давай я перед тобой извинюсь. Ты по сабжу что нибудь имеешь ? А то уже Жук пришел, ща мы опять в холиварчик плавно переползем.

to Danilka - ты так и не ответил на вопрос - если я нагло буду нарушать правила (селекать из изменяемых таблиц например) в триггере instead of, мутатинг вылезет или нет ?


 
Sergey13 ©   (2005-05-26 12:14) [41]

2[39] ANB ©   (26.05.05 12:06)
Я так думаю, что воруют в БД гораздо меньше чем просто так - несут то что плохо лежит. Если же
>Денежка вполне законно ушла
Тогда что ты этому противопоставишь? Вьюхи с процедурами?

Весь вопрос в соотношении потерь от слабой безопасности и затрат на сильную безопасность.


 
ANB ©   (2005-05-26 12:17) [42]


> Sergey13 ©   (26.05.05 12:14) [41]
- все зависит от цены проекта. На тот проект в год тратилось $600000 (своя ERP). Ессно, за такие баки начальство хотело, чтобы все было круто. В том числе и безопасность.


 
ANB ©   (2005-05-26 12:19) [43]


> Я так думаю, что воруют в БД гораздо меньше чем просто так
>
- там нести нечего было, стулья, столы и свой комп. А продавали дорогую технику. И при этом можно было аккуратно подкрутив базу, положить в карманчик за раз около $10000.


 
Val ©   (2005-05-26 12:23) [44]

>[40] ANB ©   (26.05.05 12:10)
:) спасибо, не надо. я не нагревался.
 По сабжу - сабж довольно расплывчат. Схема построения политики безопасности базы данных непосредственно зависит от содержимого базы, ее назначения, правил ее использования.
 Вы предлагаете сравнить перечисленные варианты - они все хороши для одних конкретных случаев и плохи для иных. В чем тогда смысл обсуждения? Кто-то из этой ветки что-либо полезное вынес?


 
ANB ©   (2005-05-26 12:31) [45]


>  - они все хороши для одних конкретных случаев
- вот хотелось бы и обсудить поконкретнее, в каких случаях какой способ применять.


> Кто-то из этой ветки что-либо полезное вынес?
- пока кроме Danilka никто ничего полезного и не постит.

А сабж спецально обобщенный, чисто теоретический. Хотелось бы знать, кто еще какими способами пользуется и при каких условиях.


 
Sergey13 ©   (2005-05-26 12:31) [46]

2 ANB ©
Я уже говорил - безопасность это очень разноплановое понятие. Ну занимался ты пол года этим. Истратил 300000$. Нагородил изрядный частокол и распределил все права которые можно. Потом враги подошли к девочке операционистке и за шоколадку попросили рапечатать нужную инфу. А за золотое колечко изменить немного. И что? Может и не стоило столько вбухивать в это дело?
И это касается не только Оракла.


 
ANB ©   (2005-05-26 12:42) [47]


> Потом враги подошли к девочке операционистке и за шоколадку
> попросили рапечатать нужную инфу

Ну во первых настройку грамотно построенной системы доступа можно свалить на заказчика.
Во вторых, если я (на месте заказчика) знаю, что программист закрыл все дыры, и, если я разрешил только этой девочке такую опасную операцию, то девочка мне долг вернет, продав квартиру. Да и вряд ли рискнет.


 
Danilka ©   (2005-05-26 12:43) [48]

[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
/


 
Danilka ©   (2005-05-26 12:45) [49]

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


 
Sergey13 ©   (2005-05-26 12:51) [50]

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

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

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


 
ANB ©   (2005-05-26 12:53) [51]

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

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


 
evvcom ©   (2005-05-26 12:56) [52]


> create view v_test1 as select * from test1

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


 
ANB ©   (2005-05-26 12:56) [53]


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


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


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


 
ANB ©   (2005-05-26 13:02) [55]

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


 
Danilka ©   (2005-05-26 13:04) [56]

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


 
Danilka ©   (2005-05-26 13:05) [57]

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


 
evvcom ©   (2005-05-26 13:18) [58]


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

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


 
Polevi ©   (2005-05-26 13:24) [59]

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


 
Sergey13 ©   (2005-05-26 13:29) [60]

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


 
Polevi ©   (2005-05-26 13:38) [61]

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


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

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


 
evvcom ©   (2005-05-26 13:44) [63]


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

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


 
evvcom ©   (2005-05-26 13:47) [64]


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

:) Ok


 
ANB ©   (2005-05-26 13:56) [65]


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


 
Sergey13 ©   (2005-05-26 14:01) [66]

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

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


 
ANB ©   (2005-05-26 14:09) [67]


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


 
Sergey13 ©   (2005-05-26 14:20) [68]

2[67] ANB ©   (26.05.05 14:09)

Я про это читал в ОраклМагазин давненько правда. Номера не помню.
http://www.oracle.com/global/ru/oramag/index.html

Это описано у Тома Кайта в его книге "Оракл для профессионалов". Глава, в том переводе что есть у меня, называется "Тщательный контроль доступа". Собственно эта глава и была в журнале.

Если есть желание могу выслать статью.


 
evvcom ©   (2005-05-26 14:21) [69]


> вьюхи ты все равно юзаешь

не-а, не юзаю. Чтение MyProc#List, запись MyProc#Save


> Это детальный контроль доступа.
>
> Нет. Это появилось с 8и.

Тогда что это? Я подумал, что речь идет о разграничении полномочий на уровне строк, а это, насколько я знаю, только с 10-ки.


 
evvcom ©   (2005-05-26 14:24) [70]


> Если есть желание могу выслать статью

Скинь мне на мыльце, если не в лом.


 
ANB ©   (2005-05-26 14:27) [71]

И мне ABelousov[sobaka]smartcard.ru


 
ANB ©   (2005-05-26 14:29) [72]


> evvcom ©   (26.05.05 14:21) [69]

Вот и нашелся пятый способ - процедуры, возвращающие НД.
А не тормозит ? Как легко сопровождается ? Как пишешь массовые апдейты/инсерты ?


 
Sergey13 ©   (2005-05-26 14:32) [73]

2[70] evvcom ©   (26.05.05 14:24)
2[71] ANB ©   (26.05.05 14:27)

Ушло.


 
evvcom ©   (2005-05-26 14:59) [74]


> А не тормозит ?

Зачем? Какая разница: курсор он и в африке курсор!

> Как легко сопровождается ?

Открыл в редакторе так же как и вьюху и прочее, ну и сопровождай. Или ты о чем?

> Как пишешь массовые апдейты/инсерты ?

А я их не пишу. Юзер массово записи не правит, на каждую запись по ApplyUpdates вызов ХП. Но если надо, то проблем-то никаких. А как ты их массово хочешь менять, пример?


 
ANB ©   (2005-05-26 15:01) [75]

Ну например, накопали косяк в логике, а юзер уже месяц на поломанной проге сидел и хочет это все поправить. Обычно пишем update set = правильное значение where поломанные записи.


 
ANB ©   (2005-05-26 15:03) [76]


> Зачем? Какая разница: курсор он и в африке курсор!
- для сложных запросов из большого количества немаленьких таблиц сравнение делали ? Просто на вьюхах я уже влетал. Правда по глупости, надо было новую вьюху написать, а я готовую привязал.


 
Sergey13 ©   (2005-05-26 15:04) [77]

2[71] ANB ©   (26.05.05 14:27)
>И мне ABelousov[sobaka]smartcard.ru

Вернулось с руганью. Может адрес не тот или у тебя с майл.ру не берет?


 
ANB ©   (2005-05-26 15:12) [78]

Млин, Belousov, я со старой работой перепутал. Плз, еще разок.


 
Sergey13 ©   (2005-05-26 15:15) [79]

Ушло.


 
Sergey13 ©   (2005-05-26 15:17) [80]

Заметил в книге уточнение. Это будет работать с 8.1.5 ЕЕ и выше.



Страницы: 1 2 3 вся ветка

Форум: "Базы";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.042 c
4-1115813704
Zloy
2005-05-11 16:15
2005.07.11
Форма поверх других окон


1-1118744188
klass
2005-06-14 14:16
2005.07.11
Создать сервис


3-1117694188
andrey123
2005-06-02 10:36
2005.07.11
Копирование БД


14-1117694033
stone
2005-06-02 10:33
2005.07.11
Скоро и пешеходы будут передвигаться по правилам одностороннего д


1-1118491492
WST
2005-06-11 16:04
2005.07.11
Сортировка списка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский