他のバージョンの文書9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

7.4. 関数とトリガ

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

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