Quelles bonnes pratiques puis-je utiliser pour que le compte utilisateur principal de mon instance Amazon RDS pour Oracle ne soit pas verrouillé ?
Le compte utilisateur principal de mon instance Amazon Relational Database Services (Amazon RDS) pour Oracle est verrouillé. Je souhaite savoir ce qui a causé le verrouillage du compte et ce que je peux faire pour qu'il ne soit pas verrouillé à nouveau.
Résolution
Identifier la cause première
Le verrouillage du compte utilisateur principal est souvent dû au fait que vous avez configuré les paramètres personnalisés suivants :
- FAILED_LOGIN_ATTEMPTS : le compte est verrouillé lorsque le nombre de tentatives de connexion infructueuses consécutives dépasse la valeur définie pour ce paramètre.
- PASSWORD_LIFE_TIME : la durée d'utilisation du mot de passe dépasse la valeur définie pour ce paramètre. Vous ne pouvez donc pas vous connecter avec le mot de passe. Le compte est alors marqué comme expiré.
Remarque : si vous définissez une valeur PASSWORD_GRACE_TIME et que vous ne modifiez pas le mot de passe dans le délai de grâce, le mot de passe expire et les autres connexions sont rejetées. - INACTIVE_ACCOUNT_TIME : le compte principal est verrouillé lorsque vous ne l'utilisez pas pour vous connecter à la base de données pendant le nombre de jours consécutifs défini pour ce paramètre.
Remarque : la valeur minimale de ce paramètre est de 15 jours. Il n'y a pas de valeur maximale.
Pour plus d'informations, consultez la page Créer un profil sur le site Web d'Oracle.
Pour identifier la raison pour laquelle le compte est verrouillé, exécutez la commande suivante pour vérifier les paramètres de profil actuels du compte principal :
SELECT profile, resource_name, limit FROM dba_profiles WHERE resource_type = 'PASSWORD' AND profile IN ( SELECT profile FROM dba_users WHERE username = 'EXAMPLE-MASTER-USERNAME' );
Exemples de scénarios
Paramètre FAILED_LOGIN_ATTEMPTS
Vous créez un profil avec le paramètre FAILED_LOGIN_ATTEMPTS qui n'autorise qu'une seule saisie de mot de passe incorrect. Vous utilisez ensuite le mauvais mot de passe pour vous connecter au compte et vous recevez le message d'erreur suivant :
« ERROR:
ORA-01017: invalid username/password; logon denied. »
Vous essayez de vous reconnecter. Cependant, comme le paramètre FAILED_LOGIN_ATTEMPTS est défini sur 1, l'erreur suivante s'affiche :
« ERROR:
ORA-28000: The account is locked. »
Paramètre PASSWORD_LIFE_TIME
Vous utilisez le paramètre PASSWORD_LIFE_TIME dans le profil de votre compte principal pour limiter la durée d'utilisation du mot de passe. Vous dépassez ensuite la valeur définie pour ce paramètre et le message d'erreur suivant s'affiche :
« ERROR:
ORA-28001: the password has expired. »
Déverrouiller le compte
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Pour déverrouiller votre compte, utilisez la console Aurora et RDS, l'AWS CLI ou un autre compte de base de données.
Console Aurora et RDS ou AWS CLI
Tout d'abord, réinitialisez le mot de passe administrateur de votre instance de base de données. Vous pouvez ensuite déverrouiller et rouvrir le compte.
Un compte de base de données différent
Si vous disposez d’un autre compte de base de données avec le privilège ALTER USER, vous pouvez utiliser ce compte pour déverrouiller le compte utilisateur principal.
Pour identifier les comptes dotés du privilège ALTER USER, exécutez la commande suivante :
SELECT grantee, privilege FROM dba_sys_privs WHERE privilege = 'ALTER USER' AND grantee IN ( SELECT username FROM dba_users WHERE oracle_maintained = 'N' );
Exemple de sortie :
GRANTEE PRIVILEGE-------------------------------------------------------------------------------------------------------------------------------- EXAMPLE-USER ALTER USER
Pour identifier les comptes qui accordent le privilège ALTER USER via un rôle, exécutez la commande suivante :
SELECT DISTINCT dba_users.username FROM dba_role_privs JOIN dba_users ON dba_role_privs.grantee = dba_users.username AND granted_role IN ( SELECT role FROM role_sys_privs WHERE privilege = 'ALTER USER' ) AND dba_users.oracle_maintained = 'N'
Exemple de sortie :
USERNAME----------------------------------------------------------------------------------- EXAMPLE-MASTER-USERNAME RDSADMIN USER1 EXAMPLE-USER
Remarque : comme l'exemple est un compte interne RDS, RDSADMIN apparaît dans la sortie. Il n'apparaît pas dans votre sortie.
Pour déverrouiller le compte, procédez comme suit :
-
Exécutez la commande suivante pour vous connecter à la base de données avec le compte doté du privilège ALTER USER :
-bash-4.2$ sqlplus EXAMPLE-USER@oraSQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 14 13:35:55 2021 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Last Successful login time: Tue Sep 14 2021 13:33:23 +00:00 Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.12.0.0.0Remarque : remplacez EXAMPLE-USER par le compte qui possède le privilège ALTER USER.
-
Exécutez la commande suivante pour déverrouiller le compte utilisateur principal :
SQL> ALTER USER EXAMPLE-MASTER-USERNAME ACCOUNT UNLOCK;User altered.Si le mot de passe a expiré, exécutez la commande suivante pour le réinitialiser :
SQL> ALTER USER EXAMPLE-MASTER-USERNAME IDENTIFIED BY EXAMPLE-MASTER-USER-NEW-PWD;User altered. -
Pour vous déconnecter de la base de données et quitter SQL*Plus, exécutez la commande suivante :
SQL> exitDisconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.12.0.0.0Une fois connecté avec le compte utilisateur principal, le message suivant s'affiche :
bash-4.2$ sqlplus EXAMPLE-MASTER-USERNAME@oraSQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 14 13:36:36 2021Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Last Successful login time: Tue Sep 14 2021 13:35:12+00:00Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.12.0.0.0SQL> SHOW USER;USER is "EXAMPLE-MASTER-USERNAME"
Vous ne pouvez pas réinitialiser le mot de passe de votre compte principal
La réinitialisation du mot de passe de votre compte principal est peut-être bloquée parce que vous avez défini les paramètres PASSWORD_REUSE_MAX et PASSWORD_VERIFY_FUNCTION.
PASSWORD_REUSE_MAX
Si vous utilisez le même mot de passe en plus de la valeur que vous avez définie pour le paramètre PASSWORD_REUSE_MAX, le message d'erreur suivant s'affiche :
« Unable to reset your password. Error information: ORA-28007: the password cannot be reused ORA-06512: at line 1. »
Pour plus d'informations sur les derniers événements relatifs à votre instance RDS, consultez la section Consultation des événements Amazon RDS.
Pour résoudre ce problème, réinitialisez le mot de passe de votre compte principal à un mot de passe que vous n'avez jamais utilisé pour la console Aurora et RDS. Si vous possédez un autre compte de base de données avec le privilège ALTER USER, vous pouvez également modifier le mot de passe depuis ce compte. Pour réutiliser le mot de passe sans restriction, mettez à jour le paramètre PASSWORD_REUSE_MAX du profil du compte principal sur UNLIMITED.
PASSWORD_VERIFY_FUNCTION
Le paramètre PASSWORD_VERIFY_FUNCTION vérifie les politiques de mot de passe strictes, telles que la longueur minimale du mot de passe ou l'obligation d'utiliser un nombre minimum de caractères. Si vous tentez de réinitialiser le mot de passe et que celui-ci ne répond pas aux règles définies, le message d'erreur suivant s'affiche :
« ORA-28003: password verification for the specified password failed. »
Pour résoudre ce problème, assurez-vous que le nouveau mot de passe respecte les règles que vous avez définies dans votre paramètre PASSOWRD_VERIFY_FUNCTION.
Utiliser le profil DEFAULT pour que le compte utilisateur principal ne soit pas verrouillé
Si les politiques de sécurité de votre organisation le permettent, utilisez le profil DEFAULT plutôt qu’un profil personnalisé. Le profil DEFAULT fournit à votre compte utilisateur principal un nombre illimité de tentatives de connexion infructueuses. De plus, le mot de passe du compte utilisateur principal n'expire jamais ou est désactivé pour cause d'inactivité. Cependant, il est recommandé de réinitialiser régulièrement le mot de passe sur la console Aurora et RDS.
Pour afficher les limites du profil DEFAULT, exécutez la commande suivante :
SELECT resource_name, limit FROM dba_profiles WHERE resource_type = 'PASSWORD' AND profile = 'DEFAULT' AND resource_name IN ( 'FAILED_LOGIN_ATTEMPTS', 'PASSWORD_LIFE_TIME', 'PASSWORD_VERIFY_FUNCTION', 'INACTIVE_ACCOUNT_TIME', 'PASSWORD_REUSE_TIME', 'PASSWORD_REUSE_MAX' );
Exemple de sortie :
RESOURCE_NAME LIMIT-------------------------------- -------------------------------------------------------------------------------------------------------------------------------- FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED PASSWORD_REUSE_TIME UNLIMITED PASSWORD_REUSE_MAX UNLIMITED PASSWORD_VERIFY_FUNCTION NULL INACTIVE_ACCOUNT_TIME UNLIMITED 6 rows selected.
Si votre compte principal possède un profil personnalisé, changez de compte pour utiliser le profil DEFAULT.
Pour vérifier le profil actuel de votre compte principal, exécutez la commande suivante :
SELECT PROFILE FROM dba_users WHERE USERNAME = 'EXAMPLE-MASTER-USERNAME';
Pour modifier le profil de votre compte principal en DEFAULT, exécutez la commande suivante :
SQL> ALTER USER EXAMPLE-MASTER-USERNAME PROFILE default;User altered.
Remarque : si vous avez modifié les paramètres de mot de passe de votre profil DEFAULT susceptibles d'affecter la connexion, réinitialisez le profil DEFAULT aux paramètres d'usine. Pour rétablir les paramètres d'usine, exécutez la commande suivante :
SQL> ALTER PROFILE default LIMIT failed_login_attempts UNLIMITED password_life_time UNLIMITED inactive_account_time UNLIMITED; Profile altered.
Si les politiques de votre organisation vous obligent à réinitialiser le mot de passe du compte principal avec des paramètres restreints, appliquez les bonnes pratiques suivantes :
- Utilisez la console Aurora et RDS pour réinitialiser régulièrement le mot de passe avant son expiration.
- Si vous disposez d'un paramètre PASSWORD_VERIFY_FUNCTION avec des exigences strictes en matière de vérification du mot de passe, respectez ces exigences lorsque vous configurez le nouveau mot de passe.
- Utilisez votre compte utilisateur principal en fonction du paramètre INACTIVE_ACCOUNT_TIME afin que le compte reste activé.
- Utilisez Secrets Manager pour gérer les mots de passe des utilisateurs principaux de vos instances de bases de données et de vos clusters de bases de données multi-AZ.
Suivre les tentatives de connexion infructueuses
Pour suivre les tentatives de connexion non valides, modifiez le paramètre d'initialisation Oracle AUDIT_TRAIL en db dans le groupe de paramètres personnalisés de l'instance de base de données. Pour plus d'informations, consultez la page AUDIT_TRAIL sur le site Web d'Oracle.
Si votre instance de base de données utilise un groupe de paramètres par défaut, vous ne pouvez pas modifier les valeurs des paramètres. Vous devez créer un nouveau groupe de paramètres personnalisé, définir la valeur du paramètre et associer le nouveau groupe de paramètres à votre instance. Puis, redémarrez l'instance pour associer le nouveau groupe de paramètres à l'instance. Pour plus d'informations, consultez la section Comment puis-je modifier les valeurs d'un groupe de paramètres de base de données Amazon RDS ?
Après avoir modifié le paramètre dans le groupe de paramètres personnalisés, vous devez redémarrer votre instance de base de données pour que la base de données RDS pour Oracle prenne effet.
Une fois que l'état de votre instance RDS est disponible, connectez-vous à la base de données avec le compte principal ou tout autre compte doté du privilège AUDIT_TRAIL. Si vous n'avez pas activé l'audit pour détecter les tentatives de connexion infructueuses, exécutez la commande suivante pour l'activer :
AUDIT SESSION WHENEVER NOT SUCCESSFUL;
Puis, exécutez la commande suivante pour suivre les tentatives de connexion infructueuses ou non abouties effectuées par votre compte principal :
SELECT username, os_username, userhost, TO_CHAR(timestamp, 'MON-DD-YYYY HH24:MI:SS') what_time FROM dba_audit_trail WHERE returncode = 1017 AND username = 'EXAMPLE-USER';
Remarque : pour suivre les données des tentatives de connexion infructueuses pour tous vos comptes de base de données, supprimez l'**EXAMPLE-USER ** de la clause WHERE de la commande précédente.
- Sujets
- Database
- Langue
- Français

This article was reviewed and updated on 2024-08-13.
Contenus pertinents
demandé il y a un an
demandé il y a 4 ans
AWS OFFICIELA mis à jour il y a 3 ans