AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
¿Qué prácticas recomendadas puedo seguir para que la cuenta de usuario maestra de mi instancia de Amazon RDS para Oracle no se bloquee?
La cuenta de usuario maestra de mi instancia de Amazon Relational Database Services (Amazon RDS) para Oracle está bloqueada. Quiero saber qué provocó el bloqueo de la cuenta y qué puedo hacer para que no se vuelva a bloquear.
Resolución
Identificación de la causa raíz
Un motivo habitual por el que se bloquea la cuenta de usuario maestra es porque se han configurado los siguientes parámetros personalizados:
- FAILED_LOGIN_ATTEMPTS: La cuenta se bloquea cuando el número de intentos de inicio de sesión fallidos consecutivos supera el valor establecido para este parámetro.
- PASSWORD_LIFE_TIME: La duración del uso de la contraseña supera el valor establecido para este parámetro, por lo que no puedes iniciar sesión con la contraseña. A continuación, la cuenta se marca como vencida.
Nota: Si estableces un valor PASSWORD_GRACE_TIME y no cambias la contraseña durante el periodo de gracia, la contraseña vencerá y se rechazarán más conexiones. - INACTIVE_ACCOUNT_TIME: La cuenta maestra se bloquea cuando no se usa para iniciar sesión en la base de datos durante el número de días consecutivos establecido para este parámetro.
Nota: El valor mínimo para este parámetro es de 15 días. No hay un valor máximo.
Para obtener más información, consulta Create profile (Crear perfil) en el sitio web de Oracle.
Para identificar el motivo por el que la cuenta está bloqueada, ejecuta el siguiente comando para comprobar la configuración actual del perfil de la cuenta maestra:
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' );
Ejemplos de escenarios
Parámetro FAILED_LOGIN_ATTEMPTS
Se crea un perfil con el parámetro FAILED_LOGIN_ATTEMPTS que solo permite introducir una contraseña incorrecta. A continuación, utilizas una contraseña incorrecta para iniciar sesión en la cuenta y recibes el siguiente error:
"ERROR:
ORA-01017: invalid username/password; logon denied."
Intentas iniciar sesión de nuevo. Sin embargo, dado que el parámetro FAILED_LOGIN_ATTEMPTS está establecido en 1, recibirás el siguiente error:
"ERROR:
ORA-28000: The account is locked."
Parámetro PASSWORD_LIFE_TIME
Utiliza el parámetro PASSWORD_LIFE_TIME en el perfil de tu cuenta maestra para limitar la duración del uso de la contraseña. A continuación, superas el valor establecido para este parámetro y recibes el siguiente error:
"ERROR:
ORA-28001: the password has expired."
Desbloqueo de la cuenta
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de errores de la AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Para desbloquear tu cuenta, utiliza la consola de Aurora y RDS, la AWS CLI o una cuenta de base de datos diferente.
Consola de Aurora y RDS o AWS CLI
En primer lugar, restablece la contraseña del usuario administrador de la instancia de base de datos. A continuación, puedes desbloquear y volver a abrir la cuenta.
Una cuenta de base de datos diferente
Si tienes otra cuenta de base de datos con el privilegio ALTER USER, puedes usar esta cuenta para desbloquear la cuenta de usuario maestra.
Para identificar las cuentas con el privilegio ALTER USER, ejecuta el siguiente comando:
SELECT grantee, privilege FROM dba_sys_privs WHERE privilege = 'ALTER USER' AND grantee IN ( SELECT username FROM dba_users WHERE oracle_maintained = 'N' );
Resultado de ejemplo:
GRANTEE PRIVILEGE-------------------------------------------------------------------------------------------------------------------------------- EXAMPLE-USER ALTER USER
Para identificar las cuentas que otorgan el privilegio ALTER USER a través de un rol, ejecuta el siguiente comando:
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'
Resultado de ejemplo:
USERNAME----------------------------------------------------------------------------------- EXAMPLE-MASTER-USERNAME RDSADMIN USER1 EXAMPLE-USER
Nota: Como el ejemplo es una cuenta interna de RDS, RDSADMIN aparece en el resultado. No aparece en el resultado.
Para desbloquear la cuenta, sigue estos pasos:
-
Ejecuta el siguiente comando para conectarte a la base de datos con la cuenta que tiene el privilegio 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.0Nota: Sustituye EXAMPLE-USER por la cuenta que tenga el privilegio ALTER USER.
-
Ejecuta el siguiente comando para desbloquear la cuenta de usuario maestra:
SQL> ALTER USER EXAMPLE-MASTER-USERNAME ACCOUNT UNLOCK;User altered.Si la contraseña ha vencido, ejecuta el siguiente comando para restablecerla:
SQL> ALTER USER EXAMPLE-MASTER-USERNAME IDENTIFIED BY EXAMPLE-MASTER-USER-NEW-PWD;User altered. -
Para desconectarte de la base de datos y salir de SQL*Plus, ejecuta el siguiente comando:
SQL> exitDisconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.12.0.0.0Tras iniciar sesión con la cuenta de usuario maestra, recibirás el siguiente mensaje:
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"
No puedes restablecer la contraseña de tu cuenta maestra
Es posible que tu cuenta maestra no pueda restablecer la contraseña porque has establecido los parámetros PASSWORD_REUSE_MAX y PASSWORD_VERIFY_FUNCTION.
PASSWORD_REUSE_MAX
Si utilizas la misma contraseña más que el valor que estableciste para el parámetro PASSWORD_REUSE_MAX, recibirás el siguiente error:
"Unable to reset your password. Error information: ORA-28007: the password cannot be reused ORA-06512: at line 1."
Para obtener más información sobre los eventos más recientes de tu instancia de RDS, consulta Visualización de eventos de Amazon RDS.
Para resolver este problema, restablece la contraseña de tu cuenta maestra a una que nunca hayas usado para la consola de Aurora y RDS. Si tienes otra cuenta de base de datos con el privilegio ALTER USER, también puedes cambiar la contraseña de esa cuenta. Para reutilizar la contraseña sin restricciones, actualiza el parámetro PASSWORD_REUSE_MAX del perfil de la cuenta maestra a UNLIMITED.
PASSWORD_VERIFY_FUNCTION
El parámetro PASSWORD_VERIFY_FUNCTION verifica las políticas de contraseñas estrictas, como la longitud mínima de la contraseña o el requisito de usar el número mínimo de caracteres. Si intentas restablecer la contraseña y esta no cumple las reglas definidas, recibirás el siguiente error:
"ORA-28003: password verification for the specified password failed."
Para resolver este problema, asegúrate de que la nueva contraseña cumpla con las reglas que definiste en el parámetro PASSOWRD_VERIFY_FUNCTION.
Uso del perfil DEFAULT para que la cuenta de usuario maestra no se bloquee
Si las políticas de seguridad de tu organización lo permiten, utiliza el perfil DEFAULT en lugar de un perfil personalizado. El perfil DEFAULT proporciona a tu cuenta de usuario maestra un número ilimitado de intentos fallidos de inicio de sesión. Además, la contraseña de la cuenta de usuario maestra nunca vence ni se desactiva por inactividad. Sin embargo, se recomienda restablecer periódicamente la contraseña en la consola de Aurora y RDS.
Para ver los límites del perfil DEFAULT, ejecuta el siguiente comando:
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' );
Resultado de ejemplo:
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 tu cuenta maestra tiene un perfil personalizado, cambia la cuenta para usar el perfil DEFAULT.
Para comprobar el perfil actual de tu cuenta maestra, ejecuta el siguiente comando:
SELECT PROFILE FROM dba_users WHERE USERNAME = 'EXAMPLE-MASTER-USERNAME';
Para cambiar el perfil de tu cuenta maestra a DEFAULT, ejecuta el siguiente comando:
SQL> ALTER USER EXAMPLE-MASTER-USERNAME PROFILE default;User altered.
Nota: Si has modificado los parámetros de contraseña de tu perfil DEFAULT que podrían afectar al inicio de sesión, restablece el perfil DEFAULT a la configuración de fábrica. Para restablecer la configuración de fábrica, ejecuta el siguiente comando:
SQL> ALTER PROFILE default LIMIT failed_login_attempts UNLIMITED password_life_time UNLIMITED inactive_account_time UNLIMITED; Profile altered.
Si tu organización tiene políticas que requieren que restablezcas la contraseña de la cuenta maestra con configuraciones restringidas, sigue estas prácticas recomendadas:
- Usa la consola de Aurora y RDS para restablecer periódicamente la contraseña antes de que venza.
- Si tienes un parámetro PASSWORD_VERIFY_FUNCTION con requisitos estrictos para la verificación de la contraseña, respeta estos requisitos al configurar la nueva contraseña.
- Utiliza tu cuenta de usuario maestra en función del parámetro INACTIVE_ACCOUNT_TIME para que la cuenta permanezca activada.
- Usa Secrets Manager para administrar las contraseñas de usuario maestras para tus instancias de base de datos y clústeres de bases de datos multi-AZ.
Seguimiento de intentos fallidos de inicio de sesión
Para realizar un seguimiento de los intentos de inicio de sesión que no son válidos, modifica el parámetro AUDIT_TRAIL de inicialización de Oracle a db en el grupo de parámetros personalizados de la instancia de base de datos. Para obtener más información, consulta AUDIT_TRAIL en el sitio web de Oracle.
Si tu instancia de base de datos usa un grupo de parámetros predeterminado, no podrás cambiar los valores de los parámetros. Debes crear un nuevo grupo de parámetros personalizado, establecer el valor del parámetro y adjuntar el nuevo grupo de parámetros a tu instancia. A continuación, reinicia la instancia para asociar el nuevo grupo de parámetros a la instancia. Para obtener más información, consulta ¿Cómo modifico los valores de un grupo de parámetros de base de datos de Amazon RDS?
Tras modificar el parámetro en el grupo de parámetros personalizados, debes reiniciar la instancia de base de datos para que la base de datos de RDS para Oracle surta efecto.
Cuando el estado de la instancia de RDS sea disponible, inicia sesión en la base de datos con la cuenta maestra o con cualquier cuenta con el privilegio AUDIT_TRAIL. Si no has activado la auditoría para los intentos fallidos de inicio de sesión, ejecuta el siguiente comando para activarla:
AUDIT SESSION WHENEVER NOT SUCCESSFUL;
A continuación, ejecuta el siguiente comando para realizar un seguimiento de los intentos de inicio de sesión incorrectos o fallidos de tu cuenta maestra:
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';
Nota: Para realizar un seguimiento de los datos de los intentos de inicio de sesión fallidos de todas las cuentas de la base de datos, elimina EXAMPLE-USER de la cláusula WHERE del comando anterior.
- Temas
- Database
- Idioma
- Español

Contenido relevante
preguntada hace un año
- Respuesta aceptada
preguntada hace un año