Partilhar via


Autenticação SCRAM no Banco de Dados do Azure para PostgreSQL

O SCRAM (Salted Challenge Response Authentication Mechanism) é um protocolo de autenticação mútua baseado em senha. É um esquema de desafio-resposta que adiciona vários níveis de segurança e impede a deteção de senhas em conexões não confiáveis. O SCRAM suporta o armazenamento de senhas no servidor em um formato criptograficamente hashado, o que fornece segurança avançada.

Observação

Para acessar uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL usando o método SCRAM de autenticação, suas bibliotecas de cliente precisam dar suporte ao SCRAM. Consulte a lista de drivers que suportam SCRAM.

A autenticação SCRAM impõe carga computacional extra aos servidores de aplicativos, que precisam calcular a prova do cliente para cada autenticação. A sobrecarga de desempenho que a SCRAM introduz pode ser atenuada limitando o número de conexões no pool de conexões do seu aplicativo (reduzindo a chattiness em seu aplicativo) ou limitando o número de transações simultâneas que seu cliente permite (transações maiores). É recomendável testar suas cargas de trabalho antes de migrar para a autenticação SCRAM.

Configurar autenticação SCRAM

  1. Altere password_encryption para SCRAM-SHA-256. Atualmente, o Banco de Dados do Azure para PostgreSQL só dá suporte a SCRAM usando SHA-256.

    Captura de ecrã da página de encriptação para SCRAM.

  2. Permita SCRAM-SHA-256 como método de autenticação.

    Captura de ecrã da autenticação alcançada pelo SCRAM.

    Importante

    Você pode optar por impor a autenticação somente SCRAM selecionando apenas o método SCRAM-SHA-256. Ao fazer isso, os usuários com autenticação MD5 podem se conectar mais tempo ao servidor. Portanto, antes de impor o SCRAM, que você tenha MD5 e SCRAM-SHA-256 como métodos de autenticação até atualizar todas as senhas de usuário para SCRAM-SHA-256. Você pode verificar o tipo de autenticação para usuários usando a consulta mencionada na etapa #7.

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

  4. No seu cliente de servidor flexível do Banco de Dados do Azure para PostgreSQL, conecte-se à instância de servidor flexível do Banco de Dados do Azure para PostgreSQL. Por exemplo

    psql "host=myPGServer.postgres.database.azure.com port=5432 dbname=postgres user=myDemoUser password=<password> 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 encriptação da palavra-passe.

    postgres=> show password_encryption;
       password_encryption
    ---------------------
    scram-sha-256
    (1 row)
    
  6. Em seguida, você pode atualizar a senha para os 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 azure_roles_authtype() a função.

    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. Em seguida, você pode se conectar do cliente que suporta a autenticação SCRAM ao seu servidor.

    A autenticação SCRAM também é suportada quando conectada ao PgBouncer gerenciado integrado.