Row Level Security - Segurança dos dados em nível de linha
Veja neste artigo um pouco sobre o aspecto da segurança dos dados armazenados no banco de dados.
Row Level Security - Segurança dos dados em nível de linha
A segurança em ambientes computacionais abrange vários aspectos em diferentes níveis.
Vamos falar um pouco sobre o aspecto da segurança dos dados armazenados no banco de dados, mais precisamente, da segurança em nível de linha (Row Level Security).
A necessidade deste tipo de segurança é decorrente das atividades normais de qualquer organização.
Vamos tomar como exemplo o ambiente familiar.
Neste ambiente também existem diferentes aspectos e níveis de segurança, não só de pessoas e bens, mas também de informações.
Poucas pessoas têm acesso irrestrito ao interior da casa e, as que têm, geralmente, não podem fazer o que querem com os bens, sair, chegar e se alimentar sem restrição de horário, e nem todas podem participar de todas as conversas ou ter acesso a todas as informações. As crianças, por exemplo, além de terem horários estipulados, são freqüentemente barradas em várias conversas do casal.
Deve haver uma certa disciplina, que podemos comparar com a política de segurança dos ambientes computacionais.
Este breve exemplo ilustra de maneira clara como funcionam as coisas nos ambientes computacionais, onde nem todas pessoas têm acesso a tudo, a toda hora e nem podem fazer o que quiserem com as informações.
Faz parte da política de segurança o acesso de pessoal aos elementos do ambiente computacional e o acesso aos dados propriamente ditos.
A segurança em nível de linha tem a intenção de garantir que cada pessoa veja somente os dados que lhe dizem respeito, a que tenham acesso, e nos horários estabelecidos.
Este tipo de segurança pode ser estabelecido pelas aplicações, mas não pode ser considerado totalmente seguro porque não pode garantir o bloqueio de acesso extra-aplicação, por exemplo.
Pensando nesta necessidade, independente da origem do acesso, é mais prudente e fácil gerenciar a segurança e o acesso aos dados no próprio banco de dados.
Para garantirmos diferentes níveis de segurança, precisamos definir diferentes níveis de usuários e diferentes níveis de acesso. Por exemplo, a diretoria pode ter acesso a informações que a gerência não tem, que por sua vez tem acesso a informações que os demais funcionários também não têm.
Utilizando apenas recursos do banco de dados, isso pode ser implementado por meio de views, onde seria inserida uma cláusula WHERE, filtrando pelo nível de acesso desejado e pré-definido, que pode ser por nível hierárquico, departamental ou outro qualquer, verificando o código do nível, ou do setor, ou do funcionário, etc.
Para complementar e automatizar o uso de views, podem ser criadas functions e procedures, que iriam gerenciar tudo isso.
Dependendo da necessidade, teríamos uma view para cada nível hierárquico ou departamental ou, ainda, uma view para cada tabela, onde seria verificado o usuário que está tentando o acesso e, a partir daí, este código seria anexado em todas as cláusulas WHERE das views.
Este método tem a intenção de controlar o acesso para as operações DML básicas, SELECT, INSERT, UPDATE e DELETE.
A dificuldade de manutenção com o uso deste método é muito grande.
E a coisa pode piorar se considerarmos a possibilidade de termos informações de mais de uma organização no mesmo banco de dados, considerando que os dados podem ser de matriz e filiais, ou dos vários clientes, ou de várias organizações, etc.
Para atender a esta necessidade a Oracle lançou, na versão 8i do seu sistema gerenciador de banco de dados, features de Row Level Security, dentre elas podemos destacar o Virtual Private Database, os Application Contexts e Label Security.
Estas três features da Oracle serão abordadas em artigos futuros.
Espero que este artigo tenha ajudado a entender melhor a necessidade e utilidade de políticas de segurança em nível de linha, esclarecido eventuais dúvidas e consolidado conceitos.
Anderson Rodrigo Farias
DBA Oracle
Betha Sistemas LTDA
http://www.betha.com.br
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo