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

Pour renforcer la sécurité de l'authentification intégrée des bases de données, vous pouvez définir et gérer des règles de mot de passe pour les utilisateurs de bases de données sur vos instances AlloyDB pour PostgreSQL.

Pour obtenir un aperçu des méthodes d'authentification disponibles dans AlloyDB, consultez Authentification.

À propos des règles relatives aux mots de passe

Si les utilisateurs de la base de données de votre application s'authentifient auprès de vos instances AlloyDB à l'aide de la méthode intégrée basée sur un mot de passe, vous pouvez renforcer la sécurité de l'authentification en exigeant 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 relative aux mots de passe sur vos instances.

Limites des règles relatives aux mots de passe

Les règles relatives aux mots de passe AlloyDB présentent les limites suivantes :

  • Les règles relatives aux mots de passe ne s'appliquent qu'aux utilisateurs de bases de données intégrées (BUILT_IN). Les utilisateurs de base de données basés sur IAM (IAM_BASED) sont exclus des règles de mot de passe de l'instance.

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

  • Les règles relatives aux mots de passe s'appliquent uniquement aux mots de passe saisis en texte brut. Les règles relatives aux mots 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 d'instance

Vous pouvez définir une règle relative aux mots de passe sur une instance en configurant des options de mot de passe sur une instance.

  • Interdire le nom d'utilisateur : empêche d'utiliser 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érifie également si la longueur du mot de passe est valide.

  • Expiration des mots de passe : exigez une rotation périodique des mots de passe.

Pour obtenir la liste des options de règles de mot de passe compatibles avec AlloyDB, consultez Options des règles concernant les mots de passe.

Pour respecter les normes de sécurité et vous aligner sur les conseils de l'outil de recommandation de sécurité, vous devez activer les trois options ensemble en configurant leurs indicateurs d'application principaux sur ON :

  • password.enforce_password_does_not_contain_username
  • password.enforce_complexity
  • password.enforce_expiration

Si vous définissez l'un de ces trois flags sur OFF ou si vous les omettez, l'outil de recommandation de sécurité signale que l'instance n'a pas de règle de mot de passe activée.

Appliquer la complexité des mots de passe

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

  1. Définissez le fag password.enforce_complexity sur ON.
  2. Utilisez les options des règles concernant les mots de passe pour définir vos règles en matière de mots de passe.

Par exemple, pour appliquer une règle de mot de passe qui stipule qu'un mot de passe doit contenir au moins une lettre majuscule, un chiffre et 10 caractères, vous devez définir les options suivantes :

  • Option password.enforce_complexity sur ON

  • Option password.min_uppercase_letters sur 1

  • Option password.min_numerical_chars sur 1

  • Option password.min_pass_length sur 10

Une fois ces options définies, toute tentative de définition d'un mot de passe utilisateur de base de données qui ne respecte pas cette règle échoue. Par exemple, avec cette règle définie, la commande client psql suivante échoue, car le mot de passe foo comporte moins de 10 caractères et ne contient pas de chiffre ni de 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. Définissez le fag password.enforce_expiration sur ON.

  2. Définissez l'option password.expiration_in_days sur le nombre de jours au bout duquel un mot de passe expire.

  3. Définissez le flag 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 de mot de passe.

Par exemple, pour appliquer une règle relative aux mots de passe qui stipule 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 :

  • Option password.enforce_expiration sur ON

  • Option password.expiration_in_days sur 30

  • Option password.notify_expiration_in_days sur 15

Lorsqu'un utilisateur se connecte pendant la période de notification avant l'expiration de son mot de passe, AlloyDB affiche le message suivant dans la connexion client et l'écrit dans postgres.log :

Caution: Password is set to expire soon. Be sure to update the password before the expiration time.

Si le mot de passe d'un utilisateur expire, il ne peut pas se connecter à l'instance AlloyDB. Pour réinitialiser le mot de passe d'un utilisateur, consultez Modifier le mot de passe d'un utilisateur de base de données.

Ne pas autoriser les noms d'utilisateur dans les mots de passe

Pour appliquer la règle qui empêche un mot de passe de contenir un nom d'utilisateur, procédez comme suit :

Par exemple, pour empêcher un mot de passe de contenir un nom d'utilisateur en tant que sous-chaîne, définissez les éléments suivants :

  • Option password.enforce_password_does_not_contain_username sur ON

Si ce flag 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';

Étapes suivantes