Ir para conteúdo
Fórum Script Brasil
  • 0

Atribuir apropriadamente cargos/papéis (roles)


rai7799

Pergunta

Olá scriptbrasil.

Venho aqui na esperança de encontrar ajuda em mais um local, estou a tempos rodando por comunidades internacionais e nada. Há algum tempo atrás eu comecei a trabalhar com o PostgreSQL 9.5.3, e venho encontrando dificuldades em relação a um problema relativo a privilégios (acredito). Estou montando um sistema simples para testes e aprendizado, um e-commerce simples. Este sistema está para ser desenvolvido em Java (eu ainda estou montando o banco de dados). Bem, sem mais papo-furado...

Inicialmente eu resolvi definir no sistema 3 tipos de usuários (todos são contas de usuário com LOGIN):

  • dbadiretor: Este cargo/papel (role) tem a função de agir como super usuário no banco de dados.
  • dbagerente: Este cargo tem permissões CRUD relativas aos objetos presentes no banco de dados, não em relação a registros. Ou seja, este cargo pode criar, modificar, alterar, e/ou apagar objetos do banco de dados, tal como tabelas, funções, triggers, e etc.
  • clisistema:Esta cargo representa uma conexão para a aplicação cliente, o sistema que se conectará e utilizará o banco de dados. Este papel/cargo pode realizar operações CRUD nos registros das tabelas, mas não operações CRUD nos objetos do banco de dados. Em resumo, este cargo pode pesquisar registros, mas não pode alterar as estruturas do banco de dados. Além disso, para algumas tabelas maiores limitações (filtros) são adicionados, impedindo que este cargo realize todas as operações CRUD, mas sim, só algumas.

Eu não sou DBA (apesar de modelador de dados com DER), sou desenvolvedor Java, e não sei se separar e organizar estes tipos de cargos é aplicável e/ou recomendado. Mas enfim... Como sou novo no assunto, resolvi criar e organizar arquivos de passos lógicos para a criação e preparação do banco de dados. Cada arquivo representa uma etapa na preparação do banco de dados.

No meio da execução destes arquivos, ao distribuir privilégios para os cargos (contas, no caso) criados, eu me deparei com um erro o qual eu não estou conseguindo resolver de forma alguma. Estou realmente perdendo o juízo com isso (estou utilizando o pgAdmin 3):

ERROR:  permission denied for relation tb_tabelas
CONTEXT:  SQL statement "SELECT 1 FROM ONLY "regrast"."tb_tabelas" x WHERE "tba_id" OPERATOR(pg_catalog.=) $1 FOR KEY SHARE OF x"
********** Error **********

ERROR: permission denied for relation tb_tabelas
SQL state: 42501

Mesmo utilizando o super usuário postgresql ou o super usuário criado dbadiretor eu me deparo com este erro. Eu não estou realizando esta declaração SQL, pelo menos, talvez, não diretamente. Como super usuário, acredito ter permissão para realizar tal operação, mas parando para olhar, acho que o erro diz que a permissão não é dada devido a uma relação existente pela tabela tb_tabelas. Contudo, mesmo assim, não vejo o que há de errado se paro para observar o código SQL.

Para que vocês vejam completamente e com precisão o que eu estou fazendo (de errado) do começo ao fim, e possam ao mesmo tempo observar o meu código, eu gravei um vídeo da tela de meu computador com duração de 4 minutos, aproximadamente. Por favor, se você, leitor, não se incomodar, dê uma olhada:

http://sendvid.com/30c2s87s

Observe que no vídeo eu encontro-me criando e preparando um banco de dados do começo ao fim. Tudo o que eu faço é executar arquivos com instruções SQL, como já dito. Tenho desconfianças no momento que as instruções "REVOKE ..." são feitas, pois quando comento-as, tudo parece funcionar adequadamente, no sentido que, eu posso inserir novos registros nas tabelas.

Caso qualquer informação adicional seja necessária para melhor compreensão, ficarei feliz em coloca-la a disposição aqui. Basta pedir. De outra forma, se o vídeo não for aceitável por qualquer motivo que seja, eu posso removê-lo e adicionar o resto das informações necessárias aqui.

Agradeço de antemão pela atenção, pela disponibilidade, e pelo conhecimento doado. Qualquer dica, crítica, sugestão, melhoria, suspeita em relação ao código são bem vindas.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...