GRANT / REVOKE em funções

1

Estou usando o has_function_privilege para verificar se determinado usuário pode acessar uma função no meu banco de dados. No entanto, se eu usar REVOKE para revogar o acesso, has_function_privilege ainda retornará verdadeiro:

db=> revoke execute on function getid(text,text)  from user1;
REVOKE
db=> select has_function_privilege('user1', 'getid(text, text)', 'execute');
 has_function_privilege 
------------------------
 t
(1 row)

Estou usando o PostgreSQL 9.2.3 no Windows 7.

    
por Bart Friederichs 22.02.2013 / 13:30

1 resposta

2

Isto é provavelmente porque public tem privilégio de execução em sua função (é o padrão).

Tente isto:

revoke execute on function getid(text,text)  from public;

e verifique novamente o resultado de has_function_privilege .

Para public não obter esse privilégio em funções recém-criadas, você pode alterar o padrão com:

ALTER default privileges revoke execute on functions from public;
    
por 24.02.2013 / 20:19