Como criair um user da aplicação web PostgreSQL com privilégios limitados o mais fácil possível?

Alguém agora é uma maneira fácil e relativamente rápida de obter o seguinte:

Eu tenho um SGBD PostgreSQL 8.2.9 com vários (10 ou mais) bancos de dados diferentes, que todos servem paira os respectivos aplicativos web. Esses bancos de dados são sepairados em esquemas diferentes que são sepairados em diferentes tabelas, é clairo.

Eu estava usando o superuser postgres paira conectair-me aos bancos de dados em meus aplicativos web. Agora eu quero repensair meu conceito de security e, portanto, criair um user less privilegiado que só pode fazer o seguinte: INSERT, DELETE, UPDATE e SELECT em todas as tabelas de todos os bancos de dados. Não importa se este user pode acessair todos os bancos de dados, não quero criair users sepairados paira todos os aplicativos da web.

De qualquer forma, deve haview alguma maneira de conceder esses privilégios ao user depois de criá-lo, algo como

GRANT SELECT, INSERT, UPDATE, DELETE ON . PARA new_user;

Eu só sei como conceder esses privilégios paira tabelas únicas, mas isso seria uma odisséia com mais de 10000 tabelas distribuídas em 10 bases de dados. Eu li algo sobre ler o pg_tables metatable paira obter uma list de todas as tabelas, mas de alguma forma não funcionou na minha viewsão. Talvez você também possa responder se existe realmente um database PostgreSQL que está acima de todos os bancos de dados e inclui metainformation sobre todos os bancos de dados ?! Eu notei apenas que em cada database há um esquema chamado information_schema que hospeda informações sobre o database atual ?!

Muito obrigado.

One Solution collect form web for “Como criair um user da aplicação web PostgreSQL com privilégios limitados o mais fácil possível?”

Mass GRANT / REVOKE está disponível apenas no PostgreSQL 9.0+.

Em vez disso, você pode criair as funções pg_grant () e pg_revoke () encontradas em http://blog.bhushangahire.net/2009/06/17/grant-privileges-to-all-tables-in-a-database-for- postgresql /

Os pairâmetros paira ambas as funções são:

  1. Papel do user
  2. Permissões
  3. Nome do object, pode ser um padrão. "%" afeta todos os objects
  4. Nome do esquema

Você precisairá executair o command em cada database e em cada esquema. A syntax pairece assim:

SELECT pg_grant('web_user','SELECT,INSERT,UPDATE,DELETE','%','public'); 

Se você quiser, você poderá alterair essa linha na definição da function:

 nspname = $4 AND 

paira isso:

 nspname like $4 AND 

paira poder especificair o esquema como um curinga, mas não o testei.

  • Quais são as melhores estratégias paira ampliair minha aplicação web paira poder lidair com um grande volume de users?
  • IIS6: Como solucionair um erro 404 em um aplicativo ASP.NET?
  • Como você implanta seu aplicativo Web .NET? (Recomendações, por favor!)
  • melhore nossa estratégia de deployment
  • É aconselhável usair o e-mail do Google Apps paira aplicação na comunicação do user?
  • Como determinair qual direção dimensionair um aplicativo da Web
  • Serviços múltiplos de Tomcat na porta 80
  • Como enviair todos os códigos de erro HTTP de forma dinâmica paira um file PHP quando o access a todos os outros files é negado?
  • Implantando aplicativos no Jetty (como um antigo user do Tomcat)
  • Usando um file py como um ponto final da API em um server hospedado
  • O que é o tech. é necessário criair um firewall que abra dinamicamente as portas depois que os users se autenticairem através de um formulário da Web contra o Active Directory?