Introdução


Uma das maiores preocupações das empresas que fazem uso de algum banco de dados tem sido a segurança da informação que são usadas em seus processos.
Os dados ficariam vulneráveis a ataques de pessoas maliciosas se não fossem os SGBDs, pois eles possuem uma ou mais camadas de segurança que visam proteger e impedir o contato direto com o dado físico que ele gerencia, fazendo com que o banco de dados seja imune a falhas gravíssimas.


;Regras de segurança



A segurança dos SGBDs deve obedecer a três regras, são elas:
Confidencialidade (ou Sigilo): é a garantia de que a informação será acessada somente por pessoas autorizadas a terem acesso;
Disponibilidade: é a garantia de que as pessoas autorizadas obtenham acesso à informação sempre que solicitada;
Integridade: é a garantia de que a informação só pode ser alterada por pessoas autorizadas;


Princípios de segurança


  • Controle de Redundância:
    • A redundância é caracterizada por conter uma informação de forma duplicada.
    • O controle de redundância por sua vez, não permite inserir dois registros com a mesma chave primária ou excluir algum registro que esteja relacionado com outras tabelas, para que assim não haja inconsistência de dados.
    • Para isso, o SGBD deve oferecer este recurso
  • Controle de Concorrência:
    • Quando transações SQL são executadas concorrentemente, pode se haver uma violação na consistência da base de dados, mesmo que cada operação tenha sido feita individualmente correta.
    • Atualmente, os sistemas desenvolvidos utilizam-se da multiprogramação que permite a execução de transações visando o compartilhamento do processador” (AZEVEDO, CASTRO e SERRÃO, s.d., s.p.)
    • Por isso, existe a necessidade de controlar a interação dessas transações, através do controle de concorrência, por meio de mecanismos especializados.
  • Restrições de Integridade:
    • As restrições de integridade servem exatamente para evitar danos acidentais em um Banco de Dados, garantindo assim que alterações realizadas por usuários autorizados não resultem na inconsistência de dados.
    • Outra utilização é assegurar que um valor que está em uma relação de um conjunto de atributos também esteja para certo conjunto de atributos em outra relação.


Mecanismos de segurança


  • Mecanismos de acesso discricionário:
    • Utilizados para conceder privilégios a usuários
    • Leitura, inclusão, exclusão e atualização
  • Mecanismos de acesso obrigatório:
    • Implementados para estabelecer níveis de acesso classificando os dados e os usuários
    • Baseaiam-se no conceito de papéis e conforme as políticas de segurança da empresa.


Administrador de banco de dados (DBA)


  • DBA é a autoridade máxima, também conhecido como superusuário
  • Funções:
    • Incluir concessão de privilégios, classificação de usuários e dados de acordo com as políticas de acesso da empresa.
    • Concede e revoga privilégios a usuários específicos e/ou a grupos de usuários, digitando comandos para as seguintes situações:
      • Criação de contas: cria contas para novos usuários ou grupos para assim habilitar o acesso ao banco.
      • Concessão de privilégios: é a ação em que se concedem novos privilégios a determinadas contas.
      • Revogação de privilégios: consiste em cancelar certos privilégios antes concedidos a algumas contas.


  • Contas de usuário:
    • As contas de usuário são criadas pelo DBA, para que uma pessoa ou grupo possa ter acesso ao banco de dados
    • Só serão criadas caso seja realmente necessário
    • Desta maneira, o usuário recebe um log in e senha que serão utilizadas para a realização do acesso
    • Para se manter as informações dos usuários no banco de dados segundo Elmasri e Navathe (2006, p. 529):
      • "Não há dificuldades em manter informações dos usuários do banco de dados e de suas contas e senhas por meio da criação de uma tabela ou um arquivo cifrado com os dois campos NumeroDeConta e Senha(...). Sempre que uma nova conta for criada, um novo registro é incluído na tabela. Quando uma conta for cancelada, o registro correspondente deve ser excluído da tabela."
    • O sistema também deve manter todas as operações realizadas pelo usuário desde a sua entrada (log in) até a sua saída (log off), mantendo assim todas as interações feitas durante a conexão.


Injeções de SQL


  • Em um sistema onde há o armazenamento das informações em um banco de dados e uma interação com o usuário via Web, existe a possibilidade da injeção de SQL (SQL Injection). * Este ataque é basicamente a execução de comandos SQL, tanto DML quanto DDL
  • Os autores FILHO, CAVALCANTI e FILHO (s.d.; s.p.) afirmam:
    • "Estes comandos são executados através das entradas de formulários web, ou seja, no local destinado para digitação de informações pelo usuário, onde são passados comandos SQL, que por falhas nas aplicações acabam por resultar em alterações no banco de dados ou no acesso indevido à aplicação."



Métodos utilizados pelos SGBDs


Para que a segurança seja cumprida, os SGBDs utilizam de alguns artifícios para fugir (eliminar ação) de ataques e de perdas, são eles:
Controle de acesso, que pode ser:
Restrito (DAC): é baseado no conceito de privilégio ou direito de acesso padrão (login/senha) que cada usuário possui, assim sendo, dá oportunidade para que o usuário controle os acessos aos seus próprios dados;
Mandatório (MAC): é mais rigoroso do que o DAC, pois utiliza uma abordagem hierárquica e classificatória (tanto para o usuário quanto para o banco de dados).
Concessão/Revogação de privilégios (inserir, alterar, excluir etc) que são estabelecidos pelo Administrador do BD
Criptografia: serve para mascarar os dados para que fique ilegível, de forma que possa ser conhecido apenas pelo padrão utilizado pelo SGBD, evitando assim leitura direta aos dados para pessoas não autorizadas. A criptografia pode ser de dois tipos:
Simétrica: Todo o sistema possui apenas uma chave de decifragem (Algoritmo que transforma um dado legível em outro ilegível e vice-versa)

Por chave pública: Cada usuário do sistema tem sempre duas chaves, uma é a chave pública para criptografia (conhecida por todos) e a outra é a chave privada para descriptografia (conhecida somente pelo usuário).

Referências


[1] [2] [3] [4] [5] [6]