Autenticação Obrigatória com Login e Senha no Oracle

Este artigo tem como objetivo forçar a autenticação no banco de dados Oracle com login e senha inclusive do usuário SYS quando o acesso é através do SO ou autenticação por arquivo de senha.

Por motivos de segurança, um cliente uma vez me pediu que todos os usuários do banco de dados conectassem com login e senha.
Podemos solucionar este conforme abaixo.

Vamos conectar no banco de dados através do SQLPLUS.

oracle=dbprod-> sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Wed Feb 13 23:09:23 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: / as sysdba

Connected to:
Oracle Database 11g Release 11.2.0.3.0 - Production

SQL> exit
Disconnected from Oracle Database 11g Release 11.2.0.3.0 - Production
oracle=dbprod->

Conforme acima, podemos perceber que é possível conectar com o usuário sys sem senha.
Para segurarmos que os usuários conectarão apenas com login e senha, devemos ajustar um parâmetro no sqlnet.ora.
Vamos acessar o diretório “$ORACLE_HOME/network/admin/”.

oracle=dbprod-> cd /oraprd01/app/oracle/product/11.2.0/db_2/network/admin/
oracle=dbprod-> ls -ltr
total 32
-rw-r--r-- 1 oracle oinstall  205 May 11  2011 shrept.lst
drwxr-xr-x 2 oracle oinstall 4096 Sep 26 00:37 samples
-rw-r--r-- 1 oracle oinstall  400 Sep 26 00:47 listener.ora.bkp
-rw-r--r-- 1 oracle oinstall  218 Sep 26 00:47 sqlnet.ora.bkp
-rw-r----- 1 oracle oinstall  353 Sep 26 01:33 tnsnames.ora.bkp
-rw-r----- 1 oracle oinstall  353 Sep 26 01:42 tnsnames.ora
-rw-r--r-- 1 oracle oinstall  239 Sep 26 01:42 sqlnet.ora
-rw-r--r-- 1 oracle oinstall  576 Sep 26 01:55 listener.ora
oracle=dbprod->

Vamos visualizar o conteúdo do arquivo sqlnet.ora.

oracle=dbprod-> cat sqlnet.ora
# sqlnet.ora Network Configuration File: /oraprd01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES)

ADR_BASE = /oraprd01/app/oracle
#DIAG_ADR_ENABLED=OFF
oracle=dbprod->

No sqlnet.ora basta adicionarmos o parâmetro SQLNET.AUTHENTICATION_SERVICES= (NONE) conforme abaixo.

oracle=dbprod-> vi sqlnet.ora
oracle=dbprod-> cat sqlnet.ora
# sqlnet.ora Network Configuration File: /oraprd01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES)
SQLNET.AUTHENTICATION_SERVICES= (NONE)
ADR_BASE = /oraprd01/app/oracle
#DIAG_ADR_ENABLED=OFF
oracle=dbprod-> 

Vamos tentar conectar novamente no banco de dados Oracle após o ajuste.

oracle=dbprod-> sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Wed Feb 13 23:13:35 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: / as sysdba
ERROR:
ORA-01031: insufficient privileges

Podemos perceber conforme acima que ocorreu erro ao tentar conectar.
Vamos conectar com o login e senha.

Enter user-name: sys/************** as sysdba

Connected to:
Oracle Database 11g Release 11.2.0.3.0 - Production

SQL> disc
Disconnected from Oracle Database 11g Release 11.2.0.3.0 - Production
SQL> exit
oracle=dbprod->

Conforme acima com o ajuste todos os usuários deverão acessar com o login e senha obrigatoriamente.
Mais informações sobre este parâmetro e outros do sqlnet.ora acesse Documentação Oracle.

%name Autenticação Obrigatória com Login e Senha no Oracle

Autor: Maycon Tomiasi

Formado em Tecnologia da Informação na FIPP (Faculdade de Informática de Presidente Prudente), Analista DBA Oracle pela Teiko Soluções em Tecnologia da Informação, residente em Blumenau/ SC, Certificado OCP 10g/11g/12c, OCS 11g Implementation, OCE 11g Performance Tuning, OCE 11g RAC & GRID e OPN Specialist. Conhecimentos em PHP.