Controle de Acesso no Oracle Database via sqlnet.ora

Controle de Acesso no Oracle Database via sqlnet.ora

No Oracle Database, o arquivo sqlnet.ora é o responsável por implementar o profile responsável por habilitar e configurar features do Oracle Net Services. Através dele podem ser especificados quais naming methods podem ser usados para a conexão com o banco de dados, habilitar logging e tracing, e inclusive controlar o acesso ao banco de dados, que é o foco desse artigo.

Como habilitar

Por padrão, o Oracle não realiza o controle de acesso das conexões do banco de dados. Para que seja possível controlar o acesso, o parâmetro TCP.VALIDNODE_CHECKING precisa ser configurado com o valor YES no sqlnet.ora.

Além disso, outros dois parâmetros devem ser configurados para excluir ou incluir IPs (IPv4 ou IPv6) e/ou hostnames nas regras de acesso ao banco de dados:

  • TCP.EXCLUDED_NODES: contém a lista de IPs e/ou hostnames que terão acesso negado ao tentar se conectar ao banco de dados;
  • TCP.INVITED_NODES: contém a lista de IPs e/ou hostnames que terão acesso permitido ao tentar se conectar ao banco de dados. Este parâmetro tem precedência sobre a lista especificada em TCP.EXCLUDED_NODES, caso ambos estejam configurados;

Para ambos os parâmetros, são permitidos múltiplos valores, inclusive com o uso de wildcards ou blocos CIDR, como no exemplo abaixo:

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
TCP.VALIDNODE_CHECKING=YES
TCP.INVITED_NODES=(192.168.1.10,192.168.100.*,appserver.mydomain)
TCP.EXCLUDED_NODES=(192.168.101.*,192.168.1.13,appserver2.mydomain)

Lembrando que após as alterações serem feitas no sqlnet.ora, um reload é necessário no listener para que as alterações entrem em vigor (lsnrctl reload), pois é ele quem irá permitir ou negar o acesso ao banco de dados, realizando a validação da origem antes da criação do server process para a sessão.

Comportamento do acesso negado

Caso um client que esteja presente na lista do parâmetro TCP.EXCLUDED_NODES tente realizar uma conexão com o banco de dados, ele receberá o erro ORA-17002: I/O error:

Conclusão

Esse controle de acesso é parecido com o controle feito pelo firewall, com a diferença que o firewall consegue gerir o permissionamento de qualquer protocolo e porta, enquanto o sqlnet.ora controla apenas as conexões via Oracle Net. Sendo assim, esse tipo de configuração a nível de profile pode ser usado quando não existe um controle do firewall por parte do DBA, adicionando uma camada extra de segurança ao ambiente.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *