Neste artigo vou mostrar como conectar um DB System ao Oracle Data Safe e utilizar do mesmo para gerenciar o SQL Firewall.
O Oracle Data Safe é um serviço do OCI com foco em segurança de dados, que fornece um conjunto integrado de recursos para proteção de dados. Os recursos incluem Avaliação de Segurança, Avaliação do Usuário, Descoberta de Dados, Mascaramento de Dados, Auditoria de Atividades, Políticas de Segurança, Firewall de SQL e Alertas.
O SQL Firewall é um recurso de segurança de banco de dados incorporado ao kernel do Oracle Database 23ai, que inspeciona as conexões e instruções SQL recebidas, permitindo, registrando ou bloqueando atividades não autorizadas conforme as políticas específicas de cada usuário do banco de dados.
O SQL Firewall garante que apenas instruções SQL explicitamente autorizadas sejam executadas, bloqueando tentativas de injeção de SQL. Saiba mais sobre o Oracle SQL Firewall.
Atenção: O gerenciamento do Firewall de SQL no Oracle Data Safe só está disponível para bancos de dados de destino do Oracle AI Database 26ai.
1 - Criação do usuário utilizado
Para ambientes DB System é preciso criar uma conta para que o Oracle Data Safe possa se conectar ao banco de dados. É recomendada a criação de uma conta dedicada e com privilégios mínimos necessários. Você pode conectar tanto um PDB quanto o CDB$ROOT, mas são targets distintos.
Neste exemplo o usuário será criado no PDB onde será ativado o Oracle SQL Firewall. Como requisito a senha deve atender aos criterios abaixo.
- Pelo menos 14 caracteres
- Pelo menos uma letra maiúscula
- Pelo menos uma letra minúscula
- Pelo menos um número
- Pelo menos um caractere especial
Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production Version 23.26.1.0.0 SQL> show con_name; CON_NAME ------------------------------ CDB$ROOT SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORA26AI_PDB1 READ WRITE NO SQL> alter session set container=ORA26AI_PDB1; Session altered. SQL> CREATE USER DATASAFE_ADMIN IDENTIFIED BY "SENHAFORTE" DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; 2 3 4 User created. SQL> GRANT CONNECT, RESOURCE TO DATASAFE_ADMIN; Grant succeeded. SQL> SQL>
2 - Concedendo somente os privilégios necessários ao SQL Firewall
Para ambientes que não sejam autonomous database, a Oracle fornece um script chamado datasafe_privileges.sql que pode ser baixada diretamente no wizard do data safe.
Na próxima tela, selecione o database type, compartment do database, escolha o database e pdb desejado.
Logo abaixo você tem a opção de download do privilege script. Baixe o mesmo e executa no banco de dados, passando o usuário criado anteriormente (DATASAFE_ADMIN).
Connected to: Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production Version 23.26.1.0.0 SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORA26AI_PDB1 READ WRITE NO SQL> alter session set container=ORA26AI_PDB1 2 ; Session altered. SQL> @/tmp/datasafe_privileges.sql Enter value for USERNAME (case sensitive matching the username from dba_users) DATASAFE_ADMIN Setting USERNAME to DATASAFE_ADMIN Enter value for TYPE (grant/revoke) grant Setting TYPE to grant Enter value for MODE (audit_collection/audit_setting/data_discovery/masking/assessment/sql_firewall/all) all Setting MODE to all Granting AUDIT_COLLECTION privileges to "DATASAFE_ADMIN" ... "ORA_DSCS_AUDIT_COLLECTION" Created role "ORA_DSCS_AUDIT_COLLECTION" Granting AUDIT_SETTING privileges to "DATASAFE_ADMIN" ... "ORA_DSCS_AUDIT_SETTING" Created role "ORA_DSCS_AUDIT_SETTING" Granting SQL_FIREWALL privileges to "DATASAFE_ADMIN" ... "ORA_DSCS_SQL_FIREWALL" Created role "ORA_DSCS_SQL_FIREWALL" Granting DATA_DISCOVERY role to "DATASAFE_ADMIN" ... "ORA_DSCS_DATA_DISCOVERY" Created role "ORA_DSCS_DATA_DISCOVERY" Granting MASKING role to "DATASAFE_ADMIN" ... "ORA_DSCS_MASKING" Created role "ORA_DSCS_MASKING" Granting ASSESSMENT role to "DATASAFE_ADMIN" ... "ORA_DSCS_ASSESSMENT" Created role "ORA_DSCS_ASSESSMENT" Disconnected from Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production Version 23.26.1.0.0 [oracle@oracle26ai tmp]$
Na console do Data Safe, coloque o usuário e senha e clique em next.
Na tela seguinte aparecem os dados do private endpoint. Caso ele não exista será necessário que seja criado uma vez que normalmente um DB System possui apenas endereço privado. No meu exemplo o database está na subnet pública.
Pata gerenciar e habilitar o SQL Firewall pelo Data Safe, basta acessar Oracle AI Database, Data Safe - Database Security.
Em target summary é possível validar o status do sql firewall, ativar e desativar o mesmo e fazer todo o gerenciamento que é feito diretamente via procedure DBMS_SQL_FIREWALL.
Em SQL collections é possível configurar a criação da captura dos comandos para um usuário específico na opção create and start SQL collection.
A Oracle recomenda justamente revisar a coleta, gerar a policy e escolher entre Observe (Allow) and log violations ou Block and log violations. Também é possível habilitar Audit for violations. Depois, o Data Safe permite adicionar novos SQLs à política a partir de uma nova coleta ou diretamente do violation log.
Neste exemplo vou ativar no modo bloqueio para simular o comportamento na aplicação, validando tanto o contexto quanto o comando sql executado.

Com a politica ativa, vou simular uma conexão com o usuário FW_DEMO_APP através do SQL Developer, no qual nem o program nem o IP estão na allow list.
Fontes:
Comentários
Postar um comentário