Search
Write a publication
Pull to refresh

Comments 11

Проверить установку можно, подключившись к необходимой базе данных с помощью клиента psql, после чего выполнить команду:

Не всегда есть под рукой psql. Почти то же самое можно получить и на чистом SQL. Что-то вроде

SELECT pg_extension.extname, 
       pg_authid.rolname AS extowner,
       pg_extension.extrelocatable,
       pg_namespace.nspname AS extnamespace,
       pg_extension.extversion
FROM pg_extension
JOIN pg_authid ON pg_extension.extowner = pg_authid.oid
JOIN pg_namespace ON pg_extension.extnamespace = pg_namespace.oid;

Описание в принципе тоже где-то валяется, но искать лень...

Осталось понять как индексировать зашифрованные данные... И каким образом хранится индекс по ним.... :-)

Вряд ли документация откровенно врёт. А коли так, то значение в индексе не может лежать в открытой форме, и остаётся два варианта - либо в индексе лежит шифрованное значение (и тогда он нафиг не нужен), либо такие поля вообще не индексируются. Если есть локальный постгресс, то проверить это - вопрос пары минут.

А смысл в проверке тогда? :-)

Ну одно дело предполагать, другое знать...

В любом случае с таким "подходом" или безопасности нет, или индексов... А финансовое приложение без этих двух компонентов БД - неполноценно....

Стараться проектировать так, чтобы не нужен был поиск по зашифрованным данным :)

А если все-таки нужен, то рассмотреть возможность:
- выделять какой-то кусок этих данных, минимально необходимый для поиска, в незашифрованном виде, и хранить в отдельной колонке
- если минимально необходимый кусок данных для поиска всё-таки обязан быть зашифрованным, возможно его можно смапить во что-то промежуточное, что уже можно будет проиндексировать и не шифровать

С pgcrypto напрямую невозможно индексировать данные. Есть конечно не слишком удобные решения, по типу детерминированного шифрования или хранения даннных в открытом виде, но это все неэффективно. Лучше тогда уж индексировать хэш зашифрованных значений, и то это не панацея.

Ну так я в курсе вообще то.... :-)

никак такая система не будет производительной про работу поиска типа лайк мы тоже забываем поиск по триграммам тоже забываем

1) "pgcrypto — доверенное расширение для PostgreSQL"

https://www.postgresql.org/docs/current/pgcrypto.html

"This module is considered “trusted”, that is, it can be installed by non-superusers who have CREATE privilege on the current database."

Ну то есть поэтому делаем:

«Шаг 2. Отзываем все права у роли PUBLIC. Теперь ни один пользователь по умолчанию не сможет вызывать функции pgcrypto."

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

2) Два раза подряд идёт в тексте команда

REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA crypto FROM PUBLIC;

3) «Можно создать специальные роли для приложений"

Зачем, если создаётся отдельная схема, используемая для безопасности?

4) «В отличие от симметричного шифрования"

PGP застратнее по ресурсам ЦПУ по сравнению, если говорить о минусах.

5) "gen_random_bytes(count) выдает криптографически стойкую последовательность "

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

Sign up to leave a comment.