Защита функции и хранимой процедуры на postgres - PullRequest
0 голосов
/ 21 февраля 2020

Мы разработали хранимые процедуры и функции в базе данных Postgres, которая выполняет процесс ETL. Это развернуто в клиентской системе, поэтому мы должны защитить наш код, который был неправильно использован / изменен клиентским местом.

Есть ли способ защиты от просмотра созданной хранимой процедуры / функции. На данный момент мы предоставили выделенную учетную запись пользователя, которая не имеет доступа к функции и имеет доступ только к таблицам. Поскольку база данных находится на месте клиента, они смогут получить доступ к системе с учетной записью администратора и получить доступ к функции и хранимой процедуре.

Мы хотели бы установить пароль / Зашифровать процедуру для модификации. Но должен иметь разрешение на выполнение без пароля для процедуры и функции.

Мы используем postgres 11 для нашей разработки.

1 Ответ

0 голосов
/ 21 февраля 2020

Вы можете достичь этого следующим образом.

1) Сохраните учетные данные суперпользователя при себе и аннулируйте все права доступа, связанные с вашей схемой.

REVOKE ALL ON schema public FROM public;

Редактировать: после вышеуказанной команды Только суперпользователь может создавать новые объекты внутри схемы publi c, что нецелесообразно. Предполагая, что не-суперпользователю foo_user должна быть предоставлена ​​эта привилегия, это должно быть сделано с помощью:

GRANT ALL ON schema public TO foo_user;

Чтобы узнать, что означает ВСЕ для схемы, мы должны обратиться к GRANT в do c. Похоже, что для схемы это означает CREATE и USAGE.

Таким образом, решение вашей проблемы - это создание другого типа PostgreSQL пользователей БД с разными разрешениями.

Таким же образом создается один PostgreSQL пользователь для клиента дает эту информацию.

Надеюсь, что это решит вашу проблему.

...