Compartir a través de


Autenticación de SCRAM en Azure Database for PostgreSQL: Servidor flexible

SE APLICA A: Azure Database for PostgreSQL con servidor flexible

Salted Challenge Response Authentication Mechanism (SCRAM) es un protocolo de autenticación mutua basado en contraseña. Se trata de un esquema de desafío-respuesta que agrega varios niveles de seguridad y evita el examen de contraseñas en conexiones que no son de confianza. SCRAM admite el almacenamiento de contraseñas en el servidor en un formato hash criptográfico que proporciona seguridad avanzada.

Nota:

Para acceder a una instancia de servidor flexible de Azure Database for PostgreSQL mediante el método SCRAM de autenticación, las bibliotecas cliente deben admitir SCRAM. Consulte la lista de controladores que admiten SCRAM.

Nota:

La autenticación SCRAM impone una carga computacional adicional en los servidores de aplicaciones, que necesitan calcular la prueba de cliente para cada autenticación. La sobrecarga de rendimiento que introduce SCRAM puede mitigarse limitando el número de conexiones en el grupo de conexiones de la aplicación (lo que reduce el intercambio de mensajes en la aplicación) o limitando el número de transacciones simultáneas que el cliente permite (transacciones fragmentadas). Se recomienda probar las cargas de trabajo antes de migrar a la autenticación SCRAM.

Configuración de la autenticación SCRAM

  1. Cambie password_encryption a SCRAM-SHA-256. Actualmente, el servidor flexible de Azure Database for PostgreSQL solo admite SCRAM mediante SHA-256. Captura de pantalla de la habilitación del cifrado de contraseñas SCRAM.

  2. Permita SCRAM-SHA-256 como método de autenticación. Captura de pantalla de la selección del método de autenticación.

    Importante

    Puede optar por aplicar solo la autenticación SCRAM si selecciona únicamente el método SCRAM-SHA-256. Al hacerlo, los usuarios con autenticación MD5 ya no podrán conectarse al servidor. Por tanto, antes de aplicar SCRAM, se recomienda tener MD5 y SCRAM-SHA-256 como métodos de autenticación hasta que actualice todas las contraseñas de usuario a SCRAM-SHA-256. Puede comprobar el tipo de autenticación para los usuarios mediante la consulta mencionada en el paso 7.

  3. Guarde los cambios. Se trata de propiedades dinámicas y no es necesario reiniciar el servidor.

  4. Desde el cliente de servidor flexible de Azure Database for PostgreSQL, conéctese a la instancia de servidor flexible de Azure Database for PostgreSQL. Por ejemplo,

    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. Compruebe el cifrado de contraseña.

    postgres=> show password_encryption;
     password_encryption
    ---------------------
    scram-sha-256
    (1 row)
    
  6. Después, puede actualizar la contraseña de los usuarios.

    postgres=> \password myDemoUser
    Enter new password:
    Enter it again:
    postgres=>
    
  7. Puede comprobar los tipos de autenticación de usuario mediante la función 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. Después, puede conectarse al servidor desde el cliente que admite la autenticación SCRAM.

Nota

La autenticación SCRAM también se admite al conectarse a la instancia de PgBouncer administrada e integrada. El tutorial anterior es válido para configurar la conectividad mediante la autenticación SCRAM a través de la característica PgBouncer integrada.