Restrinja uma função no postgres para acessar alguns esquemas em um banco de dados e não liste nenhum outro banco de dados

1

Estou usando o PostgreSQL 8.3 no Ubuntu 9.04. Eu acesso meu servidor de banco de dados usando um cliente de console ou o Pgadmin III. Atualmente, preciso restringir o acesso a apenas alguns esquemas em um banco de dados e também não mostrar outros bancos de dados no servidor.

Por exemplo, meu servidor postgres atual tem os seguintes bancos de dados:

postgres-8.3-server
|-- db1
|   |-- sch_a
|   |-- sch_b
|   |-- sch_c
|   '-- sch_d
|-- db2
|   |-- sch_e
|   |-- sch_f
|   '-- sch_g
'-- db3
    '-- sch_h

Eu preciso restringir a função "joe" para acessar apenas o sch_e e o shc_g do db2, e também não mostrar os outros esquemas no mesmo banco de dados. Ao listar bancos de dados, a saída deve ser:

postgres-8.3-server
|-- db2
    |-- sch_e
    '-- sch_g

Minha solução atual restringe o acesso ao esquema e ao banco de dados, mas ainda consigo ver a lista de nomes do banco de dados. Quando tento acessar qualquer um deles (exceto o que tenho permissão) recebo uma mensagem sobre uma entrada específica não encontrada no arquivo pg_hba.conf, o que é bom, mas não é o ideal.

No momento, estou verificando o manual e pesquisando para obter mais informações.

Obrigado antecipadamente

    
por Humber 22.02.2010 / 14:53

1 resposta

1

Você não pode restringir a capacidade de ver quais bancos de dados existem. Por que isso importa, já que você pode restringir a capacidade de se conectar?

Se você preferir uma mensagem de erro diferente, poderá tentar permitir que as pessoas acessem pg_hba.conf e restringir a permissão CONNECT no próprio banco de dados (REVOKE CONNECT ON DATABASE foo FROM public; GRANT CONNECT ON DATABASE sim para somerole; ")

    
por 22.02.2010 / 15:56