2009/4/23 Leandro Cavalari Soares <[email protected]>:
> Bom Dia Comunidade!
>
> Estou estudando a respeito de Roles no Postgres e cheguei à seguinte
> situação:
>
>    Preciso de um usuário com permissões restritas - seleção de dados e
> execução de algumas funções que alteram os dados. Pra isso, concedi as
> segunites permissões:
>
>  * GRANT USAGE ON SCHEMA esquema TO usuario;
>  * GRANT SELECT ON TABLE esquema.tabela TO usuario;
>  * GRANT EXECUTE ON FUNCTION esquema.funcao(integer, integer) TO usuario;
>
>    Ao executar a função acima, o erro (ERROR:  permission denied for
> relation tabela) é emitido, pois o usuário só tem permissão de seleção dos
> dados.
>
>    Como posso permitir a alteração dos dados somente via execução de função,
> impedindo que um UPDADE seja executado manualmente?
>


Creio que você deseja que a função seja executada com outras permissões.
O default na criação de funções é SECURITY INVOKER, isto é, leva em
conta as permissões do usuário que está executando a função. Creio que
o que você deseja é SECURITY DEFINER para, na execução, considerar as
permissões de quem criou a função.
http://www.postgresql.org/docs/current/interactive/sql-createfunction.html

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a