Защита данных

Ice_one1
Дата: 02.10.2003 15:20:02
Привет всем!
Встал вопрос такого характера: Как защитить базу Постгреса?
т.е. есть база но надо дать доступ к ней только одному человеку
и что самое интересное не давать доступ для root и postgres'а под Linux.
На локальной машине особого труда зайти под рутом не составит
имея в наличии компакт с инсталяцией Linux и как результат доступ к базе.
А возможно ли вообще сделать на базу пароль для юзера и postgres'а.
Или запретить доступ к базе postgres'у вообще.
Какими вообще способами можно защитить данные?
Заранее благодарен всем!
Vel
Дата: 02.10.2003 16:09:51
Для постгреса запретить можно, но это уже х@#ня получается (извиняюсь за мой французский). Рут к базе и так не доступается. НО. файлы базы ледат в сыром виде. Без шифровки. Даже если создать базу с паролем. Так вот, имея права доступа к каталогу базы данные вытягиваются. Я раскидать их потом не сильно сложно. Во всяком случае, если не в изначальную структуру, то просто вытянуть интересующие данные. Если я не ошибаюсь, руту нельзя запретить доступ куда-бы то ни было.
Ice_one1
Дата: 03.10.2003 12:30:24
>Рут к базе и так не доступается.
как же не доступается даже очень
можно сделать su postres а потом psql basename
и у тебя есть доступ к базе
>файлы базы ледат в сыром виде. Без шифровки.
Шифрование базы сделать не так уж и сложно
>Даже если создать базу с паролем.
т.е. с пароллем? Поподробнее можно.
>Так вот, имея права доступа к каталогу базы данные вытягиваются.
После шифрования не получиться
>Если я не ошибаюсь, руту нельзя запретить доступ куда-бы то ни было.
Вот именно с этим я и борюсь, даже не зная пароль можно
загрузиться с компакта и сменить его на свой а потом есть полный доступ
Ну разве это безопасность? Это как в твоем французском :)
Vel
Дата: 03.10.2003 13:17:29
что ты собрался шифровать? Нанные должны лежать так как есть пока работает постгрес. А они лежат в сыром виде.

по поводу базы с паролем посмотри ключи к createtable

А вообще там безопастность французская (ну ты понял :)). Данные при желании я смогу выташить всегда. Структуру базы, может, не всегда получится, а сами данные вытаскивал и не раз. Так что соболезную. Ставь пароль на биос.
Shweik
Дата: 04.10.2003 19:53:35
Какой-то странный вопрос. Root всегда может ВСЕ, в пределах
своей системы или это не root.
И нифига ты ему не запретишь.
Postgres - тоже может все в пределах базы.... То что лежит в
каталоге ./usr/local/pgsql/data - все доступно ему.
А если ты не доверяешь почему-то ни тому ни другому... например
если ты хостишь базу на чужом серваке - криптуй данные на клиенте
и ложи их криптованными на сервак. Можно это делать и на серваке и это
даже правильней.... только надо помнить что рут может при сильном желании
и tcpdump поюзать так что придется возиться и с ssl.
Штатных средств для криптования самой базы в Постгресе нет небыло и похоже не будет.
Если сервак твой, и ты опасаешься что при физическом доступе (сперев например винт) кто-то заделается рутом итд..... ставь файловую систему с криптованием, я в них ни уха ни рыла да и тут вопрос вообще уходит в оффтоп полнейший. 8)
Кстати я кажется уже писал по схожему поводу что шифрование данных включая структуру баз - достоинство оччень немногих серверов и большинство
- коммерческие. Из свободных это умел кажется SAP DB а может и нет.
Leningrad
Дата: 05.10.2003 13:19:17
>криптуй данные на клиенте и ложи их криптованными на сервак.
"Вася Пупкин" -> "h23478sefgh7wh"
select * from aaaa where name like ???
Shweik
Дата: 05.10.2003 15:47:07
2All:
update customers set
fname='D4S*#d3r4t92!h@f4ewэыуs'
comment='df93-4t094hfg4bg3g39d0c40opkfsdf'
where id=@ssd3dfdff;
Что касаемо select-ов :
create view customers as
select @@fname,@@phones, @@comment,@!lastbarg
from _customers
where
@@fname ~~'%Вася%'
and phone ~~'%2124510%'
Осталось только пара замечаний:
--Структуру базы мне прятать нет надобности.
--ssl - классная штука Читайте ./pgsql/doc/ssl-tcp.html
--Пользовательские операторы тоже прикольная штука!
Leningrad
Дата: 05.10.2003 19:01:22
Приведенный пример мне непонятен, где ты хранишь КЛЮЧ?
Ты можешь как угодно шифровать данные и серверу на это наплевать, ПОКА ты используешь только "=". Что будет когда ты захочешь узнать price >1000 или сделать выборку за определенный период?
Shweik
Дата: 05.10.2003 21:11:05
Причем тут "=" ? *)
Безразлично какая операция - расшифрованные данные выдает оператор @@
Что касаемо выборок вот например
select @@cur_event from evh_tod where (@@edate >'20.09.2003'')and (@@edate <now() )
Ключ сервер получает от клиента по ssl. Как он выглядит где и сколько он хранится - это уже мое ноу-хау.
И особо подчеркну - потери производительности при такой шифровке ОЧЕНЬ БОЛЬШИЕ. Любая файловая система с криптованием даст выигрыш раза в два.
А вообще в каждом конкретном случаем приходиться изобретать свой велосипед.... А если кому-то влом - юзайте Оракл/MS SQL - там наверняка за
пару килобаксов чегото предложат. 8)
Leningrad
Дата: 06.10.2003 09:33:40
Притом, что если одна строка однозначно кодируется в другую, то серверу все равно какую из них искать, и тут можно строить индексы. А вот с @@ я не уверен, отсюда и "ОЧЕНЬ БОЛЬШИЕ" потери производительности.
НО это все не имеет ровным счетом никакого значения, потому что ключ ХРАНИТСЯ НА СЕРВЕРЕ. Это не защита!