Protegendo a base de dados através do Oracle Connection Manager

Por Rogerio Eguchi
Publicado em Outubro 2018

Revisado por Francisco Riccio




Nesse artigo vou demonstrar como implementar o Oracle Connection Manager (CMAN) para proteger o banco de dados.

Quando digo proteger, significa que as conexões clientes não chegarão diretamente à base, mas sim através do CMAN, que funcionará como um proxy/firewall entre a camada cliente e os servidores de banco.



Ambiente

O ambiente instalado para os testes com o CMAN consiste em:


Servidor


Função


Oracle Software


Rede


rmlab - Windows 2012 R2


Estação cliente


Oracle Client 12.2


172.24.33.0


oralab1/oralab2 – Oracle Linux 6.10


Servidores CMAN


Oracle Client 18.0


172.24.33.0


raclab1/raclab2 - Oracle Linux 6.10


Servidores Oracle RAC


Oracle RAC 12.2


172.24.48.0




Introdução

O CMAN é um servidor proxy que encaminha as requisições de conexão para o banco de dados ou para outro servidor CMAN. Normalmente o CMAN reside em um servidor separado do servidor de banco de dados ou das estações clientes. O CMAN está disponível para instalação no Oracle 12c Enterprise Edition ou superior, através da instalação customizada do disco client.

As principais funções do CMAN são:

  1. Controle de acesso: utiliza-se regras de configuração para filtrar requisições dos clientes

  2. Session multiplexing: concentrar múltiplas sessões clientes através de uma conexão de rede para um destino shared server

Importante: A utilização do CMAN é completamente transparente para aplicação.




Instalação do CMAN

Utilize o link ao lado para realizar o download do disco de instalação do Oracle Client: https://download.oracle.com/otn/linux/oracle18c/180000/LINUX.X64_180000_client.zip

Descompacte o arquivo e rode o runInstaller.

Escolha a opção custom de instalação:





Defina o Oracle Home:





E selecione, no mínimo, o Oracle Connection Manager e o Oracle Net Listener.



Prossiga e espere terminar a instalação.






Arquitetura do CMAN

O CMAN consiste em 3 componentes:

  1. Listener
  2. CMGW (Oracle Connection Manager Gateway)
  3. CMADMIN (Oracle Connection Manager Administration)


O listener recebe as conexões dos clientes e avalia as regras para aceitar/negar o acesso. Se o acesso for permitido, encaminha a requisição para o processo gateway, escolhendo aquele com o menor número de conexões.

O processo CMGW então encaminha a requisição para outro CMAN ou diretamente para um servidor de banco de dados, retransmitindo os dados até que a conexão termine.

O processo CMADMIN monitora a saúde do listener e dos processos CMGW, parando e iniciado processos quando necessário. O CMADMIN registra a informação sobre os processos CMGW no listener e processa os comandos iniciados pelo utilitário cmctl.





Configurando o CMAN

A configuração completa do CMAN pode ser dividida em três partes:


1) Configuração do CMAN.ORA

Após a instalação do Oracle Client, crie o arquivo cman.ora no diretório $ORACLE_HOME/network/admin/

Exemplo de arquivo de configuração cman.ora:

cman_oralab1.cp.totvs.com.br =
  (CONFIGURATION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=oralab1.cp.totvs.com.br)(PORT=1521))
    (RULE_LIST=
      (RULE=(SRC=172.24.33.81)(DST=172.24.48.0/24)(SRV=pdb_rm_cus1.cp.totvs.com.br)(ACT=accept))
      (RULE=(SRC=oralab1)(DST=127.0.0.1)(SRV=cmon)(ACT=accept))
    )
  )
REGISTRATION_INVITED_NODES_cman_oralab1.cp.totvs.com.br=(172.24.48.0/24)



Da lista de regras:

  • A primeira libera o acesso da rede entre a origem (SRC) e o destino (DST) para o serviço (SRV) especificado.
  • A segunda regra é necessária para permitir a inicialização do CMAN no servidor.


Utilize o CMCTL para iniciar o CMAN:




Para a implementação em produção, faça a instalação de pelo menos dois servidores CMAN para não haver um ponto único de falha da arquitetura.

Nesse caso, repita o mesmo procedimento de instalação realizado para o servidor oralab1 em um novo servidor, por exemplo o oralab2.



2) Configuração no Servidor de Banco Oracle RAC

Nessa etapa são necessárias duas ações:

  • Configurar o tnsnames.ora. Exemplo:

    oralab1 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = oralab1)(PORT = 1521))
        (CONNECT_DATA =
        )
      )
    


  • Alterar o parâmetro remote_listener para registrar os bancos e serviços no CMAN. Exemplo:

    ALTER SYSTEM SET remote_listener='TTVLAB-scan:1521','oralab2:1521','oralab1:1521' 
    SCOPE=BOTH SID='*';
    
    ALTER SYSTEM REGISTER;
      

Confirme que o CMAN passou a ter os bancos registrados no listener:





Ou via cmctl:






3) Configuração do tnsnames.ora na estação cliente

Vamos configurar o tnsnames.ora para acessar o banco através do CMAN.

RM =
  (description =
    (load_balance = on)
    (failover = on)
    (address_list =                   
      (source_route = yes)
      (address = (protocol = tcp)(host = oralab1)(port = 1521))
      (address=(protocol=tcp)(host=TTVLAB-scan)(port=1521))
    )
    (address_list =                   
      (source_route = yes)
      (address = (protocol = tcp)(host = oralab2)(port = 1521))
      (address=(protocol=tcp)(host=TTVLAB-scan)(port=1521))
    )
    (connect_data =
      (service_name = pdb_rm_cus1.cp.totvs.com.br)
      (server = dedicated)
    )
  )




Teste de acesso via SQLPlus

Acessando um servidor e serviço liberados:





Caso o servidor ou serviço não esteja liberado nas regras do CMAN um erro é retornado, exemplo:






Referências

Configuring Oracle Connection Manager - https://docs.oracle.com/en/database/oracle/oracle-database/18/netag/configuring-oracle-connection-manager.html

Client / Server Interoperability Support Matrix for Different Oracle Versions (Doc ID 207303.1)




Rogerio Bacchi Eguchi é um DBA Oracle Sênior com extensa experiência em ambientes OLTP de missão crítica e que empregam as tecnologias da "Oracle Maximum Availability Architecture". Atuou como DBA em empresas como Oracle, UOL, UOLDiveo, PagSeguro e atualmente atua como DBA/DMA na TOTVS. Possui as certificações Oracle OCP 8i, 9i, 10g, 11g, 12c e OCE Exadata. Atua também como SysAdmin/DEVOPS onde é certificado Linux RHCE. Entusiata de novas tecnologias como big data, automações e cloud computing. Compartilha conhecimento no blog reguchi.wordpress.com e twitter @reguchi_br.

Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.