PostgreSQL: Permissão para executar a função (que se insere em uma tabela) mas sem permissão para inserir diretamente

2

Desculpe se este é o lugar errado para fazer esta pergunta.

Eu criei uma função que insere valores em muitas tabelas e quero que o front-end da web execute essa função. Eu concedi permissão de execução para a função de login do front-end da web, mas eu não quero que o código front-end da web seja capaz de inserir valores diretamente nas tabelas, eu quero que o front-end da web use apenas a função que eu criaram para este fim.

Se eu conceder permissão de execução para a função de login do front-end da web, mas não conceder permissões de inserção nas tabelas inseridas na função, ocorrerá um erro de acesso.

Como posso fazer isso?

    
por dreamlax 21.09.2009 / 03:37

1 resposta

6

Você precisa ter outra função, que tenha privilégios para gravar diretamente nas tabelas. Em seguida, você cria a função usando essa outra função e adiciona à definição de função cláusula "DEFINER DE SEGURANÇA". E então você concede executar essa função para sua função na Web.

Você pode ler mais sobre isso na documentação .

Você também pode querer verificar postagem no blog que uma vez escrevi sobre proteger banco de dados.

    
por 21.09.2009 / 06:35