20.8. Autenticação Ident #

O método de autenticação ident funciona obtendo o nome de usuário do sistema operacional a partir do servidor ident do hospedeiro do cliente, e usa-o como o nome de usuário do banco de dados (com mapeamento de nome de usuário opcional). Este método somente tem suporte em conexões TCP/IP.

Nota

Quando é especificado ident para conexão local (não-TCP/IP), será usada a autenticação peer (veja Autenticação entre pares).

As seguintes opções de configuração têm suporte no ident:

map

Permite o mapeamento entre os nomes de usuário do sistema e do banco de dados. Veja Mapas de nome de usuário para obter detalhes.

O Protocolo de Identificação está descrito no RFC 1413 [138]. Praticamente todos os sistemas operacionais do tipo Unix vêm com um servidor de identidade que escuta na porta TCP 113 por padrão. A funcionalidade básica de um servidor de identidade é responder a perguntas como Qual usuário iniciou a conexão que sai da sua porta X e se conecta à minha porta Y?. Uma vez que o PostgreSQL conhece X e Y quando a conexão física é estabelecida, ele pode interrogar o servidor de identidade no hospedeiro do cliente que está se conectando, e teoricamente pode determinar o usuário do sistema operacional para qualquer conexão.

A desvantagem desse procedimento é que depende da integridade do cliente: se a máquina cliente não for confiável, ou estiver comprometida, um invasor poderá executar praticamente qualquer programa na porta 113, e retornar qualquer nome de usuário que escolher. Este método de autenticação é, portanto, apropriado apenas para redes fechadas, onde cada máquina cliente está sob controle rígido, e onde o banco de dados e os administradores do sistema operam em contato próximo. Em outras palavras, deve-se confiar na máquina que executa o servidor de identidade. Preste atenção ao aviso:

O Protocolo de Identificação não pretende ser um protocolo de autorização ou controle de acesso.

RFC 1413

Alguns servidores de identidade têm uma opção fora do padrão que faz com que o nome de usuário retornado seja encriptado, usando uma chave que somente o administrador da máquina de origem conhece. Esta opção não deve ser usada ao usar o servidor ident com o PostgreSQL, porque o PostgreSQL não tem como desencriptar a cadeia de caracteres retornada para determinar o nome real do usuário.



[138] RFC 1413: O Protocolo de Identificação (também conhecido como ident, e também conhecido como Protocolo de Identidade) fornece um meio para determinar a identidade de um usuário de uma conexão TCP específica. Dado um par de números de porta TCP, ele retorna uma cadeia de caracteres que identifica o dono dessa conexão no sistema do servidor. (N. T.)