listen_addresses (string)
#
Especifica o(s) endereço(s) TCP/IP no(s) qual(is) o servidor
deve escutar conexões de aplicações cliente.
O valor assume a forma de uma lista separada por vírgulas
de nomes de hospedeiros, e/ou endereços IP numéricos.
A entrada especial * corresponde a todas
as interfaces IP disponíveis.
A entrada 0.0.0.0 permite escutar todos os
endereços IPv4, e ::0 permite escutar todos
os endereços IPv6.
Se a lista estiver vazia, o servidor não escutará nenhuma
interface IP; neste caso, poderão ser usados apenas
soquetes de domínio Unix para se conectar ao servidor.
Se a lista não estiver vazia, o servidor irá iniciar se
conseguir escutar em pelo menos um endereço TCP/IP.
Será emitido um aviso para qualquer endereço TCP/IP que não
puder ser aberto.
O padrão é localhost,
que permite apenas a realização de conexões TCP/IP locais de
loopback.
Enquanto a Autenticação de cliente permite um
controle preciso sobre quem pode acessar o servidor,
listen_addresses controla quais interfaces
aceitam tentativas de conexão, o que pode ajudar a prevenir
solicitações de conexão maliciosas repetidas em interfaces
de rede inseguras.
Este parâmetro só pode ser definido na ativação do servidor.
port (integer)
#A porta TCP na qual o servidor escuta; 5432 por padrão. Note-se que é usado o mesmo número de porta para todos os endereços IP nos quais o servidor escuta. Este parâmetro só pode ser definido na ativação do servidor.
max_connections (integer)
#Determina o número máximo de conexões concorrentes com o servidor de banco de dados. Normalmente o padrão é 100 conexões, mas poderá ser menos, se as configurações do núcleo não permitirem (conforme determinado durante o initdb). Este parâmetro só pode ser definido na ativação do servidor.
O PostgreSQL dimensiona determinados
recursos com base diretamente no valor de
max_connections.
Aumentar o seu valor leva a uma maior alocação desses recursos,
incluindo a memória compartilhada.
Ao executar um servidor em-espera (standby), deve-se definir este parâmetro com o mesmo valor, ou um valor superior ao do servidor primário. Caso contrário, não serão permitidas consultas no servidor em-espera.
reserved_connections (integer)
#
Determina o número de “encaixes”
(slots) de conexão reservados
para conexões de funções de banco de dados
(roles) com privilégios da
função de banco de dados
pg_use_reserved_connections.
Sempre que o número de encaixes de conexão livres for maior que
superuser_reserved_connections mas menor
ou igual à soma de superuser_reserved_connections
mais reserved_connections, novas conexões
serão aceitas somente para superusuários e funções de banco de
dados com privilégios de
pg_use_reserved_connections.
Se superuser_reserved_connections ou menos
encaixes de conexão estiverem disponíveis, novas conexões serão
aceitas apenas para superusuários.
O padrão é zero conexões.
O valor deve ser menor que max_connections
menos superuser_reserved_connections.
Este parâmetro só pode ser definido na ativação do servidor.
superuser_reserved_connections
(integer)
#
Determina o número de “encaixes” de conexão
reservados para conexões por superusuários pelo
PostgreSQL.
No máximo max_connections conexões podem
estar ativas simultaneamente.
Sempre que o número de conexões concorrentes ativas atingir
max_connections menos
superuser_reserved_connections,
serão aceitas novas conexões apenas para superusuários.
Os encaixes de conexão reservados por este parâmetro destinam-se
a servir como reserva final para uso emergencial, após o
esgotamento dos encaixes reservados por
reserved_connections
O padrão é 3 conexões.
O valor deve ser menor que max_connections
menos reserved_connections.
Este parâmetro só pode ser definido na ativação do servidor.
unix_socket_directories (string)
#Especifica o diretório do(s) soquete(s) de domínio Unix onde o servidor deve escutar conexões de aplicações cliente. Podem ser criados vários soquetes listando vários diretórios separados por vírgulas. O espaço em branco entre as entradas é ignorado; o nome do diretório deverá ser colocado entre aspas, se for necessário incluir espaços em branco ou vírgulas no nome. O valor vazio especifica não escutar em nenhum soquete de domínio Unix; neste caso, poderão ser usados apenas soquetes TCP/IP para conectar ao servidor.
Um valor que começa com @ especifica que deve
ser criado um espaço de nomes de soquete de domínio
Unix abstrato
[119]
[120]
(no momento com suporte no
Linux e no
Windows).
Neste caso, este valor não especifica um “diretório”,
mas um prefixo a partir do qual o nome real do soquete é calculado
da mesma maneira que para o espaço de nomes do sistema de arquivos.
Embora o prefixo do nome de soquete abstrato possa ser escolhido
livremente, já que não é um local do sistema de arquivos,
a convenção é usar valores semelhantes ao do sistema de arquivos,
como @/tmp.
O padrão é normalmente /tmp, mas isto
pode ser alterado no momento da construção.
No Windows, o padrão é
vazio, significando que, por padrão, nenhum soquete de domínio
Unix é criado.
Este parâmetro só pode ser definido na ativação do servidor.
Além do próprio arquivo oculto de soquete, que tem o nome
.s.PGSQL.,
onde nnnnnnnn é o número da porta do
servidor, será criado um arquivo oculto comum chamado
.s.PGSQL.
em cada um dos diretórios nnnn.lockunix_socket_directories.
Nenhum desses arquivos deve ser removido manualmente.
Para os soquetes no espaço de nomes abstrato, não é criado
nenhum arquivo de bloqueio.
unix_socket_group (string)
#
Define o grupo dono do(s) soquete(s) de domínio
Unix.
(O usuário dono dos soquetes é sempre o usuário que inicia
o servidor.)
Em combinação com o parâmetro
unix_socket_permissions, pode ser usado como
mecanismo de controle de acesso adicional para conexões de
domínio Unix.
Por padrão, esta é a cadeia de caracteres vazia, que usa o
grupo padrão do usuário do servidor.
Este parâmetro só pode ser definido na ativação do servidor.
Não há suporte para este parâmetro no Windows. Qualquer configuração será ignorada. Além disso, os soquetes no espaço de nomes abstrato não têm dono de arquivo, portanto, esta configuração também é ignorada neste caso.
unix_socket_permissions (integer)
#
Define as permissões de acesso do(s) soquete(s) de domínio
Unix.
Os soquetes de domínio Unix
usam o conjunto usual de permissões do sistema de arquivos do
Unix.
Espera-se que o valor do parâmetro seja um modo numérico
especificado no formato aceito pelas chamadas de sistema
chmod e umask.
(Para usar o formato octal habitual, o número deve começar com
um 0 (zero).)
As permissões padrão são 0777, significando
que qualquer pessoa pode se conectar.
Alternativas razoáveis são 0770
(somente o usuário e o grupo, veja também
unix_socket_group), e 0700
(somente o usuário).
(Note-se que, para um soquete de domínio
Unix, apenas a permissão
de escrita é importante, portanto, não há sentido em definir ou
revogar as permissões de leitura, ou de execução.)
Este mecanismo de controle de acesso é independente do descrito em Autenticação de cliente.
Este parâmetro só pode ser definido na ativação do servidor.
Este parâmetro é irrelevante em sistemas que ignoram completamente
as permissões de soquete, especialmente o
Solaris a partir do
Solaris 10.
Nesses sistemas pode-se obter um efeito semelhante apontando
unix_socket_directories para um diretório
com permissão de acesso limitada ao público desejado.
Os soquetes no espaço de nomes abstrato não têm permissões de arquivo, portanto, esta configuração também é ignorada neste caso.
bonjour (boolean)
#
Ativa anunciar a existência do servidor via
Bonjour.
O padrão é inativo (off).
Este parâmetro só pode ser definido na ativação do servidor.
bonjour_name (string)
#
Especifica o nome do serviço Bonjour.
Será usado o nome do computador se este parâmetro for definido
como a cadeia de caracteres vazia ''
(o padrão).
Este parâmetro será ignorado se o servidor não foi construído
com suporte ao Bonjour.
Este parâmetro só pode ser definido na ativação do servidor.
tcp_keepalives_idle (integer)
#
Especifica a quantidade de tempo sem atividade de rede após
a qual o sistema operacional deve enviar uma mensagem TCP
keepalive para o cliente.
Se o valor for especificado sem unidade, será considerado
sendo segundos.
O valor 0 (o padrão) seleciona o padrão do sistema operacional.
No Windows, definir
como 0 definirá este parâmetro como 2 horas, porque o
Windows não oferece
uma maneira de ler o valor padrão do sistema.
Este parâmetro tem suporte apenas em sistemas que dão suporte a
TCP_KEEPIDLE, ou uma opção de soquete
equivalente, e no Windows;
em outros sistemas, deve ser zero.
Nas sessões conectadas por meio de soquete de domínio
Unix este parâmetro
é ignorado, e sempre lido como zero.
tcp_keepalives_interval (integer)
#
Especifica a quantidade de tempo após a qual uma mensagem de
manutenção de atividade TCP, que não foi confirmada pelo cliente,
deve ser retransmitida.
Se o valor for especificado sem unidade, será considerado
sendo segundos.
O valor 0 (o padrão) seleciona o padrão do sistema operacional.
No Windows, definir
como 0 definirá este parâmetro como 1 segundo, porque o
Windows não oferece
uma maneira de ler o valor padrão do sistema.
Este parâmetro tem suporte apenas em sistemas que dão suporte a
TCP_KEEPIDLE, ou uma opção de soquete
equivalente, e no Windows;
em outros sistemas, deve ser zero.
Nas sessões conectadas por meio de soquete de domínio
Unix, este parâmetro
é ignorado, e sempre lido como zero.
tcp_keepalives_count (integer)
#
Especifica o número de mensagens TCP
keepalive que podem ser perdidas,
antes que a conexão do servidor com o cliente seja considerada
inativa.
O valor 0 (o padrão) seleciona o valor padrão do sistema
operacional.
Este parâmetro só tem suporte em sistemas que dão suporte a
TCP_KEEPCNT, ou uma opção de soquete equivalente
(que não inclui o Windows);
nos outros sistemas, deve ser zero.
Em sessões conectadas por meio de soquete de domínio
Unix, este parâmetro
é ignorado e sempre lido como zero.
tcp_user_timeout (integer)
#
Especifica a quantidade de tempo que os dados transmitidos podem
permanecer não confirmados, antes que a conexão TCP seja fechada
à força.
Se o valor for especificado sem unidade, será considerado
sendo milissegundos.
O valor 0 (o padrão) seleciona o valor padrão do sistema
operacional.
Este parâmetro só tem suporte em sistemas que dão suporte a
TCP_USER_TIMEOUT
(que não inclui o Windows);
nos outros sistemas, deve ser zero.
Nas sessões conectadas por meio de um soquete de domínio
Unix, este parâmetro
é ignorado, e sempre lido como zero.
client_connection_check_interval (integer)
#Define o intervalo de tempo entre as verificações opcionais de que o cliente continua conectado, durante a execução de instruções. A verificação é executada pesquisando o soquete, permitindo que instruções de execução longa sejam interrompidas mais cedo se o núcleo relatar que a conexão foi interrompida.
Esta opção depende de eventos do núcleo disponibilizados pelo Linux, macOS, illumos e pela família de sistemas operacionais BSD, e não está disponível no momento em outros sistemas.
Se o valor for especificado sem unidade, será considerado
sendo milissegundos.
O padrão é 0, que desativa as
verificações de conexão.
Sem verificações de conexão, o servidor detectará a perda da
conexão apenas na próxima interação com o soquete, quando
aguardar, receber ou enviar dados.
Para que o próprio núcleo detecte conexões TCP perdidas de forma confiável em todos os cenários, e em um prazo conhecido, incluindo falha de rede, também pode ser necessário ajustar as configurações de TCP de manutenção de atividade do sistema operacional, ou as configurações de tcp_keepalives_idle, tcp_keepalives_interval e tcp_keepalives_count do PostgreSQL.
authentication_timeout (integer)
#
Tempo máximo permitido para concluir a autenticação do cliente.
Se um possível cliente não tiver concluído o protocolo de
autenticação neste intervalo de tempo, o servidor fechará a conexão.
Isto evita que clientes travados ocupem uma conexão indefinidamente.
Se o valor for especificado sem unidade, será considerado
sendo segundos.
O padrão é um minuto (1m).
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando do
servidor.
password_encryption (enum)
#
Quando é especificada uma senha em CREATE ROLE
ou ALTER ROLE, este parâmetro determina o
algoritmo a ser usado para encriptar a senha.
Os valores possíveis são scram-sha-256,
que irá encriptar a senha com
SCRAM-SHA-256, e
md5, que armazena a senha como um
hash
MD5.
O padrão é scram-sha-256.
Note-se que os clientes mais antigos podem não ter suporte para
o mecanismo de autenticação SCRAM e, portanto, não funcionam
com senhas encriptadas com SCRAM-SHA-256.
Veja Autenticação por senha para obter mais informações.
O suporte para senhas encriptadas com MD5
está obsoleto e será removido em uma versão futura do
PostgreSQL.
Veja Autenticação por senha para obter detalhes sobre
a migração para outro tipo de senha.
scram_iterations (integer)
#
O número de iterações computacionais a serem realizadas ao
encriptar uma senha usando SCRAM-SHA-256.
O padrão é 4096.
Um número maior de iterações oferece proteção adicional contra
ataques de força bruta a senhas armazenadas, mas torna a
autenticação mais lenta.
Alterar o valor não afeta as senhas existentes encriptadas com
SCRAM-SHA-256, porque a contagem de iterações
é fixada no momento da encriptação.
Para usar um valor alterado, é necessário definir uma nova senha.
md5_password_warnings (boolean)
#
Controla se um AVISO sobre a descontinuação
de senhas MD5 será emitido quando um comando
CREATE ROLE ou ALTER ROLE
define uma senha encriptada com MD5.
O padrão é on.
krb_server_keyfile (string)
#
Define o local do arquivo de chave Kerberos do servidor.
O padrão é
FILE:/etc/postgresql-common/krb5.keytab
(onde a parte do diretório é o que foi especificado como
sysconfdir no momento da construção;
deve ser executado pg_config --sysconfdir
para determinar).
Se este parâmetro for definido como uma cadeia de caracteres
vazia, será ignorado e usado um padrão dependente do sistema.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando
do servidor.
Veja Autenticação GSSAPI para obter mais informações.
krb_caseins_users (boolean)
#
Define se os nomes de usuário GSSAPI devem
ser tratados sem fazer distinção entre letras maiúsculas e
minúsculas.
O padrão é off (diferencia letras
maiúsculas de minúsculas).
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando
do servidor.
gss_accept_delegation (boolean)
#
Define se a delegação GSSAPI do cliente deve
ser aceita.
O padrão é off, significando que as
credenciais do cliente não serão aceitas.
Alterar para on fará com que o servidor
aceite credenciais delegadas a ele pelo cliente.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando do
servidor.
oauth_validator_libraries (string)
#
A(s) biblioteca(s) a ser(em) usada(s) para validar tokens de
conexão OAuth.
Se for fornecida apenas uma biblioteca de validação, ela será
usada por padrão para quaisquer conexões OAuth;
caso contrário, todas as
entradas HBA de OAuth
devem definir explicitamente um validator
escolhido a partir desta lista.
Se definido como uma cadeia de caracteres vazia (o padrão),
as conexões OAuth serão recusadas.
Este parâmetro só pode ser definido no arquivo
postgresql.conf.
Os módulos de validação devem ser implementados/obtidos
separadamente; o PostgreSQL não vem
com nenhuma implementação padrão.
Para obter mais informações sobre como implementar validadores
OAuth, veja Módulos de validação OAuth.
Veja Conexões TCP/IP seguras com SSL para obter mais informações sobre
como configurar o SSL.
Os parâmetros de configuração para controlar a encriptação de
transferência usando protocolos TLS são
denominados ssl por razões históricas, embora o
suporte ao protocolo SSL tenha sido descontinuado.
SSL é usado neste contexto de forma
intercambiável com TLS
[121].
ssl (boolean)
#
Ativa conexões SSL.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando
do servidor.
O padrão é off.
ssl_ca_file (string)
#
Especifica o nome do arquivo que contém a autoridade
certificadora (CA) do servidor SSL.
Os caminhos relativos são relativos ao diretório de dados.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando
do servidor.
O padrão é vazio, o que significa que nenhum arquivo de
CA é carregado, e a verificação do certificado do cliente não
é executada.
ssl_cert_file (string)
#
Especifica o nome do arquivo que contém o certificado
SSL do servidor.
Os caminhos relativos são relativos ao diretório de dados.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando
do servidor.
O padrão é server.crt.
ssl_crl_file (string)
#
Especifica o nome do arquivo que contém a lista de certificados
revogados (CRL) do cliente SSL.
Os caminhos relativos são relativos ao diretório de dados.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando
do servidor.
O padrão é vazio, significando que nenhum arquivo CRL
é carregado (a menos que seja definido
ssl_crl_dir).
ssl_crl_dir (string)
#
Especifica o nome do diretório que contém a lista de certificados
revogados (CRL) do cliente SSL.
Os caminhos relativos são relativos ao diretório de dados.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando
do servidor.
O padrão é vazio, significando não são usados CRLs
(a menos que seja definido ssl_crl_dir).
Este diretório precisa ser preparado com o comando
openssl rehash ou c_rehash
do OpenSSL.
Veja sua documentação para obter detalhes.
Ao usar esta configuração, os CRLs no diretório especificado são carregados sob demanda no momento da conexão. Novos CRLs podem ser adicionadas ao diretório e serão usados imediatamente. É diferente de ssl_crl_file, que faz com que o CRL no arquivo seja carregado na hora da ativação do servidor, ou quando a configuração é recarregada. As duas configurações podem ser usadas juntas.
ssl_key_file (string)
#
Especifica o nome do arquivo que contém a chave privada do
servidor SSL.
Os caminhos relativos são relativos ao diretório de dados.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando
do servidor.
O padrão é server.key.
ssl_tls13_ciphers (string)
#Especifica uma lista de conjuntos de cifras permitidos para conexões que utilizam a versão 1.3 do TLS. É possível especificar vários conjuntos de cifras usando uma lista separada por dois-pontos. Se deixado em branco, será utilizado o conjunto padrão de cifras do OpenSSL.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando do
servidor.
ssl_ciphers (string)
#
Especifica uma lista de cifras SSL permitidas
para conexões que utilizam TLS versão 1.2
ou inferior, veja ssl_tls13_ciphers para
conexões TLS versão 1.3.
Veja a sintaxe desta configuração e uma lista de valores com
suporte na página de manual
ciphers
do pacote OpenSSL.
O padrão é HIGH:MEDIUM:+3DES:!aNULL.
O valor padrão é geralmente uma escolha razoável, a menos que
se tenha requisitos de segurança específicos.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando do
servidor.
Explicação do valor padrão:
HIGH #
Conjuntos de cifras que utilizam cifras do grupo
HIGH (por exemplo, AES, Camellia, 3DES)
MEDIUM #
Conjuntos de cifras que utilizam cifras do grupo
MEDIUM (por exemplo, RC4, SEED)
+3DES #
A ordem padrão do OpenSSL para
HIGH é problemática, porque classifica o
3DES acima do AES128.
Isto está errado, porque o 3DES oferece menos segurança
que o AES128 e também é muito mais lento.
+3DES reposiciona após todas as outras
cifras HIGH e MEDIUM.
!aNULL #Desativa conjuntos de cifras anônimos que não realizam autenticação. Estes conjuntos de cifras são vulneráveis a ataques MITM e, portanto, não devem ser utilizados.
Os detalhes dos conjuntos de cifras disponíveis variam entre as
versões do OpenSSL.
Deve-se usar o comando
openssl ciphers -v 'HIGH:MEDIUM:+3DES:!aNULL'
para ver os detalhes reais da versão do
OpenSSL instalada no momento.
Note-se que esta lista é filtrada em tempo de execução com base
no tipo de chave do servidor.
ssl_prefer_server_ciphers (boolean)
#
Especifica se devem ser usadas as preferências de cifra
SSL do servidor, em vez das do cliente.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando do
servidor.
O padrão é on.
As versões do PostgreSQL anteriores à 9.4 não possuem esta configuração e sempre utilizam as preferências do cliente. Esta configuração serve principalmente para manter a compatibilidade com versões anteriores. Geralmente é melhor usar as preferências do servidor, porque é mais provável que este esteja configurado adequadamente.
ssl_groups (string)
#
Especifica o nome da curva a ser usada na troca de chaves
ECDH.
É necessário ter suporte por todos os clientes que se conectam.
Podem ser especificadas várias curvas usando uma lista
separada por dois-pontos.
Não precisa ser a mesma curva usada pela chave de Curva
Elíptica do servidor.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando do
servidor.
O padrão é X25519:prime256v1.
Os nomes mais comuns do OpenSSL para
as curvas são:
prime256v1 (NIST P-256),
secp384r1 (NIST P-384) e
secp521r1 (NIST P-521).
Pode ser vista uma lista parcial dos grupos disponíveis usando
o comando openssl ecparam -list_curves.
Entretanto, nem todos são utilizáveis com TLS,
e muitos nomes de grupos e aliases com suporte são omitidos.
Nas versões do PostgreSQL anteriores
à 18.0, esta configuração se chamava
ssl_ecdh_curve e aceitava apenas um único valor.
ssl_min_protocol_version (enum)
#
Define a versão mínima do protocolo SSL/TLS a ser usada.
Os valores válidos são no momento são:
TLSv1, TLSv1.1,
TLSv1.2, TLSv1.3.
As versões mais antigas da biblioteca
OpenSSL não oferecem suporte a todos
os valores; será relatado um erro se for escolhida uma
configuração sem suporte.
As versões de protocolo anteriores ao TLS 1.0, ou seja,
SSL versão 2 e 3, estão sempre desativadas.
O padrão é TLSv1.2, que atende às práticas
recomendadas do setor até o momento da redação desse documento.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando do
servidor.
ssl_max_protocol_version (enum)
#Define a versão máxima do protocolo SSL/TLS a ser usada. Os valores válidos são os mesmos que para ssl_min_protocol_version, com a opção de aceitar uma cadeia de caracteres vazia, o que permite qualquer versão do protocolo. O comportamento padrão é permitir qualquer versão. Definir a versão máxima do protocolo serve principalmente para testes, ou se algum componente tiver problemas para funcionar com um protocolo mais recente.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando do
servidor.
ssl_dh_params_file (string)
#
Especifica o nome do arquivo que contém os parâmetros
Diffie-Hellman usados para a
família DH efêmera de cifras SSL.
O padrão é vazio, caso em que são usados os parâmetros
DH padrão compilados.
O uso de parâmetros DH personalizados reduz a exposição se um
invasor conseguir quebrar os parâmetros DH compilados conhecidos.
Pode-se criar um arquivo próprio de parâmetros DH com o comando
openssl dhparam -out dhparams.pem 2048.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando do
servidor.
ssl_passphrase_command (string)
#Define o comando externo a ser chamado quando precisa ser obtida uma senha para desencriptar um arquivo SSL com chave privada. Por padrão, este parâmetro está vazio, significando que é usado o mecanismo de pedido (prompt) integrado.
O comando deve escrever a senha na saída padrão, e terminar com
o código 0.
No valor do parâmetro, %p é substituído pela
cadeia de caracteres do pedido.
(Deve ser escrito %% para obter
%.)
Note-se que a cadeia de caracteres da solicitação provavelmente
conterá espaços em branco, portanto, é necessário delimitá-la
adequadamente.
Uma única nova-linha é removida do final da saída, se presente.
Na verdade, o comando não precisa solicitar uma senha ao usuário. Ele pode lê-lo de um arquivo, obtê-lo de um recurso gerenciador de senhas, ou similar. Cabe ao usuário certificar-se de que o mecanismo escolhido é adequadamente seguro.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando do
servidor.
ssl_passphrase_command_supports_reload (boolean)
#
Este parâmetro determina se o comando de senha definido por
ssl_passphrase_command também será chamado
durante um recarregamento de configuração, se um arquivo
precisar de uma senha.
Se este parâmetro estiver off (o padrão),
ssl_passphrase_command será ignorado durante
o recarregamento, e a configuração SSL não
será recarregada se for necessária uma senha.
Esta configuração é apropriada para um comando que requer um
terminal para solicitação, que pode não estar disponível quando
o servidor está em execução.
Definir este parâmetro como ativo pode ser apropriado se
a senha for obtida de um arquivo, por exemplo.
Este parâmetro deve ser definido como on ao
executar no Windows,
uma vez que todas as conexões realizarão um recarregamento da
configuração devido ao modelo de processo diferente dessa
plataforma.
Este parâmetro só pode ser definido no arquivo
postgresql.conf ou na linha de comando do
servidor.
Exemplo 19.2. Exemplo do tradutor
Conexões e autenticação de cliente
Neste exemplo são realizadas duas conexões pela usuária ana usando o psql. A primeira via TCP/IP fornecendo o nome do hospedeiro, e a segunda via soquete de domínio Unix não fornecendo o nome do hospedeiro. Por fim, são mostradas as informações das conexões. Para obter informações sobre a configuração do SSL veja o Exemplo 18.1.
Conexão via TCP/IP:
$ psql -h localhost -U ana
Senha para o usuário ana:
psql (18.4 (Debian 18.4-1.pgdg12+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, ↵
compression: desativado, ALPN: postgresql)
Digite "help" para obter ajuda.
ana=>
Conexão via soquete de domínio Unix:
$ sudo su - ana $ psql psql (18.4 (Debian 18.4-1.pgdg12+1)) Digite "help" para obter ajuda. ana=>
Informações sobre as conexões:
$ sudo su - postgres
$ psql
psql (18.4 (Debian 18.4-1.pgdg12+1))
Digite "help" para obter ajuda.
postgres=# SELECT
pid,
usename,
application_name,
client_addr,
CASE
WHEN client_addr IS NULL THEN 'Unix Socket (Local)'
ELSE 'TCP/IP Connection'
END AS connection_type
FROM pg_stat_activity
WHERE usename='ana';
pid | usename | application_name | client_addr | connection_type ------+---------+------------------+-------------+--------------------- 8531 | ana | psql | | Unix Socket (Local) 9503 | ana | psql | ::1 | TCP/IP Connection
Informações sobre o soquete de domínio Unix:
postgres=# SHOW unix_socket_directories; unix_socket_directories ------------------------- /var/run/postgresql (1 linha) postgres=# exit $ ls -la /var/run/postgresql total 8 drwxrwsr-x 2 postgres postgres 100 jun 28 14:58 . drwxr-xr-x 33 root root 840 jun 28 14:58 .. -rw-r--r-- 1 postgres postgres 4 jun 28 14:58 18-main.pid srwxrwxrwx 1 postgres postgres 0 jun 28 16:54 .s.PGSQL.5432 -rw------- 1 postgres postgres 68 jun 28 16:54 .s.PGSQL.5432.lock
[119] As permissões de soquete não têm significado para soquetes abstratos. Os soquetes abstratos desaparecem automaticamente quando todas as referências abertas ao soquete são fechadas. O espaço de nomes de soquete abstrato é uma extensão não portável do Linux. unix - sockets for local interprocess communication (N. T.)
[120]
Existem três formatos de endereçamento diferentes para soquetes
Unix: soquetes do tipo
pathname (nome do caminho),
abstract (abstrato) e
unnamed (sem nome).
Os soquetes do tipo pathname
estão vinculados ao sistema de arquivos, sendo que o membro
sun_path da estrutura é utilizado para
especificar o caminho do sistema de arquivos em UTF-8
terminado em nulo.
O mesmo se aplica à implementação no
Windows, na qual
sun_path especifica o caminho do
sistema de arquivos Win32 em UTF-8.
A segunda categoria é o endereço de soquete
abstract, no qual o primeiro
caractere de sun_path é um byte nulo.
A implementação de soquetes AF_UNIX no
Windows também aceita
endereços abstratos.
Uma diferença que vale destacar é que a implementação de
soquetes Unix no
Windows não oferece
suporte, no momento, ao recurso de autobind
(vinculação automática), pelo qual um endereço abstrato é
gerado automaticamente pela implementação em nome do usuário.
AF_UNIX comes to Windows (N. T.)
[121] O TLS é o sucessor direto do SSL, e todas as versões do SSL agora estão obsoletas. No entanto, é comum encontrar o termo SSL descrevendo uma conexão TLS. Na maioria dos casos, os termos SSL e SSL/TLS referem-se ao protocolo TLS e aos certificados TLS. Qual é a diferença entre o SSL e o TLS? (N. T.)