A tecnologia está cada vez mais presente na vida das pessoas e nas empresas, e isso está gerando um crescimento de dados e um acúmulo de informações em quantidades absurdas e em várias mídias.
Na lição anterior, falamos sobre como organizar todos esses dados gerados nas empresas por meio de um Data Center, em que as equipes de Tecnologia da Informação (TI) fazem o armazenamento e o gerenciamento dos diversos sistemas e das informações das empresas. Mas como manter a segurança desses dados? Como as empresas devem definir e escrever as normas e as políticas de segurança do banco de dados?
Nos dias atuais, com as quantidades absurdas de dados e informações em várias mídias, as empresas e os negócios estão cada vez mais dependentes das tecnologias que surgem. Por esse motivo, torna-se necessário garantir que a informação utilizada esteja segura e confiável e que respeite os níveis de prioridade e necessidades. A segurança em banco de dados é considerada uma das maiores preocupações para as empresas atuais, porque o cuidado em assegurar a integridade, a confiabilidade e a disponibilidade de suas informações deve ser constante. Dessa forma, o objetivo desta lição é introduzir o estudo sobre a Segurança de Bancos de Dados.
Nesse momento, convido-o(a) a pensar no seguinte questionamento: como garantir que as informações que estão sendo utilizadas sejam seguras e confiáveis e que respeitem os níveis de prioridade e necessidades das empresas e clientes? Para responder a essa pergunta, analisaremos o seguinte cenário: nos últimos anos, tem ocorrido um avanço extraordinário na disseminação e popularização da rede Internet e das chamadas “lojas virtuais” para comércio, pela Internet, e das home-bankings, que possibilitam transações bancárias usando uma senha (ou chave) de conhecimento apenas da pessoa autorizada (TERADA, 2008).
Além disso, temos diversos outros serviços de notícias e informações econômicas, sociais, artísticas, médicas, técnico-científicas, entretenimento etc. Toda essa tecnologia possui vários serviços que oferecem conforto, economia e rapidez em tarefas, que, antes, eram cansativas, custosas e demoradas e, ainda, muitas que trazem diversão.
Pensaremos em sistemas de comunicação, como a Internet. Esses sistemas são controlados por computadores em rede, em que as informações trafegam desde a origem onde está armazenada ou foi criada até o destino onde se encontra a informação desejada. Em muitos casos, há mais de um computador que repassa a informação entre a origem e o destino, principalmente quando estão geograficamente distantes (TERADA, 2008).
Para exemplificar, pense no seguinte cenário: temos duas pessoas, a Aline e o Lucas. A Aline está usando o computador de origem, e o Lucas está usando o computador de destino. Tanto a Aline quanto o Lucas podem ser um programa de computador automatizando algum serviço de informação. Por exemplo, o computador X é, por exemplo, o provedor Internet da Aline, e o Y é o provedor do Lucas, e a linha de comunicação pode ser, por exemplo, uma linha telefônica.
Considerando esse cenário, temos preocupações muito importantes: como esconder informações sigilosas, como o número de cartão de crédito da Aline e das pessoas que controlam as linhas de comunicação e os computadores intermediários, como X e Y? Como evitar que um mal-intencionado leia e altere parte da informação transitando na linha de comunicação antes de chegar ao Lucas? Como evitar que alguma pessoa desautorizada leia as informações já enviadas e armazenadas no computador do Lucas? Usando conceitos, normas e políticas de segurança de Bancos de Dados.
A segurança de um sistema de banco de dados, de acordo com Alves (2014), está relacionada com a integridade e a proteção das informações armazenadas nele. É uma área que procura resolver alguns problemas, como:
Problemas legais e éticos: direito de acessar informações que são consideradas confidenciais e que não podem ser acessadas por pessoas não autorizadas.
Problemas políticos e governamentais ou corporativos: tipo de informação que não pode se tornar pública.
Problemas relacionados ao nível de sistema: funções de segurança devem ser impostas, desde o nível de hardware, o nível de sistema operacional e o nível do sistema gerenciador de banco de dados.
Quando se trabalha com segurança, precisamos considerar algumas questões:
Direito (ou não) de acesso a determinadas informações tidas como confidenciais ou sigilosas (salários de funcionários que não podem ser acessadas por pessoas sem autorização.
Nível de segurança, ou seja, as funções de segurança devem ser tratadas no nível físico, no nível operacional ou no nível do sistema de gerenciamento do banco de dados.
Quando o sistema é usado por muitos usuários, é imprescindível a existência de técnicas que controlem e forneçam acesso apenas a partes específicas do banco de dados.
Todos os SGBDs (Sistemas Gerenciadores de Banco de Dados) relacionais, atualmente, possuem um subsistema responsável pelo gerenciamento de usuários, pela definição de níveis de acesso e, também, pela seleção das operações que cada usuário pode executar no banco de dados (ALVES, 2014).
Imaginemos um usuário acessando um sistema. Ele começa abrindo o sistema e, com sua identificação de usuário e senha de acesso, efetua o login no sistema, e isso ocorre toda vez que precisar utilizar a aplicação que acessa o banco de dados. Com isso, o SGBD grava num arquivo, denominado log do sistema, qualquer operação efetuada pelo usuário, como consulta, edição de dados ou inclusão de registros. Esse recurso é muito útil quando se faz uma auditoria do sistema em casos de haver alguma suspeita de adulteração das informações de forma indevida (ALVES, 2014).
Os SGBDs ajudam na criação e no armazenamento de regras para o controle de acesso dos usuários, como regras de autorização e o cumprimento dessas regras quando tentam acessar o banco de dados.
E quem é o responsável pela administração e pelo gerenciamento de um SGBD? É o Administrador de Banco de Dados (DBA). O DBA possui a conta do sistema, ou conta super usuário, que permite todos os acessos aos dados.
Os acessos privilegiados do DBA abrangem:
Criação de conta.
Concessão de privilégio.
Revogação de privilégio.
Atribuição de nível de segurança.
É função do DBA criar contas e senhas para que os grupos de usuários do sistema tenham acesso ao SGBD, ou seja, ele concede e revoga privilégios especiais sobre os dados, como modificação, exclusão ou inclusão de registros. Além disso, ele tem a responsabilidade de atribuir às contas de usuário diferentes níveis de segurança (PICHETTI; VIDA; CORTES, 2020). Visualizemos a Figura 1:
Na Figura 1, temos o DBA, que cria as regras de autorização, as quais definem quem pode acessar os dados, que tipo de banco de dados pode ser acessado e para qual operação. Para cumprir as regras de autorização, é necessária a autenticação do usuário, que ocorre quando um usuário se conecta pela primeira vez ao SGBD, mas as regras de autorização são verificadas para cada solicitação de acesso (MANNINO, 2008).
Imagine que, embora possa ter permissão para consultar uma tabela, pode ser que, devido a uma regra de negócios da empresa, o usuário não possa ter acesso a todos os dados que estão nessa tabela. Assim, a permissão para consultar a tabela pode não garantir a segurança, pois esse usuário teria acesso a dados que não lhe dizem respeito.
Um aspecto de segurança que pode ser adotado, de acordo com Alves (2014), é a forma de preservação e de recuperação de informações. O DBA faz uso de recursos oferecidos pelo próprio servidor de banco de dados ou pode utilizar outro meio que possibilite ter cópias do banco de dados, ou seja, fazer backups (cópias de segurança) periódicos.
Para finalizar nossa lição e para você fixar bem o conteúdo, pensemos sobre o tema segurança e como ele é amplo e envolve várias outras áreas. Por trás da segurança, existem os aspectos éticos e legais sobre quem pode acessar os dados, quando os dados podem ser divulgados e que tipo de dados pode ser acessado. Agora, imagine o seguinte cenário: um DBA tem permissão para alterar a informação dos alunos e pode usar esse privilégio para atualizar notas de alunos sem a permissão do instrutor. Se for uma pessoa mal-intencionada pode tirar proveito de uma vulnerabilidade do código implementado no banco de dados para realizar o ataque e realizar essas atualizações nas notas. Por exemplo, analise o código SQL a seguir:
SELECT * FROM usuário WHERE nomeusuario = ‘lucas’ and SENHA = ‘senhalucas’.
Imaginemos, agora, que um atacante tente alterar (ou manipular) a instrução SQL:
SELECT * FROM users WHERE nomeusuario = ‘lucas’ and (SENHA = ‘senhalucas’ or ‘x’ = ‘x’).
Nesse exemplo, a manipulação de SQL ocorreu durante o login de acesso do usuário no banco de dados. Com essa modificação, o atacante consegue fazer o login sem saber a senha do usuário e poderá realizar as mesmas operações que o usuário tinha permissão para realizar.
Quais danos essa invasão poderá trazer a uma empresa? Recomendo que você pesquise mais sobre segurança de banco de dados ou ataques à segurança de banco de dados e veja quantas histórias de ataques já foram relatadas.
ALVES, W. P. Banco de Dados. São Paulo: Saraiva, 2014.
MANNINO, M. V. Projeto, desenvolvimento de aplicações e administração de banco de dados. Porto Alegre: Grupo A, 2008.
PICHETTI, R. F.; VIDA, E. S.; CORTES, V. S. M. P. Banco de Dados. Porto Alegre: SAGAH, 2020.
TERADA, R. Segurança de dados. São Paulo: Blucher, 2008.