width=228 border=0>

Clique aqui para ler todos os artigos desta edição

 

Segurança em banco de dados: conceitos fundamentais

 

O banco de dados de uma empresa contém uma grande quantidade de dados e geralmente um grande número de usuários. A maioria destes usuários não tem a necessidade de acessar todos os dados. Assim, permitir o acesso irrestrito a todos os dados pode ser indesejável e o SGBD deve prover mecanismos para controlar este acesso.

Através do controle de acesso discricionário (catálogos), o banco de dados mantém um registro dos seus objetos e dos privilégios que cada usuário ou grupo de usuários possui sobre os mesmos. Este artigo aborda os conceitos fundamentais desse tipo de acesso, utilizando o banco de dados DB2 como exemplo, além de uma pequena  introdução sobre a importância do uso de dados criptografados em sua rede.

 

Controle de acesso discricionário

 

SGBDs controlam o acesso aos dados através do controle de acesso discricionário. Esse controle é baseado no conceito de direitos de acesso ou privilégios e a maneira de conceder estes privilégios aos usuários. Um privilégio permite que um usuário acesse o dado de certa maneira (por exemplo, lendo ou escrevendo o dado).

Um usuário que cria um objeto automaticamente adquire todos os direitos sobre o mesmo. A partir de então, o banco de dados guarda todos os privilégios que são  concedidos a outros usuários e desta forma, garante que apenas os usuários autorizados possam acessar este objeto.

Em praticamente todos os bancos de dados, o controle de acesso discricionário é implementado através do uso dos comandos GRANT e REVOKE. O comando GRANT concede privilégios sobre os objetos do banco de dados (tabelas e visões, dentre outros) a outros usuários enquanto que o comando REVOKE revoga os privilégios concedidos. Para um melhor entendimento do mecanismo de acesso discricionário,

é importante compreender a definição de privilégios, objetos e usuários:

Usuários: são as pessoas que estão representadas por um nome de autorização. Os usuários podem ser classificados em grupos de acordo com um perfil ou nível de autorização. Um usuário que pertence a um grupo, implicitamente, recebe os privilégios relacionados ao grupo que ele pertence;

Privilégio: define uma permissão individual associada a um nome autorizado, habilitando-o a acessar ou modificar um recurso do banco de dados. Os privilégios

também podem ser concedidos a grupos de usuários;

Objetos: os usuários necessitam de privilégios para acessar os objetos guardados no banco de dados. Os privilégios variam de acordo com a natureza do objeto. Por exemplo, uma tabela possui uma lista de privilégios diferente das visões. São exemplos de objetos: tabelas, visões, índices, triggers, entre outros.

 

O comando GRANT

 

A sintaxe do comando GRANT é a seguinte:

GRANT privilégios ON objeto TO usuários [WITH GRANT OPTION]

Onde:

Privilégios: denota, por modelar:

o SELECT: o direito de leitura sobre as colunas da tabela especificada;

o INSERT: o direito de inserir linhas;

o UPDATE (nome-da-coluna, ...): o direito alterar valores na coluna especificada da tabela indicada como objeto;

o DELETE: o direito de excluir linhas de uma tabela especificada como objeto;

o INDEX: direito de criar um novo índice sobre a tabela. Este privilégio aplica-se somente a tabelas;

Objeto: geralmente uma tabela ou visão;

Usuários: usuário ou lista de usuários que receberão o privilégio.

 

Se um usuário recebe o privilégio com a opção GRANT OPTION, ele pode passar esse privilégio para outro usuário através do comando GRANT. Um usuário que cria uma tabela automaticamente herda todos os privilégios aplicáveis à tabela juntamente com o direito de conceder estes privilégios para outros usuários. O usuário que cria uma visão tem os mesmos privilégios sobre ela.

Apenas o dono de um esquema (um esquema é a descrição do banco de dados) pode executar os comandos de definição de dados CREATE, ALTER e DROP do mesmo.

O direito de executar estes comandos não pode ser concedido ou revogado.

A Listagem 1 mostra alguns exemplos de uso do comando GRANT.

 

Listagem 1. Exemplos de comandos GRANT.

db2 GRANT SELECT, INSERT ON tb_cep TO user1;

db2 GRANT SELECT ON tb_cep TO PUBLIC;

db2 GRANT SELECT ON funcionario to admuser WITH GRANT

OPTION;

db2 GRANT ALL ON tb_cep TO admuser WITH GRANT OPTION;

 

O comando REVOKE

...

Quer ler esse conteúdo completo? Tenha acesso completo