2013/12/11 Rafael Fialho Corrêa <[email protected]>
> Em 11 de dezembro de 2013 00:17, Matheus de Oliveira <
> [email protected]> escreveu:
>
>
>> 2013/12/10 Renato Sousa <[email protected]>
>>
>>> Boa noite amigos da lista,
>>>
>>>
>> Boa noite.
>>
>>
>>
>>> Analisei a documentação do postgres para criar um usuario com permissão
>>> de SELECT no banco.
>>> Crei o usuário através do comando:
>>>
>>> CREATE USER user1 WITH PASSWORD 'xxxxx';
>>>
>>> Após criar o usuário, conectei novamente ao BD para listar as tabelas.
>>> São mais de 40 tabelas e pelo que entendi eu devo dar permissão de select
>>> a cada uma delas utilizando a sintaxe :
>>>
>>> GRANT SELECT ON nomedatabela to user1;
>>>
>>> Minhas dúvidas são as seguintes:
>>> Devo conceder a permissão select a cada tabela mesmo ou posso fazer de
>>> uma fez a todas as tabelas ?
>>>
>>
>> Além da permissão de SELECT você deve dar permissão de USAGE no schema e
>> de CONNECT no banco de dados. Por padrão o esquema public já vem com
>> permissão de USAGE para todos, assim como os bancos já possuem de CONNECT,
>> mas é uma prática comum revogar essas permissões e passá-las somente
>> àqueles que necessitam.
>>
>> Na versão 8.4 não há jeito, você terá que fazer uma tabela por vez. Pode
>> até fazer um SELECT na pg_class para gerar esse script:
>>
>> SELECT 'GRANT SELECT ON ' ||
>> quote_ident(n.nspname)||'.'||quote_ident(r.relname)||' TO user1;'
>> FROM pg_class r JOIN pg_namespace n ON r.relnamespace = n.oid
>> WHERE r.relkind = 'r' AND n.nspname = '<nome do schema>';
>>
>> Já na versão 9.0 em diante, você pode fazer para todas as tabelas de um
>> dado esquema:
>>
>> GRANT SELECT ON ALL TABLES IN SCHEMA <nome do schema> TO user1;
>>
>> Mas, ao criar uma nova tabela, essa permissão não é repassada. Para isso
>> você pode também usar o comando ALTER DEFAULT PRIVILEGES:
>>
>> ALTER DEFAULT PRIVILEGES IN SCHEMA <nome do schema> GRANT SELECT ON
>> TABLES TO user1;
>>
>
> Colaborando com a resposta, há também a possibilidade de criação de roles
> (grupos sem a opção de login) para ter estas permissões e incluir os
> usuários desejados, assim, quando houver um novo usuário, não será
> necessário conceder todas as permissões de consulta para este novo usuário,
> bastará incluí-lo no grupo existente.
>
>
+1
Bem lembrado Rafael. Eu mesmo tenho o costume de criar um grupo (ou "role
container") para usuários somente-leitura. Costumo usar o seguinte padrão
(assumindo "meu_banco" é o nome do banco de dados e o esquema usado é
"meu_esquema"):
CREATE ROLE meu_banco_ro NOLOGIN;
\c meu_banco
ALTER DEFAULT PRIVILEGES IN SCHEMA meu_esquema GRANT SELECT ON TABLES
TO meu_banco_ro;
GRANT USAGE ON SCHEMA meu_esquema TO meu_banco_ro;
GRANT SELECT ON ALL TABLES IN SCHEMA meu_esquema TO meu_banco_ro;
Daí é só fazer o user1 herdar meu_banco_ro:
GRANT meu_banco_ro TO user1;
[]'s
>
>
>>
>>
>>
>>> Com a permissão SELECT o usuário é capaz de utilizar algum programa
>>> interativo para elaborar frases SQL no BD ?
>>>
>>
>> Não entendi muito bem o que quis dizer. Mas se esse "programa interativo"
>> gerar somente consultas (SELECTs), a resposta é sim.
>>
>>
>>
>>> É preciso alterar o arquivo pg_hba.conf para esse tipo de acesso ?
>>>
>>>
>> Bem, o pg_hba.conf tem que liberar para que o usuário seja capaz de
>> conectar-se ao banco. Não tem nada relacionado a quais permissões ele terá.
>>
>>
>>> PS: a versão do postgresql é 8.4
>>>
>>>
>> Atualize assim que puder e seja beeeeemmm mais feliz... =D
>>
>>
>>
>>> Abraços e muito obrigado,
>>>
>>>
>> Abraços.
>>
>> Atenciosamente,
>> --
>> Matheus de Oliveira
>> Analista de Banco de Dados
>> Dextra Sistemas - MPS.Br nível F!
>> www.dextra.com.br/postgres
>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
Atenciosamente,
--
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral