Como faço para evitar que a conta de usuário primário da minha instância de banco de dados do Amazon RDS for Oracle seja bloqueada?

10 minuto de leitura
0

Quero impedir que a conta de usuário primário da minha instância de banco de dados do Amazon Relational Database Services (Amazon RDS) for Oracle seja bloqueada.

Resolução

A conta de usuário primário no Amazon RDS é vital para monitorar, gerenciar e executar tarefas administrativas para operar sua instância de banco de dados. Essa conta é sua primeira conta de banco de dados e inclui as funções administrativas e os privilégios necessários para manter e operar seu banco de dados. Para obter a lista completa de privilégios e funções que o usuário primário obtém para cada mecanismo de banco de dados, consulte Privilégios da conta de usuário primário. Se a conta de usuário primário for bloqueada e você não conseguir fazer login, suas habilidades administrativas serão interrompidas e suas operações comerciais essenciais poderão ser afetadas. Você pode usar o console do Amazon RDS ou uma conta de banco de dados diferente para recuperar o acesso à sua conta primária.

Identificar a causa raiz

Um dos motivos comuns para o bloqueio da conta de usuário primário é a aplicação de configurações de perfil personalizadas à conta primária. Algumas dessas configurações incluem o seguinte:

  • FAILED_LOGIN_ATTEMPTS: quando o número de tentativas consecutivas com falha de login na conta primária exceder o valor definido para esse parâmetro, a conta será bloqueada.
  • PASSWORD_LIFE_TIME: quando a duração do uso de uma determinada senha exceder o valor definido para esse parâmetro, você não poderá fazer login na conta usando essa senha e a conta será marcada como expirada. É necessário redefinir a senha para fazer login novamente. Se você definir um valor para PASSWORD_GRACE_TIME e a senha não for alterada dentro do período de carência, a senha expirará e outras conexões serão rejeitadas.
  • INACTIVE_ACCOUNT_TIME: se a conta primária não fizer login no banco de dados pelo número de dias consecutivos definido por esse parâmetro, a conta será bloqueada. O valor mínimo para esse parâmetro é de 15 dias. Não há valor máximo.

Para obter mais informações sobre parâmetros de senha, consulte a documentação da Oracle referente a password_parameters.

Execute a consulta a seguir para verificar as configurações de perfil atuais da conta de usuário primário e identificar porque a conta está bloqueada:

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:

Suponha que você crie um perfil com uma configuração FAILED_LOGIN_ATTEMPTS que permite apenas uma entrada de senha incorreta.

SQL> CREATE PROFILE sec_profile LIMIT FAILED_LOGIN_ATTEMPTS 1;
Profile created.

Você pode aplicar esse perfil ao usuário primário executando a seguinte consulta:

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

Desconecte-se do banco de dados e saia do SQL*Plus:

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0

Faça login na conta com a senha incorreta:

bash-4.2$ sqlplus EXAMPLE-MASTER-USERNAME@ora
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 14 13:16:33 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied

Outros logins não são permitidos porque FAILED_LOGIN_ATTEMPTS está definido como 1. Em vez disso, você recebe a seguinte mensagem de erro:

bash-4.2$ sqlplus EXAMPLE-MASTER-USERNAME@ora
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 14 13:16:44 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
ERROR:
ORA-28000: The account is locked.

Quando a conta primária é limitada pelo parâmetro PASSWORD_LIFE_TIME e a duração do uso da mesma senha excede o valor definido para esse parâmetro, você verá a mensagem de erro abaixo ao tentar fazer login:

-bash-4.2$ sqlplus EXAMPLE-MASTER-USERNAME@ora
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 14 20:14:03 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
ERROR:
ORA-28001: the password has expired

Desbloqueie a conta primária

Você pode desbloquear a conta primária usando uma das seguintes maneiras:

Usar o console do Amazon RDS ou a AWS Command Line Interface (AWS CLI)

Ao redefinir a senha, você pode desbloquear a conta e reabri-la após a expiração. Para obter mais informações, consulte Como redefinir a senha de usuário primário da minha instância de banco de dados do Amazon RDS para desbloquear o usuário primário?

Usar uma conta de banco de dados diferente

Se você já tiver outra conta de banco de dados (por exemplo, EXAMPLE-USER) com o privilégio ALTER USER, essa conta poderá ser usada para desbloquear a conta de usuário primário.

Identifique contas com o privilégio ALTER USER executando a seguinte consulta:

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

A saída será semelhante à seguinte:

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

Execute a seguinte consulta para identificar contas para as quais o privilégio é concedido por meio de uma função:

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'

A saída será semelhante à seguinte:

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

Observação: ignore o RDSADMIN da saída porque é uma conta interna do RDS.

Conecte-se ao banco de dados usando a conta EXAMPLE-USER:

-bash-4.2$ sqlplus EXAMPLE-USER@ora
SQL*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

Desbloqueie a conta de usuário primário executando a seguinte consulta:

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

Se a senha expirar, redefina a senha executando a seguinte consulta:

SQL> ALTER USER EXAMPLE-MASTER-USERNAME IDENTIFIED BY EXAMPLE-MASTER-USER-NEW-PWD;
User altered.

Desconecte-se do banco de dados EXAMPLE-USER e saia do SQL*Plus:

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0

Você pode fazer um login bem-sucedido com a conta de usuário primário. Você verá a seguinte mensagem:

bash-4.2$ sqlplus EXAMPLE-MASTER-USERNAME@ora
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 14 13:36:36 2021
Version 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:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0
SQL> SHOW USER;
USER is "EXAMPLE-MASTER-USERNAME"

Não é possível redefinir a senha da sua conta primária: sua conta primária pode ser impedida de redefinir a senha em determinadas situações:

Exemplo 1:

Se você usar a mesma senha para a conta primária mais do que o número de vezes definido pelo parâmetro PASSWORD_REUSE_MAX, verá o seguinte evento no console do Amazon RDS:

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

Para ver 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 primária para uma nova senha que não era usada no passado usando o console do Amazon RDS. Além disso, se você tiver outra conta de banco de dados com o privilégio ALTER USER, poderá efetuar login nessa conta e alterar a senha. Se permitido, atualize o parâmetro PASSWORD_REUSE_MAX do perfil da conta primária para UNLIMITED para poder reutilizar a senha qualquer número de vezes.

Exemplo 2:

Suponha que a conta primária tenha a configuração do parâmetro PASSWORD_VERIFY_FUNCTION que verifica políticas de senha rígidas, como o tamanho mínimo da senha ou o requisito de usar o número mínimo de caracteres. Você pode receber o seguinte erro ao tentar redefinir a senha e a senha não atender às regras definidas:

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.

Impedir que a conta de usuário primário seja bloqueada

Se as políticas de segurança da sua organização permitirem, evite definir perfis personalizados para sua conta de usuário primário do RDS e mantenha o perfil DEFAULT. Com o perfil DEFAULT, sua conta de usuário primário é fornecida com tentativas ilimitadas de login com falha. Além disso, a senha da conta de usuário primário nunca expira ou é desativada devido à inatividade. No entanto, é uma prática recomendada redefinir a senha periodicamente usando o console do Amazon RDS.

Você pode visualizar os limites do perfil DEFAULT executando a seguinte consulta:

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

A saída será semelhante à seguinte:

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 primária tiver um perfil personalizado, mude a conta para usar o perfil DEFAULT.

Verifique o perfil atual da sua conta primária executando a seguinte consulta:

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

Altere o perfil da sua conta primária para DEFAULT executando a seguinte consulta:

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

Observação: se os parâmetros de senha do perfil DEFAULT foram modificados, redefina o perfil DEFAULT para as configurações de fábrica para restabelecer parâmetros que possam afetar o login. Para isso, 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 a redefinição de senha da conta primária com configurações restritas, siga as seguintes práticas recomendadas:

  • Redefina a senha periodicamente usando o console do Amazon RDS antes que ela expire devido à configuração PASSWORD_LIFE_TIME.
  • Se você tiver um parâmetro PASSWORD_VERIFY_FUNCTION com requisitos rígidos quanto à verificação de senha, cumpra esses requisitos ao configurar a nova senha.
  • Use sua conta de usuário primário com base na configuração INACTIVE_ACCOUNT_TIME para que a conta permaneça ativada.

Monitorar tentativas de login com falha

Você pode rastrear as tentativas de login inválidas em sua conta primária usando o recurso de auditoria no Oracle. Você pode fazer isso modificando o parâmetro de inicialização do Oracle audit_trail para db na instância do RDS for Oracle. Esse parâmetro pode ser modificado no grupo de parâmetros personalizado da instância de banco de dados.

Se a instância do RDS for Oracle usar um grupo de parâmetros padrão, não será 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 grupo de parâmetros recém-criado à sua instância. Em seguida, reinicialize a instância para associar o novo grupo de parâmetros a ela. Para obter mais informações, consulte Como modifico os valores de um grupo de parâmetros de banco de dados do Amazon RDS?

Você deve reinicializar sua instância do RDS depois de modificar o parâmetro no grupo de parâmetros personalizado. Isso ocorre porque o parâmetro audit_trail é estático e requer a reinicialização do banco de dados do RDS for Oracle para entrar em vigor. Para mais informações, consulte Reinicializar uma instância de banco de dados.

Depois que o status da Instância do RDS estiver disponível, faça login no banco de dados usando a conta primária ou qualquer conta com o privilégio de auditoria. Execute o seguinte comando para ativar a auditoria de tentativas de login malsucedidas se ainda não tiver feito isso:

AUDIT SESSION WHENEVER NOT SUCCESSFUL;

Em seguida, execute a seguinte consulta para monitorar as tentativas de login malsucedidas ou com falha da sua conta primária.

Observação: você pode monitorar esses dados em relação a qualquer conta de banco de dados removendo EXAMPLE-USER da cláusula WHERE.

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

Documentação da Oracle referente a CRIAR PERFIL


AWS OFICIAL
AWS OFICIALAtualizada há 2 anos