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
Cambie password_encryption a SCRAM-SHA-256. Actualmente, el servidor flexible de Azure Database for PostgreSQL solo admite SCRAM mediante SHA-256.
Permita SCRAM-SHA-256 como 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.
Guarde los cambios. Se trata de propiedades dinámicas y no es necesario reiniciar el servidor.
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.
Compruebe el cifrado de contraseña.
postgres=> show password_encryption; password_encryption --------------------- scram-sha-256 (1 row)
Después, puede actualizar la contraseña de los usuarios.
postgres=> \password myDemoUser Enter new password: Enter it again: postgres=>
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)
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.