Mensagens

Alterar dados a partir da Physical Standby com Data Guard?!?! Sim, é possível...

 Um dos principais problemas da implementação de sistemas de "Disaster Recover" é o facto de a estrutura de standby estar normalmente subaproveitada ou até nem sequer estar a ser aproveitada de todo. Com o decorrer dos anos e das versões a Oracle foi introduzindo novidades do lado da "Physical Standby" que permite um melhor aproveitamento da capacidade instalada. Podemos fazer o backup da DB na Standby, podemos abrir a Standby em modo "Read Only" e com isso mover alguns do relatórios para essa BD. Na versão 19c a Oracle foi um pouco mais longe e permite executar DML do lado da Standby. Isso mesmo, alterar dados na standby que está aberta em modo read only!! A ideia não é usar aplicações com alterações intensivas de dados, mas existem alguma aplicações que maioritariamente são de consulta e apenas com operações de DML esporádicas. Para essas, podemos também usar a "Physical Standby" como BD de operação, usando assim os recursos da standby e libert...

DBMS_SQL_FIREWALL - Firewall dentro da Base de Dados (Parte IV)

Este será o ultimo texto sobre o SQL firewall. Irei ver como impedir um possível ataque de SQL injection através do uso da SQL Firewall Criei uma stored procedure que será usada nos diferentes testes, quer de execução quer de tentativa de SQL Injection e usarei ainda a opção de top_level_only a false para verificar o que é capturado com essa opção. Vou começar por criar um procedimento simples, no schema HR, que executa alguns selects depois de receber um parâmetro de entrada, devolvendo um valor relacionado. O execute immediate do final do procedimento está apenas como exemplo para ser usado com o top_level_only a false e fazer alguns testes.  create or replace procedure empname(lst_name in varchar2) is comando varchar2(2000); type c_ref is ref cursor; c c_ref; ult_nome employees.last_name%type; Begin comando :='select first_name from hr.employees '|| 'where last_nam...

DBMS_SQL_FIREWALL - Firewall dentro da Base de Dados (Parte III)

 No post anterior , vimos a possibilidade de restringir/autorizar a execução de SQL a um utilizador através de listas criadas numa captura de actividade. Durante a captura não são apenas registados os comandos de SQL, mas também outros dados, o endereço de IP a partir do qual o SQL foi executado, o programa a partir do qual foi executado o SQL e ainda o utilizador de sistema operativo que lançou esse programa. Este 3 dados adicionais são parte dos contextos que podem ser usados pela SQL Firewall. Além de restringir a execução de comandos de SQL, é possível limitar a execução através destes contextos, limitar o acesso a partir de um IP ou de um utiliazdor de SO ou até de uma aplicação especifica. Quando analisamos a lista criada durante a captura vemos que já existe essa informação armazenada. Podemos ver isso na view dba_sql_firewall_capture_logs . SQL> select username, command_type, client_program, os_user, ip_address from dba_sql_firewall_capture_logs; US...

DBMS_SQL_FIREWALL - Firewall dentro da Base de Dados (Parte II)

Depois de no primeiro post ter configurado a Firewall e iniciado a captura, vou neste texto criar actividade para que seja capturada e usada para restringir a execução de SQL com o firewall. Para gerar actividade vou usar uns quantos comandos de sql simples a serem executados numa ou mais sessões do utilizador HR. select * from hr.employees; select employee_id, first_name, salary from hr.employees; select * from hr.departments; select department_name, manager_id from hr.departments; select count(*) from sh.sales;   Estes comandos incidem em tabelas do utilizador HR, mas também numa do utilizador SH sobre a qual o HR tem privilégios de leitura. Depois de executar este comandos numa sessão do utilizador HR, abrimos uma sessão do utilizador FWALLADMIN, que é o administrador do SQL_Firewall e vamos validar o que foi capturado através da view dba_sql_firewall_capture_logs . SQL> select * from dba_sql_firewall_capture_logs; USERNAME ...

DBMS_SQL_FIREWALL - Firewall dentro da Base de Dados (Parte I)

  O SQL firewall é uma opção que nos permite detectar, bloquear e criar log sobre actividades anormais de SQL e de alguns contextos das sessões. No fundo permite que consigamos detectar e bloquear com mais facilidade actividades suspeitas na nossa base de dados. Esta opção é introduzida na versão 23c da base de dados Oracle em forma de package ( DBMS_SQL_FIREWALL ). Nesta primeira parte de diferentes textos, vou falar sobre como fazer o setup/configuração da SQL Firewall. Vou começar por criar um novo user que será o administrador do SQL Firewall. Para isso existe um role chamado SQL_FIREWALL_ADMIN que contém todas as permissões necessárias a essa tarefa. Existe um outro role, SQL_FIREWALL_VIEWER, que permite ter utilizadores mais orientados à auditoria e que terão acesso aos dados gerados pelo firewall para poderem analisar. SQL> create user fwalladmin identified by oracle; SQL> grant create session, sql_firewall_admin to fwalladmin; ...