AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 126276
Accepted
lalligood
lalligood
Asked: 2016-01-15 10:35:46 +0800 CST2016-01-15 10:35:46 +0800 CST 2016-01-15 10:35:46 +0800 CST

pgbouncer 1.7 com cliente TLS/SSL e conexões de servidor

  • 772

Com configurações emprestadas de um servidor semelhante executando Postgres 9.4.1 e pgbouncer 1.6.1, tenho vários usuários se conectando ao banco de dados por meio de pgbouncer na porta 6543. Também tenho um segundo servidor executando PostgreSQL 9.4.5 onde verifiquei que todos os usuários só podem se conectar diretamente aos bancos de dados (na porta 5432) usando TLS/SSL definido como verify-full.

No entanto, preciso criar um ambiente combinando essas configurações: um onde todos os usuários se conectem ao banco de dados via TLS/SSL com pooling de conexão através do pgbouncer. Isso significa que preciso usar a nova funcionalidade TLS/SSL no pgbouncer 1.7 lançado recentemente (a partir de 18 de dezembro de 2015), mas além da documentação dos novos parâmetros TLS , não encontrei nenhum exemplo disponível demonstrando a nova funcionalidade nem tinha qualquer sucesso por conta própria estabelecendo uma conexão válida através do pgbouncer usando TLS/SSL no meu segundo servidor.

Incluí trechos pertinentes do postgresql.conf, pg_hba.conf, & pgbouncer.inido meu segundo servidor.

postgresql.conf:

ssl = on                                # (change requires restart)
ssl_cert_file = 'server.crt'            # (change requires restart)
ssl_key_file = 'server.key'             # (change requires restart)
ssl_ca_file = 'root.crt'                        # (change requires restart)

pg_hba.conf:

hostssl    all             all             10.10.5.0/24            cert

pgbouncer.ini:

;
; pgbouncer configuration
;
[databases]
mydatabase = host=localhost port=5432 dbname=mydatabase
;
[pgbouncer]
listen_port = 6543
listen_addr = *
admin_users = lalligood, postgres
logfile = /tmp/pgbouncer.log
pidfile = /tmp/pgbouncer.pid
ignore_startup_parameters = application_name
server_reset_query = DISCARD ALL;
pool_mode = session
max_client_conn = 1000
default_pool_size = 300
log_pooler_errors = 0
; Improve compatibility with Java/JDBC connections
ignore_startup_parameters = extra_float_digits
; USER AUTHENTICATION (old way commented out with new lines below)
;auth_type = md5
;auth_file = pgbouncer/users.txt
auth_type = hba
auth_hba_file = pg_hba.conf
; TLS SETTINGS (NEW STUFF!)
client_tls_sslmode = verify-full
client_tls_key_file = server.key
client_tls_cert_file = server.crt
client_tls_ca_file = root.crt
server_tls_sslmode = verify-full
server_tls_key_file = /tmp/pgb_user.key
server_tls_cert_file = /tmp/pgb_user.crt
server_tls_ca_file = root.crt

O pgbouncer inicia, no entanto, quando tento me conectar como qualquer usuário, mas digamos que quero ser o usuário 'lalligood', recebo o seguinte erro:

ERROR: no such user: lalligood

pgbouncer.log contém a seguinte linha para cada tentativa:

2016-01-13 16:00:36.971 2144 LOG C-0xcad410: 
(nodb)/(nouser)@10.10.5.194:54848 closing because: No such user: 
lalligood (age=0)

Posso fornecer mais informações se necessário. Se alguém tiver algum conselho / sugestão sobre o que posso estar esquecendo para fazer isso funcionar, agradeço muito a ajuda!

postgresql postgresql-9.4
  • 1 1 respostas
  • 3953 Views

1 respostas

  • Voted
  1. Best Answer
    lalligood
    2016-01-16T08:58:54+08:002016-01-16T08:58:54+08:00

    Eu descobri... Eu era (parcialmente?) culpado por tentar usar muitos recursos novos no pgbouncer 1.7.

    Existem as configurações TLS/SSL e os controles de acesso HBA. (TLS/SSL não precisa de controles de acesso HBA e vice-versa para funcionar). Além disso, como pgbouncer e o banco de dados estão na mesma caixa, não há necessidade de sobrecarga extra de TLS/SSL entre pgbouncer e o banco de dados.

    A simplificação para usar apenas as configurações de autenticação de usuário mais comumente usadas provou ser a solução.

    Primeiro, postgresql.conf& pg_hba.confforam deixados intocados como mostrado acima.

    pgbouncer.ini, no entanto, é isso:

    ;
    ; pgbouncer configuration
    ;
    [databases]
    mydatabase = host=localhost port=5432 dbname=mydatabase
    ;
    [pgbouncer]
    listen_port = 6543
    listen_addr = *
    admin_users = lalligood, postgres
    auth_type = cert
    auth_file = pgbouncer/users.txt
    logfile = /var/lib/pgsql/pgbouncer.log
    pidfile = /var/lib/pgsql/pgbouncer.pid
    ignore_startup_parameters = application_name
    server_reset_query = DISCARD ALL;
    pool_mode = session
    max_client_conn = 1000
    default_pool_size = 300
    log_pooler_errors = 0
    ; Improve compatibility with Java/JDBC connections
    ignore_startup_parameters = extra_float_digits
    ; TLS settings
    client_tls_sslmode = verify-full
    client_tls_key_file = server.key
    client_tls_cert_file = server.crt
    client_tls_ca_file = root.crt
    

    Portanto, as alterações específicas são auth_type = cert& auth_file = pgbouncer/users.txt(alterar/remover as referências HBA) e remover as 4 server_tls_...linhas no final.

    Os usuários se autenticam no pgbouncer e no banco de dados postgres usando o certificado SSL.

    Isso também significa que tenho que montar uma lista de usuários que passarão pelo pgbouncer em ./pgbouncer/users.txt. O formato deve ser assim (para cada usuário):

    "lalligood" ""
    

    já que o pgbouncer não verificará nenhuma conexão com base em uma senha.

    Então, tudo isso significa que a autenticação/conectividade TLS/SSL por meio do pgbouncer funciona. Mas também me deixa com a sensação de que sou, na melhor das hipóteses auth_type = hba, auth_hba_file = pg_hba.confsuspeito; não está funcionando corretamente na pior das hipóteses.

    • 1

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve