7.4. 関数とトリガ

関数とトリガはユーザが、他のユーザが意識しないで実行できるような コードを、バックエンドサーバに挿入することを可能にします。したがって、 どちらの機能もユーザが罰せられることなくトロイの木馬 を実行することができるのです。唯一の保護は誰が関数やトリガを定義できるか (例えば、SQL フィールドでのリレーションへの書き込みなど)という管理 です。システムカタログpg_class, pg_user そして pg_groupの 記録や alerter を監理することで可能です。

SQL 以外の言語で書かれた関数は、すべてデータベースサーバデーモンプロセス のオペレーティングシステム権限で、バックエンドサーバの中で実行されます。 サーバの内部データ構造を渡された関数の内部から変更することは可能です。 したがって、その他の多数のことの中でも、そのような関数はどのような システムアクセスコントロールも回避することができます。これはユーザ定義 C 関数の固有の問題です。