Какие функции вызываются при работе с базой данных Postgres - PullRequest
0 голосов
/ 14 марта 2020

Мне нужно реализовать прозрачное шифрование в Postgres (TDE). Для этого я обнаружил, какие функции вызываются при срабатывании INSERT и SELECT. Используется LLVM-LLDB при SELECT.

Я пытаюсь сделать то же самое с INSERT - не работает

базовый процесс останавливается и не позволяет вставку. Я сделал все об одной инструкции https://eax.me/lldb/.

Что может быть не так? как узнать, какие функции вызываются при вставке (в случае SELECT это secure_read, et c.)? И, если кто-нибудь знает, как изменить код функции в исходном коде?

Во-первых, клиент и сервер расположены на одном компьютере, один и тот же пользователь добавляет данные и читает их

К сожалению, я не хватает репутации, чтобы добавить скриншоты.

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Операторы SQL являются неправильным уровнем для начала отладки. Вы должны посмотреть на код, где блоки читаются и пишутся. Это было бы в src/backend/storage/smgr. Посмотрите на функции mdread и mdwrite в md.c. Вероятно, именно здесь вы начнете взламывать.

PostgreSQL v12 представил «подключаемое хранилище», так что вы можете написать свой собственный менеджер хранилища. См. документацию . Если вы не хотите исправлять PostgreSQL, но у вас есть расширение, которое будет работать со стандартным PostgreSQL, это будет направление, в котором вы должны двигаться.

До сих пор я покрывал только хранилище блоков, но вы не должен забывать WAL. Шифрование, которое потребует взлома PostgreSQL.

0 голосов
/ 14 марта 2020

Это сложный вопрос, который вы должны опубликовать в PostgreSQL списке рассылки хакеров https://www.postgresql.org/list/pgsql-hackers/.

Вы можете начать с установки точки останова GDB в Executor_Start в execMain . c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...