Olá pessoal!
Tem uma situação onde determinados usuários deverão gravar dados usando 
determinada functions, enquanto outros deve usar outra function, mas estou 
tendo dificuldade no uso de security e execute.. vamos aos exemplos:
CREATE TABLE tab_teste (inteiro int); 
ALTER TABLE tab_teste OWNER TO POSTGRES;

-- CENARIO 1 ----------------------------------------------CREATE FUNCTION 
func_teste_gravar_fulano (inteiro int) RETURNS VOID AS$$  DECLARE BEGIN INSERT 
INTO tab_teste VALUES (inteiro); END;$$LANGUAGE PLPGSQL SECURITY INVOKER; ALTER 
FUNCTION func_teste_gravar_fulano (inteiro int) OWNER TO POSTGRES;
CREATE FUNCTION func_teste_gravar_cicrano (inteiro int) RETURNS VOID AS$$  
DECLARE BEGIN INSERT INTO tab_teste VALUES (inteiro); END;$$LANGUAGE PLPGSQL 
SECURITY INVOKER; ALTER FUNCTION func_teste_gravar_cicrano (inteiro int) OWNER 
TO POSTGRES;
-- SE O USUARIO fulano (nao super) EXECUTASELECT func_teste_gravar_fulano(1);
ERROR:  permission denied for relation tab_teste

-- SE O USUARIO fulano (nao super) EXECUTASELECT func_teste_gravar_cicrano(1);
ERROR:  permission denied for relation tab_teste
-- CENARIO 2 ----------------------------------------------------------GRANT 
EXECUTE ON FUNCTION func_teste_gravar_fulano (inteiro int) TO "fulano";
-- SE O USUARIO fulano (nao super) EXECUTASELECT func_teste_gravar_fulano(1);
ERROR:  permission denied for relation tab_teste
-- CENARIO 3 -----------------------------------------------------------CREATE 
FUNCTION func_teste_gravar_cicrano (inteiro int) RETURNS VOID AS$$  DECLARE 
BEGIN INSERT INTO tab_teste VALUES (inteiro); END;$$LANGUAGE PLPGSQL SECURITY 
DEFINER; ALTER FUNCTION func_teste_gravar_cicrano (inteiro int) OWNER TO 
POSTGRES;
-- SE O USUARIO fulano (nao super) EXECUTASELECT 
func_teste_gravar_fulano(1);SUCESSO - mas não é pra ele conseguir pq ele 
deveria usar a outra
--------------------------------------------------------------------Resumindo, 
eu não posso conceder permissão na tabela, e cada usuário pode usar apenas a 
"sua" function, tem jeito?Estou usando 9.1
PS: Claro que os objetos aqui representados são somente para teste, na 
realidade a complexidade dos objetos é muito maior.
Agradeço,


_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to