Este artigo trata do uso do mecanismo de roles, oferecido pelo PostgreSQL, na construção de políticas de controle de acesso aos dados e metadados de um banco a fim de garantir a segurança das informações armazenadas.
Praticamente todo projeto de banco de dados usa algum aspecto de segurança de informação. Desta forma, os conceitos apresentados neste artigo acerca de roles e privilégios podem ser utilizados de maneira ampla, não se limitando a projetos que utilizam PostgreSQL como SGBD.
Tão importante quanto armazenar informações é protegê-las. Todo sistema de informação deve, essencialmente, preocupar-se em manter seus dados a salvo de pessoas ou softwares mal intencionados. É importante que a política de segurança vá além da camada de aplicação e alcance também a camada de dados.
Desta forma, a concepção de uma base de dados deve levar em conta também a política de segurança a ser utilizada na manipulação dos dados e objetos (metadados) da base.
Os SGBDs atuais oferecem inúmeros recursos que podem ser aplicados à segurança de informação. Dentre eles está o mecanismo de roles e privilégios, uma forma simples e muito eficiente de se limitar direitos de acesso e manipulação de objetos e dados de um banco de dados.
Neste contexto, este artigo trata especificamente do uso de roles e manipulação de privilégios de acesso no PostgreSQL, versão 9.1. O objetivo é oferecer um aprofundado embasamento teórico e prático que permita ao leitor adquirir um bom domínio sobre o uso destes recursos.
A ascensão tecnológica movida pelos avanços, tanto em termos de hardware quanto de software nas últimas décadas, tem revolucionado a forma como organizações e pessoas se comportam e interagem entre si.
Os processos de negócio ou mesmo o estilo de vida e de comunicação têm se tornado cada vez mais dependentes do rápido processamento de informações.
Não é mais aceitável, por exemplo, solicitar um extrato bancário e esperar que o mesmo esteja pronto no dia seguinte. A informação precisa estar disponível em tempo real, em qualquer lugar e a qualquer momento.
Neste processo revolucionário, os dados que outrora eram mantidos em meio físico, como documentos, livros, cadernos, etc. passaram a ser armazenados também em meios digitais, com vistas a diminuir custos e aumentar substancialmente a velocidade de armazenamento e recuperação de informações.
Contudo, uma vez disponíveis em meios digitais, os dados tornaram-se mais expostos e passíveis de serem obtidos por pessoas não autorizadas se as devidas medidas de segurança não forem tomadas. Tais medidas devem garantir que somente pessoas autorizadas tenham acesso concedido às informações e somente à porção que as cabe.
O desenvolvimento de um banco de dados deve, invariavelmente, também considerar os aspectos de segurança de informação. É possível aplicar diferentes níveis de controle de acesso, desde criptografia na conexão ao servidor (SSL) até um nível mais granular, como o direito de executar um select sobre uma tabela, por exemplo.
Os SGBDs atuais oferecem uma vasta gama de recursos que podem ser aplicados à proteção da informação. É possível, por exemplo, estabelecer regras de acesso a dados e metadados, criptografar informações, limitar conexões por usuário ou host, entre outras funcionalidades. Este é o caso do PostgreSQL.
Neste contexto, este artigo visa analisar o controle de acesso realizado através do uso de roles no PostgreSQL 9.1. Serão vistos aspectos conceituais e práticos da criação e manipulação de grupos e usuários através do uso de roles. Toda a abordagem teórica será acompanhada de vários exemplos para melhor fixar os conceitos.
Empresa ABC – Estudo de Caso
A empresa ABC precisa de um novo sistema para gerenciar seu estoque de produtos, controlando o processo de compras e vendas. Além de prover os requisitos funcionais, o sistema deve priorizar a segurança da informação armazenada e processada, conforme fica evidenciado no trecho abaixo, transposto do documento de análise de requisitos:
A aplicação deve prezar pelo controle minucioso de acesso aos dados. Os usuários não poderão, de forma alguma, alterar, ler, adicionar ou excluir dados a que funcionalmente, dentro dos processos de negócio vigentes, não tenham direito de fazê-lo.
Para determinar os direitos de acesso de cada usuário sobre os objetos de negócio no sistema, deve-se utilizar a tabela de referência apresentada na Tabela 1.
C – Cadastrar
E – Excluir
S – Selecionar
A – Atualizar
C – S - A
Tabela 1. Tabela de Privilégios
Com base nas informações recolhidas durante o processo de análise, ficou decidido que a modelagem entidade relacionamento, mostrada na Figura 1, seria a mais adequada para atender as expectativas da empresa ABC.
O modelo de entidades e relacionamentos é um modelo abstrato cuja finalidade é descrever, de maneira conceitual, os dados a serem utilizados em um sistema de informações ou que pertencem a um domínio. A principal ferramenta do modelo é sua representação gráfica, o diagrama entidade relacionamento. Normalmente o modelo e o diagrama são conhecidos por suas siglas: MER e DER.