Baixe o app para aproveitar ainda mais
Prévia do material em texto
SEGURANÇA E AUDITORIA EM BANCO DE DADOS W B A 04 73 _v 1. 0 2 Washington Henrique Carvalho Almeida Londrina Editora e Distribuidora Educacional S.A. 2020 SEGURANÇA E AUDITORIA EM BANCO DE DADOS 1ª edição 3 2020 Editora e Distribuidora Educacional S.A. Avenida Paris, 675 – Parque Residencial João Piza CEP: 86041-100 — Londrina — PR e-mail: editora.educacional@kroton.com.br Homepage: http://www.kroton.com.br/ Presidente Rodrigo Galindo Vice-Presidente de Pós-Graduação e Educação Continuada Paulo de Tarso Pires de Moraes Conselho Acadêmico Carlos Roberto Pagani Junior Camila Braga de Oliveira Higa Carolina Yaly Giani Vendramel de Oliveira Henrique Salustiano Silva Mariana Gerardi Mello Nirse Ruscheinsky Breternitz Priscila Pereira Silva Tayra Carolina Nascimento Aleixo Coordenador Henrique Salustiano Silva Revisor Marcelo Ramillo Editorial Alessandra Cristina Fahl Beatriz Meloni Montefusco Gilvânia Honório dos Santos Mariana de Campos Barroso Paola Andressa Machado Leal Dados Internacionais de Catalogação na Publicação (CIP) __________________________________________________________________________________________ Almeida, Washington Henrique Carvalho. A447s Segurança e auditoria em Banco de Dados/ Washington Henrique Carvalho Almeida, – Londrina: Editora e Distribuidora Educacional S.A., 2020. 44 p. ISBN 978-65-5903-049-1 1. Segurança 2. Auditoria 3. Dados I. Título. CDD 004 ____________________________________________________________________________________________ Raquel Torres – CRB 6/2786 © 2020 por Editora e Distribuidora Educacional S.A. Todos os direitos reservados. Nenhuma parte desta publicação poderá ser reproduzida ou transmitida de qualquer modo ou por qualquer outro meio, eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer outro tipo de sistema de armazenamento e transmissão de informação, sem prévia autorização, por escrito, da Editora e Distribuidora Educacional S.A. 4 SUMÁRIO Gerenciamento de usuários e seus privilégios ______________________ 05 Controle de Bloqueio em Transações: Locks ________________________ 21 Políticas de backup e recovery de banco de dados _________________ 35 Aplicação de Auditoria em banco de dados _________________________ 49 SEGURANÇA E AUDITORIA EM BANCO DE DADOS 5 Gerenciamento de usuários e seus privilégios Autoria: Washington Henrique Carvalho Almeida Leitura crítica: Marcelo Ramillo Objetivos • Abordar conceitos da segurança de dados. • Demonstrar a importância da segurança de dados no âmbito do Banco de Dados. • Conceituar os tipos de privilégios de acesso dos usuários ao banco de dados. • Tratar as medidas de controle usadas para fornecer segurança ao Banco de Dados. • Expor a importância do DBA na Segurança e Auditoria em Banco de Dados. 6 1. Introdução O número de ataques externos e internos a organizações públicas e privadas para obter informações privilegiadas passa por um crescimento substancial. No caso dos ataques externos, a principal forma de impedir é mantendo uma arquitetura de segurança bem estruturada. Contudo, também é necessário garantirmos as melhores práticas para as ações internas, e, nesse caso, é preciso ter uma política de segurança consistente com critérios para fornecer privilégios de acesso ao banco de dados. Neste tema, estudaremos questões de segurança de bancos de dados e sua importância; tipos de segurança de dados; medidas de controle; importância do Administrador de Banco de Dados ou Database Administrator (DBA); controle de acesso discricionário; controle de acesso mandatário; e concessão e revogação de privilégios. Assim, ao final da aula, será possível responder a algumas perguntas relativas ao assunto em questão: gerenciamento de usuários e seus privilégios. São elas: 1. O que é Segurança de Dados? 2. O que é integridade? 3. Quais os tipos de perdas causadas por ameaças aos Bancos de Dados? 4. Qual é o papel do DBA? 5. Quais os tipos de ações que ele executa? 7 2. Segurança de dados A segurança do banco de dados tem como referência o uso de uma ampla variedade de controles que visam proteger as informações. Coerentemente, deve discernir quais controles usar de acordo com os tipos de negócios para os quais o banco de dados é utilizado. Em muitos casos de acidentes de segurança, emprega-se mais tempo em descobrir as causas em vez de investir na criação de boas medidas preventivas. Pensando na situação de um banco de dados local, como é o caso da maioria das organizações, nas quais existe uma segurança de rede centralizada de rede e firewall, a segurança precisa de uma estratégia específica para os dados, devendo estabelecer critérios para cada situação em que o usuário acessa o banco. Os assuntos de segurança de dados apresentam-se intimamente relacionados à integridade de dados; todavia, devemos lembrar que segurança não é sinônimo de integridade. Nesse escopo, serão vistas várias formas de proteção dos dados. Date (2003, p. 819) conceitua integridade e segurança como: “Segurança significa proteger os dados contra usuários não autorizados. Integridade significa proteger os dados contra usuários autorizados (!)”. Percebe-se que a diferença é sutil: a segurança protege os dados contra usuários NÃO AUTORIZADOS, enquanto a integridade possui a mesma definição, mas para usuários AUTORIZADOS. Vamos ver agora a importância da integridade e da segurança de dados por meio de um exemplo. Imaginemos acessar os dados do seu imposto de renda por meio do E-CAC e verificar que aqueles dados expostos na tela do computador não são seus de fato. Em outras palavras, é possível acessar as informações, mas os dados não são íntegros, isto é, apresentam-se “adulterados” e não há integridade. 8 Já sobre a segurança de dados, podemos exemplificar com uma situação muito simples. Uma pessoa recebe um SMS do banco dizendo que acessou a conta-corrente em tal hora, mas percebe que não foi ela que acessou. Isso é a segurança de dados. A integridade do banco de dados tem a ver com o requisito de que a informação não seja alterada indevidamente, incluindo todas as etapas e operações de comandos DML de um SGBD (INSERT, UPDATE e DELETE). Ressalta-se que, quando se fala em consistência e precisão, devemos nos lembrar dos princípios da segurança de informação: confidencialidade, integridade e disponibilidade. Esses conceitos são determinantes, pois no final o gerenciamento de permissões de usuários busca garantir a inviolabilidade desses três princípios, a famosa trinca CID da Segurança da Informação: • Confidencialidade: garantir que a informação se apresente acessível somente às pessoas que possuem autorização para acessá-las. • Integridade: somente pessoas autorizadas podem alterar a informação. • Disponibilidade: garantir que as pessoas autorizadas tenham acesso àquela informação quando quiserem, isto é, quando acharem necessário, a qualquer tempo. 9 Figura 1 – Princípios da Segurança da Informação Fonte: elaborada pelo autor. Garantir a segurança da informação é apresentar confidencialidade, integridade e disponibilidade. Em outras palavras, é fazer com que as informações estejam acessíveis somente para as pessoas autorizadas, de modo que elas possam alterá-las e que essas informações possam estar disponíveis a qualquer tempo. 3. Tipos de Segurança de Banco de Dados Para uma definição clara do tipo de segurança a ser aplicada, é necessário conhecer e compreender quais bancos de dados contêm dados confidenciais, por exemplo. Assim, definir requisitos, como 10 autenticação, autorização e controle de acesso, será importante para a estratégia e a arquitetura de segurança. A área de segurança de banco de dados é muito vasta, tentando assim solucionar muitos problemas. Elmasri e Navathe (2011) incluem os seguintes problemas: • Diversas questões éticas e legais:por exemplo, algumas informações podem ser acessadas por organizações ou pessoas não autorizadas. Nos Estados Unidos, existem várias leis que controlam a privacidade da informação. • Questões políticas institucionais quanto aos tipos de informações que não devem se tornar públicas: por exemplo, classificações de crédito e registros médicos pessoais. • Questões relacionadas ao sistema, como os níveis de sistema em que várias funções de segurança devem ser impostas: por exemplo, se uma função de segurança deve ser tratada no nível de hardware físico, no nível do sistema operacional ou no nível do SGBD. • A necessidade, em algumas organizações, de identificar vários níveis de segurança e categorizar os dados e os usuários com base nessas classificações: por exemplo, altamente secreta, secreta, confidencial e não classificada. A política de segurança da organização com relação a permitir o acesso a várias classificações dos dados deve ser imposta. Date (2003) elenca os tipos de problemas a serem solucionados: • Aspectos legais, sociais e éticos: por exemplo, a pessoa que faz a requisição quanto ao crédito de um cliente tem direito legal à informação solicitada? 11 • Controles físicos: por exemplo, a sala do computador ou do terminal é trancada ou protegida de algum modo? • Questões de política: por exemplo, como a empresa proprietária do sistema decide quem deve ter acesso a quê? • Problemas operacionais: por exemplo, se é usado um esquema de senha, como é conservado o segredo das próprias senhas e com que frequência elas são trocadas? • Controles de hardware: por exemplo, o servidor fornece recursos de segurança, tais como chaves de proteção de armazenamento ou um modo de operação protegido? • Suporte do sistema operacional: por exemplo, o sistema operacional sendo utilizado apaga o conteúdo da memória principal e dos arquivos de disco quando termina de trabalhar com eles? E o que dizer do log de recuperação? Percebe-se que há muitas semelhanças concernentes às questões entre os dois autores. Isso nos mostra que as questões éticas, políticas e sociais devem ser regulamentadas e solucionadas quando falamos em segurança de dados. Os Sistema de Gerenciamento de Banco de Dados (SGBD) oferecem mecanismos de segurança com base no controle de acesso dos dados e até mesmo a ocultação de dados por meio de visões (VIEW), que são projeções de parte dos dados de tabelas, podendo ser construídas com consultas SQL avançadas. Além disso, são implementadas diversas medidas de controle, detalhadas no próximo tópico. 12 4. Medidas de Controle As medidas de controle possuem o objetivo de fornecer segurança nos bancos de dados, concedem aos usuários apenas os privilégios necessários para realizar o trabalho que lhes foi atribuído e permitem que apenas alguns usuários acessem, processem ou alterem dados. São divididas por categorias: • Privilégio do sistema. • Funções do usuário. • Privilégios do objeto. Por exemplo, criar espaços de tabela e excluir as linhas de qualquer tabela em um banco de dados são privilégios do sistema. Os privilégios de um sistema de banco de dados são tão importantes que, por padrão, são configurados para impedir usuários típicos. Elmasri e Navathe (2011, p. 563) dividem as medidas de controle em quatro tipos: • Controle de acesso. • Controle de fluxo. • Criptografia de dados. • Controle de inferência. O controle de acesso sobre contas e privilégios de usuários ou grupos de usuários é determinado pelas necessidades negociais e pelos gerentes de negócio, cabendo ao DBA gerenciar essa permissão. 13 O controle de fluxo inibe que as informações transitem por canais secretos e burlem a política de segurança ao alcançarem usuários não autorizados. A criptografia, por sua vez, tem a ver com o ocultamento dos dados por meio dos meios de transmissão, sendo permitido apenas ao emissor e receptor ler as mensagens em texto claro, ou seja, sem estarem criptografadas. Por fim, o controle de inferência tem a ver com o banco de dados estatísticos, em que os usuários podem acessar os dados agregados, mas não podem, por exemplo, chegar à informação de menor granularidade. Assim, um sistema de compras em que se teria acesso às compras de uma região, mas não se poderia acessar os dados de cada um dos compradores especificamente. Aqui, veremos o mais importante dentro da temática abordada: o controle de acesso. 4.1 Controle de Acesso O SGBD deve fornecer técnicas com o intuito de permitir que uma gama de usuários possua acesso somente a um conjunto selecionado dos dados, mas sem acesso ao banco de dados restante. Conforme Elmasri e Navathe (2011, p. 563), existem dois tipos de mecanismos de segurança: • Mecanismos de segurança discricionários: são os relativos à concessão de privilégios de usuários nos objetos do banco de dados, usando as operações padrão SQL (SELECT, UPDATE, INSERT e DELETE). • Mecanismos de segurança obrigatórios: estão relacionados a impor segurança baseada em camadas ou multiníveis. Em resumo, alguns grupos de usuários têm papéis, em que uns podem ler alguns dados, outros atualizar esses dados e outros simplesmente 14 não acessar esses dados por terem privilégios de classificação baixos. 5. Segurança de Dados e o DBA Nesse cenário, existe um profissional que é responsável por administrar a gestão dos acessos e privilégios, o chamado Database Administrator ou, em português, Administrador de Bando de Dados (DBA). Entre suas tarefas diárias, está a gestão de desempenho do banco de dados por meio de monitoramento, políticas de backups, recuperação de dados, auditorias de acessos, atendimento a solicitações de usuários, entre outras correlatas. Aqui iremos dar maior foco às questões de criação de contas, concessão de privilégios, revogação de privilégios e atribuição de nível de segurança. Como já vimos, o DBA concede aos usuários apenas os privilégios necessários para realizar o trabalho que lhes foi atribuído. Em outras palavras, permite que apenas alguns usuários acessem, processem ou alterem dados. São divididos por categorias: • Privilégio do sistema. • Funções do usuário. • Privilégios do objeto. Por exemplo, como já falamos, criar espaços em tabela e excluir dados de qualquer tabela em um banco de dados são privilégios do sistema. Esses privilégios são tão importantes que, por padrão, são configurados para impedir que usuários executem operações importantes. 15 5.1 Tipos de ações tomadas pelo DBA Cada banco de dados requer pelo menos um DBA, o qual tem várias funções, como monitoramento e otimização. Em se tratando da segurança do SGDB, é imprescindível sua atuação, pois é por meio dele que serão aplicados os melhores controles de segurança. Os DBA normalmente possuem contas com altos privilégios, mas é importante ressaltar que, em alguns bancos de dados comerciais, essa conta varia de nome. Por exemplo, no MySQL, chama-se root; e no SQL Server ou MS SQL, banco de dados da Microsoft, chama-se SA. No geral, são quatro tipos de ações basicamente tomadas por esses profissionais: • Criação de contas: criar uma conta para um grupo de usuários ou um usuário específico com a finalidade de acessar o SGBD; comando SQL – CREATE USER. • Concessão de privilégios: essa ação atribui ao usuário específico ou a um grupo de usuários privilégios a determinadas contas; comando SQL – GRANT. • Revogação de privilégios: essa ação retira os privilégios concedidos pelo comando GRANT; comando SQL – REVOKE. • Atribuição de nível de segurança: o objetivo dessa ação é conceder, conforme cada conta de usuário, o nível apropriado de segurança, incluindo, em resumo, em um grupo ou papel específico. O DBA é responsável pela segurança do sistema de banco de dados, e a criação de conta é utilizada para controlar o acesso ao SGDB, nominando um serviço ou responsável. A concessão e a revogação de privilégios são usadas no controle da autorização dos usuários do SGDB.16 A atribuição de nível de segurança é importante e servirá para o controle e os direitos de acesso ao banco de dados de forma obrigatória. 6. Principais privilégios A concessão de privilégios acontece no dia a dia das corporações, quando são necessários acesso aos dados armazenados nos mais diversos SGBDs. No Quadro 1, demonstramos quando utilizar e em quais cenários. Quadro 1 – Cenários de concessão de privilégios nas corporações TIPO DE PRIVILÉGIO CENÁRIO DE UTILIZAÇÃO SELECT Podem ser concedidas permissões de SELECT para usuários que precisam apenas visualizar os dados, garantindo dessa forma que, mesmo em caso de tentativa de alteração ou exclusão dos dados, não seja possível a efetivação dessas operações. UPDATE Usuários de aplicações que precisam atualizar dados em determinadas tabelas, mas sem ter visão do banco de dados como um todo, garantindo, assim, a confidencialidade dos dados. O usuário apenas tem permissão para UPDATE no BD, sendo muito utilizado em instituições financeiras para evitar acesso a saldos de contas de clientes de outras agências. INSERT e DELETE Normalmente são concedidos privilégios de INSERT e DELETE para usuários que precisam persistir dados; para garantir a auditoria, são criados gatilhos no banco. Fonte: elaborado pelo autor. 17 Nesses cenários, podem ser mesclados e concedidos privilégios utilizando diversos recursos de um SGBD de mercado, mas na prática do dia a dia é muito comum a concessão de privilégios dos três tipos apresentados no Quadro 1. Segundo Date (2003, p. 853), existe uma forma simples para separar o acesso aos dados pelos usuários, que é o mecanismo de visões, comando SQL CREATE VIEW. Essa instrução pode criar uma estrutura que condessa informação de várias tabelas do banco por meio de consultas SQL elaboradas, ocultando colunas ou linhas de dados que não devem ser acessíveis a certos grupos de usuários. Após sua criação, podem ser concedidas permissões com o comando GRANT. A utilização de comandos GRANT e REVOKE tem como objetivo o controle de quais usuários têm privilégios tanto para a definição de dados com comandos Data Definition Language (DDL) como comandos Data Manipulation Language (DML). As concessões são dadas em todos os objetos de um banco de dados, como TABLES, PROCEDURES, VIEWS e TRIGGERS. Uma opção interessante para o usuário é conceder permissões para outro usuário e este ter privilégios para concessão de permissões. O comando GRANT é completado pela opção WITH GRANT OPTION. Para exemplificar, vamos utilizar o banco de dados MySQL, que é um software de mercado e possui licença para uso gratuito. Os comandos GRANT e REVOKE dão possibilidade aos DBA para conceder e revogar direitos aos usuários do MySQL em seis níveis de privilégios: • Nível global: privilégios globais aplicam-se para todos os bancos de dados em um determinado servidor, o comando GRANT dá permissões amplas no servidor localhost para o usuário userdb e o comando REVOKE retira esses privilégios logo em seguida. Se for usada a sintaxe ON * (em vez de ON *. *), privilégios serão 18 atribuídos no nível do banco de dados para o banco de dados padrão. Exemplo: 1. grant all on *.* to userdb@localhost; 2. revoke all on *.* from userdb; • Nível das colunas: privilégios de colunas aplicam-se a uma coluna específica em uma determinada tabela. Podem ser utilizados para os comandos SELECT, INSERT e UPDATE de determinadas colunas que desejar. Exemplo: 1. grant select(nomecoluna1), 2. insert(nomecoluna1), 3. update(nomecoluna1) 4. on posgraduacao.nome_tabela 5. to userdb@localhost 6. identified by senha; • Nível do banco de dados: privilégios de bancos de dados aplicam- se a todas as tabelas em um determinado banco de dados. Os comandos para conceder e revogar apenas privilégios de banco de dados serão: Exemplo: 1. grant all to posgraduacao.* to userdb @localhost 2. revoke all on posgraduacao.*; • Nível de tabelas: privilégios de tabelas aplicam-se a todas as colunas em uma determinada tabela. Os comandos para conceder e revogar apenas privilégios de tabelas serão: 19 Exemplo: 1. grant all on posgraduacao.nome_tabela; 2. revoke all on posgraduacao.nome_tabela; • Nível de proxy user e rotinas armazenadas: o privilégio de proxy permite que um usuário seja proxy de outro. O usuário externo de um outro host assume os privilégios de um usuário e o de rotinas armazenadas; as famosas procedures e functions também podem ser concedidas. Vejamos um exemplo de cada caso. Exemplo 1 – Proxy User: 1. mysql> grant PROXY on userdb@localhost to ‘usuarioexterno’@’hostexterno’; Exemplo 2 – Rotinas Armazenadas: 1. ## para rotinas 2. mysql> grant routine on posgraduacao.* to userdb@localhost; 3. ## para procedures 4. mysql> grant execute on procedure posgraduacao. nomeprocedure to userdb@localhost; Assim, finalizamos este bloco sobre o gerenciamento de usuários e o controle de acesso, dando base teórica e prática para que o aluno possa entender como funciona um SGDB de mercado. Referências Bibliográficas DATE, Christopher J. Introdução a sistemas de banco de dados. 8. ed. Rio de Janeiro: Elsevier, 2003. ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. 6. ed. São Paulo: Pearson, 2011. 20 HEUSER, Carlos A. Banco de dados relacional: conceitos, SQL e administração. Porto Alegre: Clube de Autores, 2019. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de banco de dados. 6. ed. Rio de Janeiro: Elsevier, 2012. 21 Controle de Bloqueio em Transações: Locks Autoria: Washington Henrique Carvalho Almeida Leitura crítica: Marcelo Ramillo Objetivos • Conceituar transação. • Apresentar o conceito das propriedades da transação. • Definir resumidamente cada um dos “princípios” da transação. • Demonstrar a importância do COMMIT e ROLLBACK. • Expor os tipos de bloqueio. 22 1. Introdução Neste tema, estudaremos o assunto controle de bloqueio em transações e trataremos, somente, acerca dos temas principais: • Transações. • Propriedades das transações. • Tipos de bloqueios. • Operação atinente a cada bloqueio. As transações podem consistir em uma ou mais instruções de manipulação de dados, gravando informações no Sistema de Gerenciamento de Banco de Dados (SGDB). A consistência e a integridade dos dados são gerenciadas nativamente e garantem que as transações sejam executadas de forma segura. Uma transação simples geralmente usa um padrão: 1. Início da transação. 2. Execução de um conjunto de manipulações de dados e/ou consultas. 3. Se nenhum erro ocorrer, a transação é confirmada. 4. Se ocorrer um erro, a transação é revertida. Portanto, uma transação requer que todos os resultados de manipulações de dados dentro do escopo das instruções sejam íntegros. É importante salientar uma característica primordial nas situações com as quais nos deparamos: para garantir a integridade apresentada, as regras de negócios deverão estar no SGDB. Porém, em muitos casos, estão escritas na aplicação, não se beneficiando desse recurso importantíssimo. 23 Vamos a um exemplo. Consideremos um aplicativo bancário em que a pessoa irá transferir determinado valor da conta-poupança para a conta-corrente. Se o aplicativo subtrair o valor da conta-poupança, mas for interrompido por um problema no sistema antes de adicionar o valor à conta-corrente, a transação não será realizada. Nesse caso, não houve integridade na transação, tampouco todos os comandos foram executados. Ao final deste tema, será possível responder a algumas perguntas atinentes ao assunto em questão: Controle de Bloqueio em Transações. São elas: 1. O que é transação? 2. Qual a diferença entre COMMIT e ROLLBACK? 3. Quais as propriedades da transação? 4. Definir resumidamente cada uma delas. 5. Quais os tipos de bloqueios? 6. Quais são as operações de cada bloqueio citado anteriormente? 1.1 Transações Uma transação é uma execução de código escrito em SQL. É formada por uma sequência deoperações, insert, update ou delete, que precisam ser executadas integralmente e são obrigatoriamente delimitadas por declarações de início e fim. A principal função é garantir ao banco de dados a consistência e a precisão dos dados. Só é considerada válida e gravada na fonte de dados se todos os seus comandos forem bem- sucedidos. Se houver falha durante qualquer comando, a transação será invalidada. Também pode ser definida como uma unidade de trabalho que começa sempre com uma operação chamada de BEGIN TRANSACTION e termina com uma operação COMMIT ou ROLLBACK. Veremos a seguir a definição de cada uma. 24 Como o próprio nome já diz, BEGIN TRANSACITON é o início da transação, isto é, é um comando SQL que indica onde a transação deve começar; assim, tudo que estiver antes desse comando não entra no comando da transação. Já o COMMIT TRANSACTION é o fim do código da transação, e vale ressaltar que ele indica quando a ação ocorre como o esperado. Por fim, o ROLLBACK TRANSACTION diz respeito a voltar para a “versão” em que o banco se encontrava sem erro, isto é, em seu estado original. Exemplo: CREATE TABLE TabelaAula (id int); BEGIN TRANSACTION; — IníciodaTransação INSERT INTO TabelaAula VALUES(1); INSERT INTO TabelaAula VALUES(2); COMMIT; — Conclusão da transação e gravação de todos os comandos. Se utilizássemos o ROLLBACK, os valores inseridos na TabelaAula seriam “excluídos”, isto é, o estado do banco de dados anterior à transação citada teria “voltado”. Ele significa uma conclusão com insucesso de uma transação. Nos casos de ROLLBACK e COMMIT, em ambas as situações a execução ocorre automaticamente dentro da aplicação. Já em relação ao COMMIT, na operação citada, quando ocorre a inserção dos valores na tabela TabelaAula, esta não é gravada antes que ocorra o COMMIT. Acontece que a operação (inserção dos dados na tabela) é armazenada em buffer de memória, ou seja, não há uma efetiva atualização dos dados antes do COMMIT. 25 1.2 Propriedades da Transação Vamos falar um pouco acerca das propriedades da transação (Atomicidade, Consistência, Isolamento e Durabilidade). Todavia, antes, abordaremos um assunto chamado de controle de concorrência entre transações em banco de dados, pois ele é inerente a essas propriedades. Quando um banco de dados é acessado por mais de um usuário, isto é, quando vários usuários diferentes tentam buscar as mesmas informações no banco de dados, é efetuado o controle de concorrência entre os dados acessados. Podemos conceituar esse controle como um método utilizado para que as transações sejam executadas com segurança e sigam os princípios de Atomicidade, Consistência, Isolamento e Durabilidade (ACID). Figura 1 – ACID Fonte: elaborada pelo autor. Vamos falar agora sobre cada uma das propriedades citadas na figura. 26 Atomicidade • A transação deve ser realizada por completo. Assim, se acontecer algum erro durante sua execução, ela não será realizada. Ou seja, ou a transação é efetuada na sua totalidade ou não é realizada. • Ex.: Um usuário quer debitar R$ 100 da conta A e creditar R$ 100 na conta B. Se essa transação acontecer com sucesso, o BD é alterado de forma permanente, denominado COMMIT. Consistência • Quando ocorrer a execução de uma transação, esta deve partir de um estado válido a outro estado válido, isto é, a transação deve respeitar sempre as regras relacionadas à integridade dos dados do banco (ex. chave primária, chave secundária, tipo de dados, entre outros). • Ex.: Se alguém tentar inserir na TabelaDeVendas a venda de um produto que não se encontra na TabelaProdutos, a transação irá falhar. Isolamento • Conforme Date (2003), As transações são isoladas umas das outras. Isto é, embora em geral haja muitas transações sendo executadas ao mesmo tempo, as atualizações de qualquer transação dada são ocultas de todas as outras até o COMMIT dessa transação. (DATE, 2003, p. 737) Outro modo de apresentar esse conceito é afirmar que, no caso de duas transações distintas A e B, A poderia ver as atualizações de B (após B fazer o COMMIT) ou B poderia ver as atualizações de A (após A fazer o COMMIT), mas certamente não ambas. 27 • Ex.: Imaginemos que dois alunos da Universidade XYZ entrem no site de uma livraria para comprar um livro sobre segurança e auditoria de banco de dados solicitado pelo professor. Os dois encontram o livro, mas há somente uma unidade em estoque. Como não sabem dessa informação, fazem o pedido na loja. No entanto, como há somente um livro no estoque, o primeiro que “terminar” a compra fará com que a transação do outro seja desfeita, acontecendo o chamado ROLLBACK. Durabilidade • Também chamada por alguns autores como permanência, garante que as alterações realizadas no banco de dados em razão da transação sejam efetivadas com sucesso, mesmo que ocorra alguma falha no banco de dados. Ou seja, se acontecer alguma “queda” do banco de dados, ela garante que as atualizações serão realizadas com sucesso. Todavia, devemos lembrar que tudo isso acontece após a conclusão com o COMMIT. • Ex.: Se uma pessoa faz uma transação bancária (retira dinheiro) e no mesmo momento acontece alguma falha no BD, o valor retirado não é debitado da conta; assim, somente após o BD “voltar ao normal” é que a transação será atualizada. Como uma digital, a transação deve ser isolada, como se cada uma fosse única. A Figura 2 aborda essa característica de suma importância no contexto da era da informação e do advento da internet, em que a quantidade de processamento de informação cresce em escala exponencial. 28 Figura 2 – Transações e sua característica de isolamento iStock – Monsitj/iStock.com. 1.3 Técnicas de bloqueio em duas fases para controle de concorrência Vamos estudar sobre as técnicas de bloqueio em duas fases para controle de concorrência. Primeiramente, vamos definir o que seria bloqueio quando se fala em transação de banco de dados. No entendimento de Elmasri e Navathe (2011, p. 523), um bloqueio é uma variável associada a um item de dados que descreve o status do item em relação a possíveis operações que podem ser aplicadas a ele. Em geral, existe um bloqueio para cada item de dados no banco de dados, o qual é utilizado como um meio de sincronizar o acesso por transações concorrentes aos itens do banco de dados. 29 Há diversos tipos de bloqueio utilizados no controle de concorrência, entre eles estão o bloqueio binário e o compartilhado, como veremos a seguir. Bloqueio binário • Esse tipo de bloqueio pode ter somente dois valores, isto é, dois estados: 0 ou 1. O estado 0 (zero) significa estado desbloqueado e o estado 1 (um) significa estado bloqueado. Quando se fala em estado bloqueado, quer dizer que não pode ser acessado. Por exemplo, se o valor em A for 1, dizemos que A não pode ser acessado por nenhuma operação do banco de dados que solicite esse item. Agora se o valor em A for 0, dizemos que A pode ser acessado por qualquer operação do banco de dados que solicitar esse item. • Ressalta-se que duas operações são utilizadas no bloqueio binário, o lock_item e o unlock_item. Se utilizamos LOCK (A) = 1, sendo A nosso item, essa transação é forçada a parar; mas, se utilizarmos LOCK (A) = 0, a transação pode acessar o item A. No caso do UNLOCK, quando a transação termina de usar o item, emite uma operação UNLOCK, ou seja, o LOCK (A) volta para o valor 0 (zero) e desbloqueia o item, o qual pode ser acessado por outras transações. • Exemplo de código: lock_item(A): B: se LOCK(A) = 0 (*aqui, o item apresenta-se desbloqueado*) então LOCK(A) 1 (*aqui, o item apresenta-se bloqueado*) se não início 30 wait (until LOCK(A) = 0 go to B fim; unlock_item(A): LOCK(A) 0; (*aqui o item apresenta-se desbloqueado*) Se alguma transação estiver esperando, então desperta uma das transações que está esperando. Bloqueios compartilhados/ exclusivos • Outros autores também definem esse tipo de bloqueio com leitura/ gravação.Diferentemente do bloqueio binário, que somente uma transação mantém o bloqueio a um determinado item, no bloqueio compartilhado o item A pode ser acessado por várias transações ao mesmo tempo no caso de leitura; agora, se for no caso de gravação, no item A a transação precisa ter acesso exclusivo ao respectivo item. • Há três tipos de operações que ocorrem nesse tipo de bloqueio: Read_lock(A), Write_lock(A) e Unlock(A). O bloqueio do item A possui três estados: bloqueio para leitura, bloqueio para gravação e desbloqueio para transação. Outras transações podem ter acesso ao item bloqueado para leitura, e, por isso, ele pode ser chamado de item bloqueado para compartilhamento. No item bloqueio para gravação, somente uma transação mantém com exclusividade e o bloqueio no item pode ser chamado de item bloqueio exclusivo. • Exemplo de código: read_lock(A): 31 B: se LOCK(A) = “unlocked” então início LOCK(A) “read-locked”; num_de_leituras(A) 1 fim se não se LOCK(A) = “read-locked” então numero_de_leituras(A) numero_de_leituras(A) + 1 se não início wait (até que LOCK(A) = “unlocked” e o gerenciador de bloqueio desperta a transação); go to B fim; write_lock(A): B: se LOCK(X) = “unlocked” então LOCK(X) “write-locked” então início wait (até que LOCK(X) = “unlocked” e o gerenciador de bloqueio desperta a transação); go to B fim; 32 unlock (A): se LOCK(A) = “write-locked” então início LOCK(A) “unlocked”; desperta uma das transações aguardando, se houver fim se não se LOCK(A) = “read-locked” então início numero_de_leituras(A) numero_de_leituras(X) −1; se numero_de_leituras(A) = 0 então início LOCK(A) = “unlocked”; desperta uma das transações aguardando, se houver fim fim; 1.4 Visão Geral de Controle Neste tema, apresentamos a introdução e a conceituação da transação e sua importância dentro da Segurança em Banco de Dados. Também explicitamos acerca das propriedades da transação ACID: atomicidade, consistência (alguns autores chamam essa propriedade de correção), isolamento e durabilidade. Percebe-se que cada uma tem uma função muito importante nas transações. 33 A atomicidade pode ser descrita como tudo ou nada, isto é, ou as atualizações são realizadas como um todo ou não. Aqui podemos afirmar que não há atualização atinente à transação de modo parcial, pois, como dito, é tudo ou nada. O isolamento garante que uma transação seja isolada de todas as demais. Em resumo, a transação apresenta-se invisível em relação a todas as outras transações, tendo cada uma sua própria digital, de forma que nunca se confundem com outras, até realizar o COMMIT (sucesso). No caso da consistência, é a propriedade que assegura que uma transação deve conduzir o BD de um estado válido a outro estado válido. Por fim, temos a durabilidade, propriedade que afirma que, após realizada a transação com sucesso, esta permanecerá no banco de dados mesmo que ocorra um eventual erro no banco. Vale lembrar que as propriedades da transação são um dos conceitos mais importantes quando se fala em segurança de banco de dados, definindo os princípios que o SGBD deve possuir. Esse modelo (Atomicidade, Consistência, Durabilidade e Isolamento) está intimamente ligado aos princípios de Segurança de Dados, que são confidencialidade, integridade e disponibilidade. A confidencialidade está relacionada à garantia de que as informações estão acessíveis somente para aqueles clientes devidamente autorizados. Já a disponibilidade garante que as informações estejam sempre disponíveis para os usuários devidamente autorizados. Por fim, a integridade está relacionada à precisão, à consistência e à confiabilidade das informações recebidas pelos usuários Falamos também sobre as técnicas de bloqueio em duas fases para o controle de concorrência: bloqueio binário e bloqueio exclusivo/ compartilhado. Assim, temos como definição das operações do bloqueio 34 binário LOCK(item) e UNLOCK(item) e como definição das operações do bloqueio exclusivo/ compartilhado Read_lock(item), Write_lock(item) e Unlock(item). Referências Bibliográficas CHU, Shao Yong. Banco de dados: organização, sistemas e administração. São Paulo: Atlas, 1983. DATE, Christopher J. Introdução a sistemas de banco de dados. 8. ed. Rio de Janeiro: Elsevier, 2003. ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. 6. ed. São Paulo: Pearson, 2011. HERNADEZ, Michel J. Aprenda a Projetar seu Próprio Banco de Dados. São Paulo: Makron Books, 2000. HEUSER, Carlos A. Banco de dados relacional: conceitos, SQL e administração. Porto Alegre: Clube de Autores, 2019. ITO, Giani Carla. Banco de dados móveis: uma análise de soluções propostas para gerenciamento de dados. Florianópolis: UFSC, 2001. KROENKE, David M. Banco de Dados: Fundamentos, Projeto e Implementação. Rio de janeiro: LTC, 1999. ORACLE. Manual do Banco de Dados Oracle versão 8.1.7. EUA: Oracle Corporation, 2002. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de banco de dados. 6. ed. Rio de Janeiro: Elsevier, 2012. 35 Políticas de backup e recovery de banco de dados Autoria: Washington Henrique Carvalho Almeida Leitura crítica: Marcelo Ramillo Objetivos • Conceituar e exemplificar a importância dos backups. • Tratar da definição da política de backup. • Demonstrar a importância da recuperação de falhas do SGBD. 36 1. Introdução Neste tema, será abordado um assunto de grande importância, que é o tema Políticas de backup e recovery de banco de dados. A seguir são resumidos os principais tópicos a serem abordados. Figura 1–Backup iStock – NicoElNino/iStock.com. O assunto backup é um tema comum nas atividades de várias áreas, mas na temática de banco de dados se torna um ponto crítico para a garantia da continuidade dos negócios. Imaginemos, por exemplo, a ocorrência de uma falha no equipamento em que está instalado o software do Sistema de Gerenciamento de Banco de Dados (SGBD) e que não seja possível restabelecer esse servidor. Sem backup, todos 37 os dados seriam perdidos, o que pode acarretar até mesmo a falência de uma instituição. Nesse contexto, serão tratados os assuntos relacionados a seguir: • Backup. • Política de Backup. • Tipos de Backup. • Testes de Backup. • Recuperação de falhas no SGBD. • Tipos de Falhas. Ao final, será possível responder a algumas perguntas relacionadas ao assunto. São elas: 1. O que é backup? 2. Qual a importância do backup? 3. Qual o objetivo de uma política de segurança? 4. Quais os tipos de backup? 5. Qual a definição de backup completo? 6. Quais são os tipos de recuperação de falhas? 1.1 Backup Backup é o termo usado para a cópia de dados cujo objetivo é a recuperação em caso de falha e/ou perda. Para entender melhor e situarmos sua importância, vejamos um exemplo bem simples e corriqueiro na vida de todos nós: • Imaginemos que um aluno finalize o projeto final do curso e, como uma pessoa precavida, salva o trabalho em algum serviço na 38 nuvem, em um pen drive ou até mesmo no próprio computador. Depois, ele encaminha um e-mail com um anexo (o projeto final) para ele mesmo e, para garantir, ainda imprime e guarda na gaveta. O exemplo é simples, mas tudo que ele “guardou” é considerado um backup. Nesse procedimento, foram armazenados cinco arquivos com backups dos mesmos dados. • Na nuvem. • No pen drive. • No computador. • No e-mail. • A impressão. Nesse primeiro momento, podemos achar o procedimento apresentado correto, mas, na gestão de um Banco de Dados, os backups precisam ser realizados de forma sistemática e verificados periodicamente. Por esse motivo, será necessário entender a importância das políticas de backup. Para finalizar, conceituando de forma simples o que seria backup, é só traduzir a palavra, que significa cópia de segurança. Percebe-se que cada “item” citado anteriormente é uma cópia de segurança, e todos esses dados devem estar disponíveis e ser íntegros e de fácil acesso. 1.2 Políticade Backup Para que as ações de proteção sejam efetivas, devemos elaborar uma política de backup, que é um “manual” com todas as regras acerca do armazenamento de dados. Para termos uma ideia, ele nos responde algumas questões importantes • Quais os dados/informações para realizar o backup? 39 Na política de backup, devem ser definidos os dados dos quais iremos fazer backup, pois, se realizarmos backup de todos os dados, ficará muito caro para a empresa, uma vez que o armazenamento de dados custa muito caro, seja ele storage “físico” ou nuvem. Essa pergunta é crucial para a organização definir quais dados são importantes e devem constar no backup. • Qual o tipo de backup a ser realizado? É muito importante a organização definir o tipo de backup. Como exemplo, podemos citar o backup Full, que é muito mais caro para a organização do que um backup incremental, porque ele faz uma cópia de todos os dados, diferentemente do incremental, como veremos mais adiante. • Qual o local de armazenamento? Devemos definir aqui o local de armazenamento, isto é, se a cópia dos nossos dados irá para um storage “físico” ou para a nuvem. É necessário fazer um estudo técnico preliminar para definir uma solução, conforme a necessidade da empresa, como tamanho da empresa, ramo, quantidade de dados para backup, entre outros. Além disso planos de continuidade de negócios pregam a segregação de ambientes para não ficarem no mesmo local físico os dados e os backups, pois, no caso de uma falha catastrófica ocasionada por um incêndio, por exemplo, a recuperação dos dados seria impossível, pois os backups também seriam perdidos. • Qual a frequência da realização desse backup? O backup pode ser realizado diariamente, semanalmente, quinzenalmente ou mensalmente. É importante lembrar que o armazenamento de dados custa dinheiro; assim, quanto maior a frequência, possivelmente o custo aumenta. 40 • Quais os responsáveis por essa tarefa? É possível definir responsáveis ou automatizar o processo para a realização dos procedimentos do backup. A importância da política de backup é mitigar os riscos de perda de informações. Sua função é garantir que os backups estejam disponíveis quando essas cópias forem solicitadas. No âmbito da segurança em banco de dados, os backups podem ser melhor entendidos como cópias de segurança que são realizadas com periodicidade e constituem um ponto de partida para recuperar o banco de dados depois da ocorrência de uma falha, dependendo do grau de gravidade dessa falha. 1.3 Tipos de Backup Existem basicamente quatro tipos de política de backup tratados pelos principais autores. Imaginemos uma situação hipotética para podermos entender os tipos utilizando um exemplo simples. Todos os dados de um aluno estão armazenados na pasta chamada “TrabalhoDeConclusãoDeCurso”, e as subpastas apresentam-se conforme a figura a seguir: 41 Figura 2 – Subpastas da pasta “TrabalhoDeConclusãoDeCurso” do exemplo Fonte: elaborada pelo autor. Imaginemos agora que serão definidos tipos de backups que podem ser realizados em cima desse conjunto de informações. 42 Backup Completo (Full) • Realiza uma cópia de segurança total de toda a pasta para outro local de armazenamento, independentemente se houve atualização somente nas subpastas. No nosso exemplo, então, a cada execução de um backup desse tipo, todos os dados são novamente copiados para o local definido. Backup Incremental • Esse tipo de backup realiza a cópia de segurança somente das subpastas em que houve atualização desde o último backup incremental. Por exemplo, caso existisse a inserção de tabelas na subpasta “Tabelas” e a exclusão de figuras na pasta “Figuras”, a cópia de segurança somente seria realizada nessas pastas. Diferentemente do backup completo, o incremental não faria o backup em todas as pastas. Assim, em resumo, só são incrementadas na cópia as informações novas ou alteradas. Backup Diferencial • Esse tipo de backup é semelhante ao incremental. No entanto, no incremental, a cópia de segurança é realizada em relação à última cópia de segurança do backup incremental, enquanto no backup diferencial a cópia de segurança é realizada em relação à última cópia do backup completo. • Backup Diferencial: última cópia do backup completo. • Backup Incremental: última cópia do backup incremental. Backup Incremental Contínuo 43 • É semelhante ao backup incremental, mas a diferença está na automatização do processo; assim, não há necessidade de saber quais bancos de dados serão copiados, e, no nosso caso, quais subpastas necessitam de backup. 1.4 Outras classificações O backup pode ser classificado também em: • Backup lógico: realiza uma cópia dos scripts de criação de banco de dados, das tabelas e dos registros. Esse tipo de backup é o mais utilizado. • Backup físico: realiza uma cópia da pasta de instalação do banco de dados, salvando a estrutura do arquivo de instalação e incluindo os dados. Outra classificação de tipos de backup utilizada por alguns autores: • Backup on-line: ocorre enquanto o servidor apresenta-se em execução para que as informações contidas no banco de dados possam ser adquiridas a partir do servidor de banco de dados. Podemos citar uma característica desse tipo de backup: • De acordo Carvalho (2017, p. 136), devem ser tomados cuidados para impor bloqueio apropriado a fim de que as modificações de dados não ocorram de forma a comprometer a sua integridade. • Backup off-line: diferentemente do backup on-line, que ocorre enquanto o servidor de banco de dados apresenta-se em execução, o off-line ocorre quando o banco de dados está parado. Podemos citar duas características importantes desse tipo: • O servidor não fica disponível durante o backup, afetando de forma negativa os clientes. 44 • Não existe possibilidade de interferência do cliente, tornando o processo simples. 1.5 Recuperação de Falhas Sabendo os tipos de backups e as políticas básicas que podem ser utilizadas nas mais diversas bases de dados, pode-se pensar no cenário de recuperação de falhas. O conceito de recuperação de falhas é simples, trata-se do processo em que é realizado o retorno do banco de dados ao seu estado “sem falhas”, ou seja, antes de um problema ou desastre ocorrer, retornando assim a um estado consistente e válido com dados confiáveis. Esse assunto apresenta-se intimamente ligado às propriedades da transação chamadas de Propriedades ACID. A recuperação de falhas implementa um nível a mais de segurança em um ambiente de SGBD, pois nem sempre é possível que o SGBD garanta a consistência dos dados em caso de falhas. 1.6 Testes de Backup Uma atividade fundamental na garantia da consistência dos dados que são copiados de maneira segura são os testes de backup. Todas as políticas definidas de cópia e retenção devem ser testadas periodicamente, mesmo que seja comum nas organizações essas atividades serem relegadas. Assim, quando é necessária a recuperação de algum dado, verifica-se que o backup não funciona, ou seja, por problemas nas mídias ou por falha nos softwares o backup não está funcional. Na definição de políticas de backup, devem constar cláusulas que indiquem a periodicidade dos testes em ambientes específicos, 45 separados de produção, para validar se os dados das cópias de segurança realmente poderão ser utilizados quando necessário. 1.7 Tipos de Falhas Falhas ocorrem corriqueiramente nas instituições e podem ser ocasionadas por desastres naturais, incidentes elétricos e até por ações criminosas. O estudo da segurança da informação pressupõe a análise de riscos e a classificação da informação, mas, de forma simples no escopo do objeto de estudo desta disciplina, podemos classificar as falhas em dois tipos: Falha catastrófica • Essa falha ocasiona a perda permanente dos dados. Assim, para recuperá-los, é necessário a restauração da última cópia do banco de dados, anterior ao colapso. Dessa forma, o SGBDrealiza a restauração do banco de dados conforme o último backup armazenado. Falha não catastrófica • Nesse caso, é necessário saber a abrangência do problema ocasionado e verificar qual política de backup utilizada pode atender à demanda para recuperar os dados com o menor impacto possível, em alguns casos sem perda de dados e em outros com pequenos períodos de perda. De acordo com Elmasri e Navathe (2011, p. 557), o gerenciador de recuperação de um SGBD também precisa ser equipado para lidar com falhas como as de disco. A principal técnica utilizada para lidar com essas falhas é um backup do banco de dados em que a base inteira e os logs são periodicamente copiados para um meio de armazenamento de menor custo, como fitas magnéticas ou outros dispositivos de 46 armazenamento off-line de grande capacidade. No caso de uma falha catastrófica do sistema, a cópia de backup mais recente pode ser recarregada da fita para o disco, e o sistema é reiniciado. Os dados de aplicações críticas, como bancos, seguros, mercado de ações e outros negócios críticos, são copiados de tempos em tempos em sua totalidade e movidos para locais seguros e fisicamente separados. Câmaras de armazenamento subterrâneas têm sido usadas para proteção contra danos ocasionados por inundação, tempestade, terremoto ou incêndio. Eventos como o ataque terrorista de 11 de setembro em Nova York (em 2001) e o desastre do furacão Katrina em Nova Orleans (em 2005) criaram uma maior conscientização sobre a recuperação, após desastres, dos bancos de dados críticos aos negócios. Para evitar perder todos os efeitos das transações que foram executadas desde o último backup, é comum fazer o backup do log do sistema em intervalos mais frequentes do que o do banco de dados inteiro, copiando-o periodicamente para fitas magnéticas. O log do sistema costuma ser muito menor do que o próprio banco de dados e, portanto, pode ser copiado com mais frequência, fazendo com que os usuários não percam todas as transações que realizaram desde o último backup. Todas as transações confirmadas e registradas na parte do log do sistema que foi copiada para a fita podem ter efeito sobre o banco de dados refeito. Um novo log é iniciado após cada backup do banco de dados. Assim, para recuperar-se da falha do disco, o banco de dados é primeiramente recriado no disco com base em sua cópia de backup mais recente em fita. Depois disso, os efeitos de todas as transações confirmadas, cujas operações foram registradas nas cópias do log do sistema, são restaurados. 47 1.8 Visão Geral sobre Backups O termo backup ou “cópia de segurança” é uma cópia dos dados armazenados em uma fonte primária para uma fonte de armazenamento secundária. Para a gestão efetiva das cópias de segurança, é necessária a definição de políticas e de seu objetivo principal, que é a mitigação de riscos de perda da base dados. Nas atividades de gestão de um SGBD realizadas por um Administrador de Banco de Dados (DBA), são definidas inúmeras políticas de backups de acordo com a relevância e os riscos atrelados à perda dos dados que serão protegidos. É necessário entender que em um mesmo ambiente de SGBD existem normalmente inúmeras bases de dados e cada uma delas vai ter uma política de backup diferente. Por exemplo, dados que têm pouca ou nenhuma alteração em longos períodos de tempo não necessitam ser copiados em políticas de backup diárias. Imaginemos o caso da Tabela que armazena os Estados do Brasil; se a última vez que um estado foi criado foi há mais de 30 anos, então não há a necessidade de realizar cópia desses dados periodicamente, podendo ser realizada anualmente. O custo para armazenar backups é algo que sempre é levado em consideração na definição de políticas. Por isso, às vezes em cenários de restrições orçamentários de uma organização, muitos dados acabam por não ser incluídos nas políticas mais abrangentes, o que pode ser um risco para a instituição no caso de falhas. 48 Referências Bibliográficas CARVALHO, Vinícius. MySQL: comece com o principal banco de dados open source do mercado. São Paulo: Casa do código, 2017. DATE, Christopher J. Introdução a sistemas de banco de dados. 8. ed. Rio de Janeiro: Elsevier, 2003. ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. 6. ed. São Paulo: Pearson, 2011. HEUSER, Carlos A. Banco de dados relacional: conceitos, SQL e administração. Porto Alegre: Clube de Autores, 2019. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de banco de dados. 6. ed. Rio de Janeiro: Elsevier, 2012. 49 Aplicação de Auditoria em banco de dados Autoria: Washington Henrique Carvalho Almeida Leitura crítica: Marcelo Ramillo Objetivos • Apresentar o conceito de auditoria. • Expor a importância da auditoria em banco de dados para as organizações. • Conceituar e exemplificar comandos relacionados a cada tipo de linguagem de BD. 50 1. Introdução A auditoria em banco de dados é um tema relevante na gestão de um Sistemas Gerenciador de Banco de Dados (SGBD) e o Administrador de Banco de Dados (DBA) tem entre suas atribuições a verificação dos controles estabelecidos pelas diversas políticas aplicadas nas bases de dados. Muitos estudos apontam que os incidentes de segurança da informação que trazem maiores prejuízos às organizações são os realizados por funcionários da própria instituição que possuem acessos privilegiados. Neste tema, estudaremos sobre a aplicação de auditoria em banco de dados. Seguem os principais tópicos sobre o assunto: • Auditoria. • Auditoria em Banco de Dados. • Formas para auditar Banco de Dados. • Tipos de Linguagem. 51 Figura 1 – Auditoria em Banco de Dados iStock – Erikona/iStock.com. Como já é de praxe, no final deste tema, será possível responder a algumas perguntas atinentes ao assunto em questão. São elas: 1. O que é auditoria? 2. Qual a importância da auditoria de Banco de Dados? 3. O que é log? 4. O que é DML? 5. O que é DDL? 1.1 Auditoria Para entender a auditoria no contexto de um banco de dados, deve-se compreender primeiro o que significa esse tema, pois ela está ligada a diversas temáticas, tanto em organizações privadas como públicas. 52 Além disso, a governança, um tema de bastante relevância, tem como premissa a utilização da ferramenta de auditoria para verificação de conformidade. Crepaldi (2010) entende a auditoria como o estudo e a avaliação sistemática das transações, dos procedimentos, das operações, das rotinas e das demonstrações financeiras de uma entidade. E segundo Franco e Marra (2011), a auditoria é um trabalho que deve ser minuciosamente planejado e deve ser construído um plano de auditoria para isso. Essas definições de autores renomados vão situar a importância do tema de forma mais ampla. Todavia, de uma forma sucinta e prática, pode-se definir auditoria por meio da própria tradução do verbo em inglês to audit, que significa examinar, certificar e confirmar procedimentos, processos e normas. Alguns autores definem a palavra auditar por meio da sua origem do latim audire, que significa audição. Diante disso, os especialistas na área a conceituam como o ato de escutar o administrador. No âmbito dessa matéria, podemos dizer que esse auditor é o DBA, profissional responsável por gerenciar, criar regras, atualizar e monitorar o banco de dados. A auditoria verifica e garante que um usuário não altere as informações às quais ele não deve ter acesso. As categorias de auditoria devem ser definidas por meio de checklists, que irão facilitar o rastreamento de alterações no banco de dados. A imagem a seguir retrata o que foi dito. 53 Figura 1 – Auditoria por Lista de Verificação (Checklist) iStock – Porcorex/iStock.com. Trazemos por meio de um exemplo simples uma realização de auditoria. Há uma norma na empresa XYZ que determina que os cinco relatórios de vendas devem seguir essa sequência 1. Relatório 1 – Sapatos. 2. Relatório 2 – Camisas. 3. Relatório3 – Cuecas. 4. Relatório 4 – Calças. 5. Relatório 5 – Meias. Em um certo momento, o chefe de Bob solicita a ele que faça os relatórios de vendas dos seguintes produtos: sapatos (1), camisas (2), https://www.istockphoto.com/br/portfolio/porcorex?mediatype=photography 54 cuecas (3), calças (4) e meias (5). Bob faz os relatórios de acordo com a ordem a seguir: 1. Relatório 1 – Meias. 2. Relatório 2 – Camisas. 3. Relatório 3 – Calças. 4. Relatório 4 – Cuecas. 5. Relatório 5 – Sapatos. Seguindo a orientação de seu chefe, será que no caso de uma futura auditoria será possível dizer que os relatórios realizados estão em conformidade com a norma? Vamos ver um quadro comparativo de como a norma solicitava a produção dos relatórios e como Bob os realizou. Quadro 1 – Comparativo Norma versus Trabalho Realizado Número do Relatório Como a norma determinou Como Bob fez Em conformidade com a norma? 1 Sapatos Meias Não 2 Camisas Camisas Sim 3 Cuecas Calças Não 4 Calças Cuecas Não 5 Meias Sapatos Não Percebe-se que uma auditoria traria recomendações a essa área por não seguir a norma, como no caso dos relatórios (1, 3, 4 e 5); somente o relatório 2 está compliance (em conformidade) com a norma. 1.2 Auditoria em Banco de Dados A auditoria é um dos recursos mais eficientes para a segurança do banco de dados. Independentemente do SGDB usado, em sua maioria possui ferramentas e métodos para a seleção da tecnologia de auditoria correta. Essa ação irá determinar o impacto no desempenho 55 da auditoria, na proteção de dados e na geração de relatórios sobre informações que deverão ser ajustadas. O que realmente fará a diferença no processo de auditoria de um banco é ter bem definido o que deverá ser auditado. Em se tratando da estrutura complexa de um SGDB, a definição é primordial para que os resultados sejam positivos, seja por meio da análise dos direitos dos usuários em executar comandos DML em um conjunto de tabelas ou no comprometimento que poderá afetar o processamento do servidor ao criar uma instrução SQL sem índices. 1.2.1 Controles da Administração do BD É importante salientar que a auditoria deve se estender por situações que o DBA é responsável. Um exemplo, quando se cria uma instância de banco de dados, automaticamente o SGDB cria uma configuração padrão, incluindo usuários e senhas. Faz-se necessário nesses casos alterar e criar senhas fortes, o que é um tipo de auditoria que não tem relação com o usuário. Um outro exemplo de relatório de auditoria é analisar o limite de tempo de time out configurado para cada usuário. Ou seja, se a sessão não expirar e o usuário se esquecer de fazer logout, o sessão permanecerá aberta, permitindo a qualquer pessoa realizar uma alteração de informação. Outra situação recorrente no uso de auditoria são instruções SQL mal estruturadas pela aplicação. Esse tipo de problema geralmente absorve processamento, gerando lentidão para toda a empresa. Nesse caso, o DBA deverá auditar e identificar o processo, o módulo da aplicação, e corrigir a instrução que está gerando a lentidão para a correção. A utilização de banco de dados é uma forma organizada e eficiente para manter os dados íntegros, confiáveis e disponíveis; todavia, 56 somente o armazenamento dos dados em um banco não garante essas características. É preciso também se preocupar com a segurança do SGBD, que possui como um dos seus principais objetivos mitigar riscos para que os dados armazenados não sejam acessados por pessoas não autorizadas e que as pessoas autorizadas tenham acesso a esses dados sempre preservando os três princípios básicos da segurança da informação, o CID (Confidencialidade, Integridade e Disponibilidade). Para garantir que a segurança seja eficiente de fato, devem ser realizadas auditorias para se certificar sobre o que os usuários estão fazendo, ou seja, o que estão autorizados a fazer. Dessa forma, não basta uma empresa ter uma SGBD em operação apenas, pois a informação nele armazenada é constantemente alterada; dependendo do tipo de aplicação que opera sobre esses dados, a segurança de bancos de dados possui aspectos relevantes no dia a dia da operação das bases de dados. Da mesma forma, não basta ter somente segurança em banco de dados sem auditoria. Como já relatado, muitos problemas graves são advindos de usuários que possuem acesso válidos; por isso ela se torna tão importante. Então, se existe um banco e este não tem segurança, todas as informações poderão ser acessadas por quem quiser. Por outro lado, se tem segurança, é preciso haver auditoria nesse banco, pois é a única forma de garantir que a política de segurança está cumprindo seu objetivo, ou seja, garantindo acesso somente a usuários autorizados e que estes estejam de fato realizando operações legais. Esses três conceitos apresentam-se inerentemente ligados entre si, conforme Figura 2. 57 Figura 2 – Camadas da Auditoria em Banco de Dados Fonte: elaborada pelo autor. Como já dito, a auditoria quer saber se aquela pessoa que estava autorizada a realizar certas ações no banco de dados está de fato realizando somente aquelas ações, bem como se existem pessoas tendo acesso a informações que não lhes foram autorizadas. Vejamos um exemplo: O usuário A possui somente a permissão de realizar select na tabela A, mas com a auditoria percebe-se que esse usuário realizou update nessa mesma tabela; ou que o usuário B não tem permissão a nenhuma tabela do banco de dados, mas verifica-se que ele tem acesso não somente a uma tabela, e sim a todas as tabelas do banco. O banco de dados deve prover meios para que o DBA o audite. Ele deve ter acesso a todas as ações, isto é, a todos os comandos que foram 58 executados no banco com o objetivo de verificar se houve alguma ação indesejada, como alterações, exclusões ou inclusões indevidas de dados. Para isso, há algumas ferramentas que auxiliam na auditoria, tais como: Oracle Audit Vault, Firewall do Banco de Dados (AVDF) e db2audit da IBM. 1.3 Formas para auditar Banco de Dados Podemos citar duas formas de auditar banco de dados, por meio de: • Logs. • Regras. Para resolver o problema de ações indesejadas, podemos implementar logs no banco de dados, que nada mais são que um arquivo que grava todas as ações realizadas no SGBD. Resumidamente, o objetivo do arquivo de Log é gravar as atividades que o usuário realiza no banco de dados. Em outras palavras, tudo que for realizado será registrado no Log e somente o DBA ou a quem ele der permissão tem acesso a esse arquivo. Devemos lembrar que, em um banco de dados médio, um arquivo de log poderá ter dezenas de gigabytes de texto corrido. Além dos logs, podem ser auditadas as regras estabelecidas aos usuários ou grupos, baseadas nos tipos de linguagem SQL, como será demonstrado a seguir. Um exemplo de ferramenta de análise de log é o Oracle Trace File Analyzer, que busca auxiliar/agilizar a árdua tarefa de coleta e análise de logs pelo DBA e/ou Oracle Suporte. 59 1.3.1 Segregação de Funções Alguns manuais e até mesmo legislações internacionais, como a Lei Sarbannes Oxley (SOX), indicam a boa prática de segregação de funções para fins de divisão de responsabilidades e verificação dos atos exarados pelos profissionais que executam atividades críticas. O Manual de Auditoria de Sistemas do TCU (1998), por exemplo, exemplifica que devem ser segregadas as funções de administração de dados. Essa segregação pode ser implantada por comitês de governança ou por meio de atribuição de responsabilidades segregadas no banco de dados por esquemas ao DBA envolvido na gestão, a fim de que as ações sempre sejam verificadas por mais de um responsável ou por áreas distintas. Para exemplificar a questão, basta pensarmos que apenas um DBA faz a gestão de todo o SGBD de uma organização, de forma que seus atos não têm como ser auditados, mas isso não deve ocorrer em um cenário com segregação de funções. A segregação de funções é umaprática simples para evitar problemas graves, em que todas as operações são no mínimo realizadas e verificadas por um par de pessoas distintas. Um exemplo simples seria um DBA, que concede privilégios, ter as concessões verificadas por seu chefe, ou até mesmo para conceder os privilégios precisar previamente obter autorização explícita. Esse tipo de controle é facilmente implementado em ferramentas de atendimento de chamados, como o Ocomon, software livre, ou o Control Desk da empresa IBM. 1.3.2 Tipos de Linguagem As regras podem ser criadas no banco de dados por meio de tipos de linguagens, são elas: 60 Quadro 2 – Linguagens SQL Tipo de Linguagem Descrição Comandos Associados DML – Data Manipulation Language Manipulação de Dados INSERT, UPDATE e DELETE DDL – Data Definition Language Definição de Dados CREATE, ALTER e DROP DQL – Data Query Language Consulta de Dados SELECT DCL – Data Control Language Controle de Dados GRANT e REVOKE DTL – Data Transaction Language Transação de Dados BEGIN TRANSACTION, COMMIT e ROLLBACK Fonte: elaborado pelo autor. Então, a verificação de regras pode ser realizada pelo DBA ao consultar se os privilégios definidos de fato batem com os privilégios concedidos no SGBD. No exemplo inicial do caso do Bob, o DBA precisa verificar se o que está na norma, no caso a política de concessão de privilégios, está de fato batendo com os privilégios concedidos na base. Alguém pode se perguntar como pode um usuário A ter pela política apenas privilégios, por exemplo, de DML e depois ser verificado que ele também possui privilégios de DQL, ou seja, consultar dados. Isso pode ocorrer por diversos fatores, principalmente pela liberação de acessos indevidos. Por exemplo, no caso de o DBA liberar acessos de maneira irrestrita, sem levar em consideração as normas estabelecidas; ou em casos de invasão ao SGBD, a partir da qual determinado usuário consegue acesso com privilégios de DCL e sai concedendo permissões para usuários que não deveriam tê-las; ou até mesmo em cenários de ataques do tipo de engenharia social, em que um funcionário ou colaborador descobre a senha do DBA com o intuito de cometer ilegalidades e obtém acesso para implementar acessos indevidos. 61 Por isso, a atividade de DBA deve ser desempenhada por pessoas que entendam a importância e as responsabilidades dessas atribuições, pois qualquer um dos casos anteriores pode levar a fraudes e problemas sérios nas instituições, sendo cabíveis penalidades legais às pessoas envolvidas. 1.3.3 Exemplificando com o MySQL Em bancos de dados relacionais de metadados de banco de dados, como informações sobre o servidor, o nome de um banco de dados ou de uma tabela, o tipo de dado de uma coluna ou os privilégios de acesso são armazenados no dicionário de dados e/ou no catálogo do sistema. O MySQL fornece metadados de banco de dados em um esquema especial chamado INFORMATION_SCHEMA, havendo um desses em cada instância do MySQL. Ele contém várias tabelas somente leitura que podem ser consultadas para obter as informações necessárias. Dependendo do que for preciso consultar, esse banco de dados pode apoiar os trabalhos de auditoria e servir de base para a análise de desempenho. 62 Figura 3 – Ferramenta HeidiSQL Fonte: acervo do autor. Já para a consulta de privilégios, o MySQL armazena informações dos seus usuários em outro banco de dados, que é o MySQL, demonstrado na Figura 3. As quatro tabelas principais que contêm informações valiosas para auditoria são: user, db, tables_priv e columns_priv. A tabela user armazena as informações de todos os usuários do banco, como seu próprio nome já sugere; a tabela db armazena os privilégios dos usuários de um banco de dados específico; e as tabelas com final _priv armazenam privilégios associados a tabelas e colunas. Normalmente, apenas os DBA com privilégios de root (superusuário) acessam essas informações. 63 1.4 Considerações Finais A aplicação da auditoria em banco de dados é uma tarefa importante para a garantia de conformidade nas operações executadas sobre os dados. Sua função principal é agregar à segurança do banco de dados uma nova camada de segurança para a governança dos dados, pois uma boa gestão só pode ser realizada com a aplicação de controles e a verificação das atividades. Há um senso comum de que a auditoria tem como foco verificar apenas operações indevidas, mas seu principal objetivo é garantir a mitigação de riscos, os quais podem levar à perda de dados e à quebra da segurança da informação. Muitas instituições precisam, para sobreviver no mercado, garantir a integridade dos dados que mantêm, e é a auditoria que fornece subsídios para a confirmação, a partir de ações necessárias para evitar riscos que possam ser materializados. Referências Bibliográficas BRASIL. Tribunal de Contas da União. Manual de Auditoria de Sistemas. Brasília: TCU, 1998. BRITO, Claudenir; FONTENELLE, Rodrigo. Auditoria privada e governamental: teoria de forma objetiva e mais de 500 questões comentadas. 3. ed. Niterói: Impetus, 2016. CREPALDI, Sílvio Aparecido. Auditoria contábil: teoria e prática. 6. ed. São Paulo: Atlas, 2010. DATE, Christopher J. Introdução a sistemas de banco de dados. 8. ed. Rio de Janeiro: Elsevier, 2003. ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. 6. ed. São Paulo: Pearson, 2011. FRANCO, Hilário; MARRA, Ernesto. Auditoria contábil. 4. ed. São Paulo: Atlas, 2011. HEUSER, Carlos A. Banco de dados relacional: conceitos, SQL e administração. Porto Alegre: Clube de Autores, 2019. 64 SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de banco de dados. 6. ed. Rio de Janeiro: Elsevier, 2012. 65 Bons estudos! Sumário Gerenciamento de usuários e seus privilégios Objetivos 1. Introdução 2. Segurança de dados 3. Tipos de Segurança de Banco de Dados 4. Medidas de Controle 5. Segurança de Dados e o DBA 6. Principais privilégios Referências Bibliográficas Controle de Bloqueio em Transações: Locks Objetivos 1. Introdução Referências Bibliográficas Políticas de backup e recovery de banco de dados Objetivos 1. Introdução Referências Bibliográficas Aplicação de Auditoria em banco de dados Objetivos 1. Introdução Referências Bibliográficas
Compartilhar