2015-08-18 8:14 GMT-03:00 <ngonz...@ig.com.br>:

> 1) É possivel abrir o Banco em modo read-only? Talvez passando parametros
> na string de conexao. Como?
>

Uma forma simples, é você alterar o default_transaction_read_only para o
usuário:

    ALTER ROLE seu_usuario_readonly SET default_transaction_read_only TO
'on';

> 2) Caso positivo, o acesso fica mais rápido?
>

Em algumas situações bem específicas com transações SERIALIZABLE eu sei que
existe uma melhora, fora isso não acho que terás muito ganho, especialmente
se estiver usando READ COMMITED (o padrão). Talvez alguém mais saiba de
outras situações.

Saiba também que alterar o default_transaction_read_only para o usuário não
vai te garantir segurança, pois está configuração pode ser alterada
posteriormente pelo mesmo, então você deve garantir segurança via
GRANT/REVOKE.

Quando quero criar um usuário read-only, eu costumo criar uma "role
container", alterar o ALTER DEFAULT PRIVILEGES (ADP) do(s) schema(s) e
conceder SELECT à todas tabelas do(s) schema(s). Exemplo:

    -- cria a role container (não faz login)
    CREATE ROLE meu_db_readonly NOLOGIN;
    -- altera permissão padrão para tabelas que serão criadas
    ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT ON TABLES TO meu_db_readonly;
    -- altera permissão das tabelas existentes
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO meu_db_readonly;

OBS: O ADP só vai funcionar como esperado caso seja executado (ou use FOR
ROLE) pelo mesmo usuário que será o proprietário dos objetos. E troque
"public" pelo seu esquema, caso use outro.

Em seguida, para todo usuário que for "read-only", basta adicioná-lo em
"meu_db_readonly":

    GRANT meu_db_readonly TO meu_usuario;

Atenciosamente,
-- 
Matheus de Oliveira
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a