Ir para o conteúdo

Quais práticas recomendadas eu posso usar para que a conta de usuário mestre da minha instância do Amazon RDS para Oracle não seja bloqueada?

9 minuto de leitura
0

A conta de usuário mestre da minha instância do Amazon Relational Database Services (Amazon RDS) para Oracle está bloqueada. Quero saber o que causou o bloqueio da conta e o que posso fazer para que ela não seja bloqueada novamente.

Resolução

Identifique a causa raiz

Um motivo comum pelo qual a conta de usuário mestre fica bloqueada é porque você configurou os seguintes parâmetros personalizados:

  • FAILED_LOGIN_ATTEMPTS: a conta é bloqueada quando o número de tentativas consecutivas de login fracassadas excede o valor definido para esse parâmetro.
  • PASSWORD_LIFE_TIME: a duração do uso da senha excede o valor definido para esse parâmetro, portanto, não é possível fazer login com a senha. A conta é então marcada como expirada.
    Observação: se você definir um valor de PASSWORD_GRACE_TIME e não alterar a senha dentro do período de carência, a senha expirará e outras conexões serão rejeitadas.
  • INACTIVE_ACCOUNT_TIME: a conta mestre é bloqueada quando você não a usa para fazer login no banco de dados pelo número de dias consecutivos definido para esse parâmetro.
    Observação: o valor mínimo desse parâmetro é de 15 dias. Não há valor máximo.

Para obter mais informações, consulte Create profile (Criar perfil) no site do Oracle.

Para identificar por que a conta está bloqueada, execute o seguinte comando para verificar as configurações atuais do perfil da conta mestre:

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'
    );

Exemplos de cenários

Parâmetro FAILED_LOGIN_ATTEMPTS

Você cria um perfil com o parâmetro FAILED_LOGIN_ATTEMPTS que permite somente uma entrada de senha incorreta. Em seguida, você usa a senha errada para fazer login na conta e recebe o seguinte erro:

"ERROR:
ORA-01017: invalid username/password; logon denied."

Você tenta fazer login novamente. Mas como o parâmetro FAILED_LOGIN_ATTEMPTS está definido como 1, você recebe o seguinte erro:

"ERROR:
ORA-28000: The account is locked."

Parâmetro PASSWORD_LIFE_TIME

Você usa o parâmetro PASSWORD_LIFE_TIME no perfil da sua conta mestre para limitar a duração do uso da senha. Em seguida, você excede o valor definido para esse parâmetro e recebe o seguinte erro:

"ERROR:
ORA-28001: the password has expired."

Desbloqueie a conta

Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Para desbloquear sua conta, use o console do Aurora e do RDS, a AWS CLI ou uma conta de banco de dados diferente.

Console do Aurora e do RDS ou AWS CLI

Primeiro, redefina a senha do usuário administrador da sua instância de banco de dados. Em seguida, é possível desbloquear e reabrir a conta.

Uma conta de banco de dados diferente

Se você tiver outra conta de banco de dados com o privilégio ALTER USER, poderá usar essa conta para desbloquear a conta de usuário mestre.

Para identificar contas com o privilégio ALTER USER, execute o seguinte comando:

 SELECT    grantee,  
    privilege  
FROM  
    dba_sys_privs  
WHERE  
    privilege = 'ALTER USER'  
    AND grantee IN (  
        SELECT  
            username  
        FROM  
            dba_users  
        WHERE  
            oracle_maintained = 'N'  
    );

Exemplo de saída:


GRANTEE                                                                     PRIVILEGE--------------------------------------------------------------------------------------------------------------------------------  
EXAMPLE-USER                                                                ALTER USER

Para identificar contas que concedem o privilégio ALTER USER por meio de um perfil, execute o seguinte 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'

Exemplo de saída:

USERNAME-----------------------------------------------------------------------------------
EXAMPLE-MASTER-USERNAME
RDSADMIN
USER1
EXAMPLE-USER

Observação: como o exemplo é uma conta interna do RDS, RDSADMIN aparece na saída. Ele não aparece na sua saída.

Para desbloquear a conta, conclua as seguintes etapas:

  1. Execute o comando a seguir para conectar-se ao banco de dados com a conta que tem o privilégio 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

    Observação: substitua EXAMPLE-USER pela conta que tem o privilégio ALTER USER.

  2. Execute o comando a seguir para desbloquear a conta de usuário mestre:

    SQL> ALTER USER EXAMPLE-MASTER-USERNAME ACCOUNT UNLOCK;User altered.

    Se a senha expirar, execute o seguinte comando para redefini-la:

    SQL> ALTER USER EXAMPLE-MASTER-USERNAME IDENTIFIED BY EXAMPLE-MASTER-USER-NEW-PWD;User altered.
  3. Para se desconectar do banco de dados e sair do SQL*Plus, execute o seguinte comando:

    SQL> exitDisconnected from Oracle Database 19c
    Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.12.0.0.0

    Depois de fazer login com a conta de usuário mestre, você recebe a seguinte mensagem:

    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"

Não é possível redefinir a senha da sua conta mestre

Sua conta mestre pode ter sido bloqueada de uma redefinição de senha porque você definiu os parâmetros PASSWORD_REUSE_MAX e PASSWORD_VERIFY_FUNCTION.

PASSWORD_REUSE_MAX

Se você usar a mesma senha mais do que o valor definido para o parâmetro PASSWORD_REUSE_MAX, receberá a seguinte mensagem de erro:

"Unable to reset your password. Error information: ORA-28007: the password cannot be reused ORA-06512: at line 1."

Para obter mais informações sobre os eventos mais recentes da sua instância do RDS, consulte Visualizar eventos do Amazon RDS.

Para resolver esse problema, redefina a senha da sua conta mestre para uma que você nunca tenha usado no console do Aurora e do RDS. Se você tiver outra conta de banco de dados com o privilégio ALTER USER, também será possível alterar a senha dessa conta. Para reutilizar a senha sem restrições, atualize o parâmetro PASSWORD_REUSE_MAX do perfil da conta mestre para UNLIMITED.

PASSWORD_VERIFY_FUNCTION

O parâmetro PASSWORD_VERIFY_FUNCTION verifica políticas estritas de senha, como o tamanho mínimo da senha ou a exigência de usar o número mínimo de caracteres. Se você tentar redefinir a senha e ela não atender às regras definidas, você receberá a seguinte mensagem de erro:

"ORA-28003: password verification for the specified password failed."

Para resolver esse problema, certifique-se de que a nova senha atenda às regras definidas no parâmetro PASSOWRD_VERIFY_FUNCTION.

Use o perfil DEFAULT para que a conta do usuário mestre não seja bloqueada

Se as políticas de segurança da sua organização permitirem, use o perfil DEFAULT em vez de um perfil personalizado. O perfil DEFAULT fornece à sua conta de usuário mestre tentativas ilimitadas de login malsucedidas. Além disso, a senha da conta de usuário mestre nunca expira nem é desativada devido à inatividade. No entanto, é uma prática recomendada redefinir periodicamente a senha no console do Aurora e do RDS.

Para visualizar os limites do perfil DEFAULT, execute o seguinte 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'
   );

Exemplo de saída:

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.

Se sua conta mestre tiver um perfil personalizado, alterne a conta para usar o perfil DEFAULT.

Para verificar o perfil atual da sua conta mestre, execute o seguinte comando:

SELECT PROFILE FROM dba_users WHERE USERNAME = 'EXAMPLE-MASTER-USERNAME';

Para alterar o perfil da sua conta mestre para DEFAULT, execute o seguinte comando:

SQL> ALTER USER EXAMPLE-MASTER-USERNAME PROFILE default;User altered.

Observação: se você modificou os parâmetros de senha do seu perfil DEFAULT que podem afetar o login, redefina o perfil DEFAULT para as configurações de fábrica. Para redefinir para as configurações de fábrica, execute o seguinte comando:

SQL> ALTER PROFILE default LIMIT  failed_login_attempts UNLIMITED password_life_time UNLIMITED  inactive_account_time UNLIMITED;
Profile altered.

Se sua organização tiver políticas que exijam que você redefina a senha da conta mestre com configurações restritas, use as seguintes práticas recomendadas:

  • Use o console do Aurora e do RDS para redefinir periodicamente a senha antes que ela expire.
  • Se você tiver um parâmetro PASSWORD_VERIFY_FUNCTION com requisitos rígidos para verificação de senha, cumpra esses requisitos ao configurar a nova senha.
  • Use sua conta de usuário mestre com base no parâmetro INACTIVE_ACCOUNT_TIME para que a conta permaneça ativada.
  • Use o Secrets Manager para gerenciar senhas de usuário mestre das suas instâncias de banco de dados e clusters de banco de dados multi-AZ.

Rastreie tentativas de login malsucedidas

Para rastrear tentativas de login que não são válidas, modifique o parâmetro AUDIT_TRAIL de inicialização do Oracle para db no grupo de parâmetros personalizado da instância de banco de dados. Para obter mais informações, consulte AUDIT_TRAIL no site do Oracle.

Se sua instância de banco de dados usa um grupo de parâmetros padrão, não é possível alterar os valores dos parâmetros. Você deve criar um novo grupo de parâmetros personalizado, definir o valor do parâmetro e anexar o novo grupo de parâmetros à sua instância. Em seguida, reinicialize a instância para associar o novo grupo de parâmetros à instância. Para obter mais informações, consulte Como modificar os valores de um grupo de parâmetros de banco de dados do Amazon RDS?

Depois de modificar o parâmetro no grupo de parâmetros personalizado, você deve reinicializar sua instância de banco de dados para que o banco de dados do RDS para Oracle entre em vigor.

Depois que o status da sua instância do RDS estiver available, faça login no banco de dados com a conta mestre ou qualquer conta com o privilégio AUDIT_TRAIL. Se você não ativou a auditoria para tentativas malsucedidas de login, execute o seguinte comando para ativá-la:

AUDIT SESSION WHENEVER NOT SUCCESSFUL;

Em seguida, execute o seguinte comando para rastrear as tentativas de login malsucedidas da sua conta mestre:

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';

Observação: para rastrear os dados de tentativas de login malsucedidas de todas as suas contas de banco de dados, remova o EXAMPLE-USER da cláusula WHERE no comando anterior.

AWS OFICIALAtualizada há 2 anos