Autenticação de SCRAM no Banco de Dados do Azure para PostgreSQL – Servidor Flexível
APLICA-SE A: Banco de Dados do Azure para PostgreSQL - Servidor Flexível
O SCRAM (Salted Challenge Response Authentication Mechanism) é um protocolo de autenticação mútua baseada em senha. Trata-se de um esquema de desafio e resposta que adiciona vários níveis de segurança e impede a detecção de senhas em conexões não seguras. O SCRAM dá suporte ao armazenamento de senhas no servidor em um formato com hash criptográfico que fornece segurança avançada.
Observação
Para aceder a uma instância de servidor flexível da Base de Dados Azure para PostgreSQL utilizando o método de autenticação SCRAM, as suas bibliotecas de clientes precisam de suportar SCRAM. Confira a lista de drivers com suporte para o SCRAM.
Observação
A autenticação SCRAM impõe carga computacional adicional aos servidores de aplicativos, que precisam calcular a prova do cliente para cada autenticação. A sobrecarga de desempenho que o SCRAM introduz pode ser mitigada limitando o número de conexões no pool de conexões do seu aplicativo (reduzindo a conversação no seu aplicativo) ou limitando o número de transações simultâneas que seu cliente permite (transações mais pesadas). É recomendado testar suas cargas de trabalho antes de migrar para a autenticação SCRAM.
Configure a autenticação com SCRAM
Altere password_encryption para SCRAM-SHA-256. Atualmente, o servidor flexível do Banco de Dados do Azure para PostgreSQL só dá suporte a SCRAM usando SHA-256.
Permita SCRAM-SHA-256 como o método de autenticação.
Importante
Você pode optar por impor a autenticação somente com SCRAM selecionando apenas o método SCRAM-SHA-256. Quando isso é feito, os usuários com autenticação MD5 não podem mais se conectar ao servidor. Sendo assim, antes de impor o SCRAM, é recomendável ter o MD5 e o SCRAM-SHA-256 como métodos de autenticação até que você atualize todas as senhas de usuário para o SCRAM-SHA-256. Verifique o tipo de autenticação dos usuários usando a consulta mencionada na etapa 7.
Salve as alterações. Essas propriedades são dinâmicas e não exigem a reinicialização do servidor.
A partir do seu cliente de servidor flexível da Base de Dados Azure para PostgreSQL, ligue-se à instância de servidor flexível da Base de Dados Azure para PostgreSQL. Por exemplo,
psql "host=myPGServer.postgres.database.azure.com port=5432 dbname=postgres user=myDemoUser password=MyPassword sslmode=require" psql (12.3 (Ubuntu 12.3-1.pgdg18.04+1), server 12.6) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help.
Verifique a criptografia por senha.
postgres=> show password_encryption; password_encryption --------------------- scram-sha-256 (1 row)
Em seguida, você pode atualizar a senha dos usuários.
postgres=> \password myDemoUser Enter new password: Enter it again: postgres=>
Você pode verificar os tipos de autenticação do usuário usando a função
azure_roles_authtype()
.postgres=> SELECT * from azure_roles_authtype(); rolename | authtype ---------------------------+----------- azuresu | NOLOGIN pg_monitor | NOLOGIN pg_read_all_settings | NOLOGIN pg_read_all_stats | NOLOGIN pg_stat_scan_tables | NOLOGIN pg_read_server_files | NOLOGIN pg_write_server_files | NOLOGIN pg_execute_server_program | NOLOGIN pg_signal_backend | NOLOGIN replication | NOLOGIN myDemoUser | SCRAM-256 azure_pg_admin | NOLOGIN srtest | SCRAM-256 sr_md5 | MD5 (14 rows)
Depois, você pode se conectar do cliente que dá suporte à autenticação com SCRAM ao seu servidor.
Observação
Não há suporte para a autenticação SCRAM durante a conexão com o PgBouncer gerenciado interno. O tutorial acima é válido para configurar a conectividade usando a autenticação do SCRAM por meio do recurso interno PgBouncer.