Authentification SCRAM dans le serveur flexible Azure Database pour PostgreSQL

Salted Challenge Response Authentication Mechanism (SCRAM) est un protocole d’authentification mutuelle basé sur mot de passe. Il s’agit d’un modèle de stimulation-réponse qui ajoute plusieurs niveaux de sécurité et empêche la détection de mot de passe sur des connexions non approuvées. SCRAM prend en charge le stockage de mots de passe sur le serveur dans un formulaire haché par chiffrement, qui fournit une sécurité avancée.

Note

Pour accéder à un serveur flexible Azure Database pour PostgreSQL à l’aide de la méthode d’authentification SCRAM, vos bibliothèques clientes doivent prendre en charge SCRAM. Pour plus d’informations, consultez la liste des pilotes qui prennent en charge SCRAM.

L’authentification SCRAM ajoute une charge de calcul supplémentaire à vos serveurs d’applications, qui doivent calculer la preuve du client pour chaque authentification. Vous pouvez réduire la surcharge de performances introduite par SCRAM en limitant le nombre de connexions dans le pool de connexions de votre application (réduisant les conversationtines dans votre application) ou en limitant le nombre de transactions simultanées que votre client autorise (transactions plus volumineuses). Testez vos charges de travail avant de migrer vers l’authentification SCRAM.

Configurer l’authentification SCRAM

Accéder aux paramètres

Pour configurer l’authentification SCRAM, accédez à la page Paramètres du portail Azure :

  1. Connectez-vous au portail Azure.
  2. Accédez à votre serveur flexible Azure Database pour PostgreSQL.
  3. Dans le menu de gauche sous Paramètres, sélectionnez Paramètres.
  4. Utilisez la zone de recherche pour rechercher les paramètres mentionnés dans les étapes suivantes.

Étapes de configuration

  1. Remplacez password_encryption par SCRAM-SHA-256. Actuellement, Azure Database pour PostgreSQL prend uniquement en charge SCRAM à l’aide de SHA-256.

    Capture d’écran de la page de chiffrement pour SCRAM.

  2. Autorisez SCRAM-SHA-256 la méthode d’authentification.

    Capture d’écran de l’authentification atteinte par SCRAM.

    Important

    Vous pouvez appliquer l’authentification SCRAM uniquement en sélectionnant uniquement la SCRAM-SHA-256 méthode. Lorsque vous appliquez cette méthode, les utilisateurs disposant de l’authentification MD5 ne peuvent pas se connecter au serveur. Avant d’appliquer SCRAM, vérifiez que MD5 et SCRAM-SHA-256 sont des méthodes d’authentification jusqu’à ce que vous mettez à jour tous les mots de passe utilisateur vers SCRAM-SHA-256. Vous pouvez vérifier le type d’authentification pour les utilisateurs à l’aide de la requête mentionnée à l’étape 7.

  3. Enregistrez les modifications. Ces propriétés sont dynamiques et ne nécessitent pas de redémarrage du serveur.

  4. À partir de votre client de serveur flexible Azure Database pour PostgreSQL, connectez-vous au serveur flexible Azure Database pour PostgreSQL. Par exemple,

    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. Vérifiez le chiffrement du mot de passe.

    postgres=> show password_encryption;
       password_encryption
    ---------------------
    scram-sha-256
    (1 row)
    
  6. Mettez à jour le mot de passe pour les utilisateurs.

    postgres=> \password myDemoUser
    Enter new password:
    Enter it again:
    postgres=>
    
  7. Vérifiez les types d’authentification utilisateur à l’aide de la azure_roles_authtype() fonction.

    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. Connectez-vous à partir du client qui prend en charge l’authentification SCRAM à votre serveur.

    L’authentification SCRAM n’est pas non plus prise en charge lors de la connexion au PgBouncer géré intégré.