Saltar al contenido

¿Qué prácticas recomendadas puedo seguir para que la cuenta de usuario maestra de mi instancia de Amazon RDS para Oracle no se bloquee?

9 minutos de lectura
0

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:

  1. 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.0

    Nota: Sustituye EXAMPLE-USER por la cuenta que tenga el privilegio ALTER USER.

  2. 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.
  3. 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.0

    Tras 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.

OFICIAL DE AWSActualizada hace 2 años
Sin comentarios

Contenido relevante