Gérer l'authentification intégrée à l'aide de règles liées aux mots de passe

Cette page explique comment définir et gérer des règles de mot de passe pour AlloyDB Omni.

À propos des règles relatives aux mots de passe

Si les utilisateurs de la base de données de votre application s'authentifient avec AlloyDB Omni à l'aide de la méthode intégrée basée sur un mot de passe, vous pouvez renforcer l'authentification en imposant des mots de passe sécurisés. Vous pouvez définir et activer l'application forcée des mots de passe en définissant une règle de mot de passe AlloyDB Omni.

Limites des règles relatives aux mots de passe

Les règles de mot de passe AlloyDB Omni présentent les limites suivantes:

  • Les règles relatives aux mots de passe ne s'appliquent aux mots de passe créés qu'après leur configuration. Les mots de passe des utilisateurs existants ne sont pas affectés par une modification de la stratégie de mot de passe.

  • Les règles de mot de passe ne s'appliquent qu'aux mots de passe saisis en texte brut. Les règles de mot de passe ne s'appliquent pas aux mots de passe saisis sous forme de chaînes chiffrées.

Définir une règle de mot de passe AlloyDB Omni

Vous définissez une stratégie de mot de passe en mettant à jour les paramètres de mot de passe de la configuration unifiée (GUC, Grand Unified Configuration) dans votre fichier de configuration postgresql.conf. Pour savoir comment définir un paramètre GUC, consultez la section Configurer des options de base de données AlloyDB Omni.

Une règle relative aux mots de passe pour AlloyDB Omni peut inclure les options suivantes:

  • Interdire le nom d'utilisateur: empêche de spécifier le nom d'utilisateur dans le mot de passe.

  • Complexité du mot de passe: vérifie si le mot de passe contient le nombre autorisé de caractères minuscules, majuscules, numériques et non alphanumériques. Vérifiez également si la longueur du mot de passe est valide.

  • Expiration des mots de passe: assurez-vous que les mots de passe sont régulièrement remplacés.

Pour obtenir la liste des indicateurs de stratégie de mot de passe compatibles avec AlloyDB Omni, consultez la section Options de stratégie de mot de passe.

Précharger la bibliothèque de validation des mots de passe

Pour qu'une stratégie de mot de passe soit appliquée dans AlloyDB Omni, la bibliothèque alloydb_password_validation doit être chargée. Pour charger cette bibliothèque, procédez comme suit:

  1. Recherchez le fichier de configuration postgresql.conf de votre installation d'AlloyDB Omni, puis ouvrez-le dans un éditeur de texte.

  2. Recherchez la ligne shared_preload_libraries et vérifiez si elle inclut alloydb_password_validation. Si ce n'est pas le cas, vous devez l'ajouter. Une fois terminé, votre ligne shared_preload_libraries se présente comme suit:

    shared_preload_libraries='google_columnar_engine,google_job_scheduler,google_storage,alloydb_password_validation'
    

Appliquer la complexité des mots de passe

Pour appliquer une règle de complexité des mots de passe, procédez comme suit:

  1. Vérifiez que votre fichier postgresql.conf précharge la bibliothèque de validation des mots de passe.

  2. Définissez l'indicateur password.enforce_complexity sur ON.

  3. Utilisez des indicateurs de stratégie de mot de passe pour définir votre stratégie de mot de passe.

Par exemple, pour appliquer une stratégie de mot de passe qui stipule qu'un mot de passe doit contenir au moins une lettre majuscule, un chiffre et au moins 10 caractères, définissez les éléments suivants dans votre fichier postgresql.conf:

  • password.enforce_complexity = ON
  • password.min_uppercase_letters = 1
  • password.min_numerical_chars = 1
  • password.min_pass_length = 10

Une fois ces indicateurs définis, toute tentative de définition d'un mot de passe utilisateur de base de données qui ne respecte pas cette règle de mot de passe échoue. Par exemple, avec ce paramètre de stratégie, la commande client psql suivante échoue, car le mot de passe foo est inférieur à 10 caractères et ne contient ni chiffre ni caractère en majuscule.

CREATE USER USERNAME WITH PASSWORD foo;

Appliquer l'expiration du mot de passe

Pour appliquer la règle d'expiration des mots de passe, procédez comme suit:

  1. Vérifiez que votre fichier postgresql.conf précharge la bibliothèque de validation des mots de passe.

  2. Définissez l'indicateur password.enforce_expiration sur ON.

  3. Définissez l'indicateur password.expiration_in_days sur le nombre de jours après lesquels un mot de passe expire.

  4. Définissez l'indicateur password.notify_expiration_in_days sur le nombre de jours avant l'expiration d'un mot de passe à partir duquel un utilisateur commence à recevoir des notifications d'expiration du mot de passe.

Par exemple, pour appliquer une stratégie de mot de passe indiquant que les mots de passe expirent au bout de 30 jours et que les utilisateurs sont avertis 15 jours avant l'expiration de leur mot de passe, vous devez définir les éléments suivants dans votre fichier postgresql.conf:

  • password.enforce_expiration = ON
  • password.expiration_in_days = 30
  • password.notify_expiration_in_days = 15

Si le mot de passe d'un utilisateur expire, celui-ci ne peut pas se connecter à AlloyDB Omni. Pour réinitialiser le mot de passe d'un utilisateur, procédez comme suit:

  1. Connectez-vous à AlloyDB Omni à l'aide de psql. Par exemple, si vous avez installé AlloyDB Omni à l'aide de Docker, exécutez la commande suivante:

    docker exec -it CONTAINER-NAME psql -h localhost -U postgres
    
  2. À l'invite postgres=#, exécutez la commande suivante:

    ALTER USER USERNAME WITH 'NEW-PASSWORD';
    

Pour en savoir plus sur la modification du mot de passe d'un utilisateur, consultez ALTER ROLE dans la documentation PostgreSQL.

Interdire les noms d'utilisateur dans les mots de passe

Pour appliquer la règle qui interdit aux mots de passe de contenir un nom d'utilisateur, procédez comme suit:

  1. Vérifiez que votre fichier postgresql.conf précharge la bibliothèque de validation des mots de passe.

  2. Définissez password.enforce_password_does_not_contain_username sur ON.

Par exemple, pour vous assurer qu'un mot de passe ne contient pas de nom d'utilisateur en tant que sous-chaîne, vous devez définir ce qui suit dans votre fichier postgresql.conf:

  • password.enforce_password_does_not_contain_username = ON

Si cet indicateur est défini, l'opération suivante échoue, car le mot de passe alex-secret contient le nom d'utilisateur alex:

CREATE USER alex WITH PASSWORD 'alex-secret';

Étape suivante