Функции и правила

Функции и правила позволяют пользователям вставлять код в сервер, который могут выполнять другие пользователи не зная об этом. Следовательно, оба механизма дают пользователям троянского коня, с относительной безнаказанностью создателей. Существует только одна реальная защита - это аккуратный контроль над тем кто определяет функции (например, записывать в отношения с полями SQL) и правила. Проверять следы и изменения в pg_class, pg_user and pg_group также рекомендуется.

Функции

Функции пишутся на любом языке, кроме SQL, работают внутри процесса сервера, с правами пользователя postgres (сервер работает с своим реальным и эффективным user-id установленным в postgres. Это даёт возможность пользователям изменять внутренние структуры данных сервера изнутри доверенных функций. Следовательно, помимо прочих вещей, такие функции могут обмануть любую систему контроля доступа. Это врождённая проблема определяемых пользователем функций на C.

Правила

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

Предостережения

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

Имена пользователей, групп и идентификаторы связанных систем (например, содержащиеся в pg_user.usesysid) предполагается сделать уникальными в всей базы данных. Могут случаться непредсказуемые результаты, если этого нет.