Eu tenho um procedimento armazenado PL/PgSQL que executa várias operações em tabelas ( SELECT, UPDATE, INSERT, TRUNCATE
).
Quero que os usuários possam executar o procedimento armazenado, mas não executem essas mesmas operações nas tabelas.
Isso é possível?
Sim, isso é possível. Crie a função com o usuário possuindo todas essas tabelas e use o
SECURITY DEFINER
modificador.Veja também o exemplo no manual:
http://www.postgresql.org/docs/current/static/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY