No interesse de manter o banco de dados o mais seguro possível, gostaria de bloquear as contas SYS e SYSTEM para que ninguém possa fazer login com elas.
Assumindo que:
- Não há scripts/cron jobs do sistema operacional fazendo login como SYS ou SYSTEM
- Não há aplicativos ou utilitários externos usando nenhuma dessas contas
- Sempre posso fazer login "/ como sysdba" com a conta do sistema operacional adequada
O bloqueio dessas duas contas terá algum efeito adverso? Alguém já fez isso antes que possa comentar se é uma boa ideia ou não?
Bloqueie ambos (
SYS
eSYSTEM
). Você não precisa usá-los no dia-a-dia, nada vai quebrar.No dia a dia, você deve usar contas de usuário nomeadas que tenham
SYSDBA
ouSYSOPER
.Tom Kyte recomenda fazê-lo , então você sempre pode culpá-lo se algo der errado :-)
SYSTEM
pode ser bloqueado sem quaisquer dificuldades.SYS
é diferente embora. Você não pode bloqueá-lo, mesmo que possa, não pode.Você pode desabilitar logins remotos
SYS
definindoremote_login_passwordfile
comonone
, então apenas logins locais são permitidos. Isso impedirá o uso do Data Guard, por exemplo.Você também pode prevenir
'/ as sysdba'
definindoSQLNET.AUTHENTICATION_SERVICES=(none)
emsqlnet.ora
.Por fim, você pode se bloquear completamente combinando o acima com a exclusão do arquivo de senha de
$ORACLE_HOME/dbs
. Dessa forma, você não poderá fazer login comoSYSDBA
ouSYSOPER
de forma alguma. Mas, mesmo assim,SYS
o usuário não será realmente bloqueado, é apenas que você não pode ser autenticado. Se você recriar o arquivo de senha, poderá entrar novamente.