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

  1. 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. Captura de tela de Habilitar a criptografia de senha com SCRAM.

  2. Permita SCRAM-SHA-256 como o método de autenticação. Captura de tela de Escolher 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.

  3. Salve as alterações. Essas propriedades são dinâmicas e não exigem a reinicialização do servidor.

  4. 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.
    
  5. Verifique a criptografia por senha.

    postgres=> show password_encryption;
     password_encryption
    ---------------------
    scram-sha-256
    (1 row)
    
  6. Em seguida, você pode atualizar a senha dos usuários.

    postgres=> \password myDemoUser
    Enter new password:
    Enter it again:
    postgres=>
    
  7. 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)
    
  8. 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.