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?
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
Conteúdo relevante
- feita há 9 diaslg...
- Resposta aceitafeita há 7 diaslg...
- feita há 9 diaslg...
- feita há 23 diaslg...
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 7 meses
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há um ano