21.6. 함수 및 트리거 보안

함수와 트리거를 사용하면 다른 사용자가 무심코 실행할 수 있는 코드를 백엔드 서버에 삽입할 수 있다. 따라서 두 메커니즘은 "트로이목마"를 상대적으로 쉽게 침투시킬 수 있다. 유일한 보호책은 함수를 정의할 수 있는 사용자를 엄격하게 제어하는 것이다.

함수는 데이터베이스 서버 데몬의 운영 체제 권한이 있는 백엔드 서버 프로세스 내에서 실행된다. 함수에 사용된 프로그래밍 언어가 미검사 메모리 액세스를 허용하는 경우 서버의 내부 데이터 구조를 변경하는 것이 가능하다. 따라서 해당 함수는 모든 시스템 액세스 제어를 피해갈 수 있다. 해당 액세스를 허용하는 함수 언어는 "신뢰되지 않음"으로 간주되고, PostgreSQL는 수퍼유저만 해당 언어로 작성된 함수를 생성하도록 허용한다.