sexta-feira, 11 de maio de 2007

Configurando o Acesso ao Banco - O Arquivo pg_hba

O arquivo pg_hba armazena a lista de endereços IP que possuem permissão de acesso ao s bancos de dados armazenados no PostgreSQL e ainda informações sobre que bancos de dados e usuários podem fazer acesso aos mesmos.

ao se estringir os endereços IP autorizados a conectar com o servidor, consegue-se um grande ganho de segurança. A configuração do arquivo é bastante fácio de utilizar.

No windows, se encontra no caminho:
- C:\Program Files\PostgreSQL\8.*\data\pg_hba.conf

No Linux, pode ser visto na pasta:
- /etc/postgresql/pg_hba.conf

Basicamente, o pg_hba é um arquivo texto que possui em cada linha um registro de dados de autorização com os seguintes campos:
- Tipo de conexão
- Banco de Dados Permitido
- Usuário autorizado a acesso ao banco
- Endereço de conexão
- Método de autenticação
- Opção - Opções. Campo opcional dependendo do valor do campo Método de Autenticação.

- Tipo de conexão - Pode ser local, host, hostssl, hostnossl. Local - conexão Unix via socket, Host - conexão TCP/ IP criptogrsfada ou não (com ou sem SSL), Hostssl - conexão TCP/ IP sem criptografia.

- Banco de Dados Permitido - Nome do banco ou termo "all", "sameuser", "samerole", um nome de banco de dados ou uma lista de bancos de dados separada por vírgula.

- Usuário autorizado a acesso ao banco - Pode ser "all", um nome de usuário, um nome de grupo com o prefixo "+", ou uma lista separada por vírgula.

Para os campos Banco de Dados e Usuário, pode ser utilizado um nome de arquivo com prefixo "@", o qual será lido para o prrenchimento dos dados. Desta forma, é possível se alterar bancos e usuários sem liberar o acesso ao pg_hba.

- Endereço de conexão - Também chamado de CIDR-ADDRESS, é um campo opcional para conexão tipo local, sendo obrigatíorio nos demais. Corresponde a um endereço IP e uma máscara CIDR que é um inteiro entre 0 e 32 (IPv4) ou 128 (IPv6) que especifica o número de bits significativos da máscara.

Ex: 192.168.12.10/32

- Método de autenticação - Indica se a autenticação terá um nível maior ou menor de segurança. Pode ser: trust (sem verificação de password ou qualquer restrição), reject (rejeita conexões dos usuários citados com os bancos que constam na lista), md5 (requer senha criptografada para conexões), crypt (requer senha criptografada para conexões. Indicada para suceder o md5, nas versões acima da 7.2 do PostgreSQL),
password (demanda senha não criptografada para conexão), krb5 (utiliza Kerberos V5 para autenticar os usuários), ident (utiliza para a autenticação o login de sistema do usuário para conexões locais), pam (autenticação usando Pluggable Authentication Modules (PAM) do sistema operacional) .

Abaixo, alguns exemplos da internet:

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# se for a minha própria máquina, não precisa autenticar...
host all all 10.15.21.244 trust

# deixar todos da rede 10.* se conectarem sem senha (perigo!)
#host all all 10.0.0.0 255.0.0.0 trust

# todos da rede 10.* com autenticação MD5
#host all all 10.0.0.0/8 md5

# o mesmo que acima, só que na rede 10.15.*
host all all 10.15.0.0/16 md5

# localmente, permitir tudo a todos sem exigir senha
local all all trust

Obs.: As alterações na configuração só são ser efetivadas ao se fazer o reload do pg_hba ou o restart do banco de dados.

Um comentário:

Anônimo disse...

Excelente Artigo!
Uma linguagem simples e objetiva.