Autenticação é o método legítimo (ou não) de ganhar acesso ao banco de dados. O meio mais comum é o usuário e senha controlados pelo banco de dados, mas também é natural encontrar autenticações externas, normalmente pelo sistema operacional, mais comum no SQL Server ou alguma outra ferramenta de terceiros, dependendo bastante do tamanho de sua aplicação, estrutura de TI e protocolos de segurança existentes.
Antes de falar das permissões que autenticações carregam, é importante mencionarmos que os bancos de dados normalmente possuem mecanismos de restrição de acesso em seus logins, e que geralmente são ignorados. Por exemplo, o MySQL possui uma configuração dentro da criação de seus usuários que restringe o acesso a determinadas máquinas ou IPs da rede. Não é incomum encontramos tal acesso liberado para qualquer IP, principalmente dos usuários mais privilegiados do banco de dados, com a desculpa de facilitar a administração do software gerenciador. Outros bancos de dados possuem configurações semelhante, caso do connection manager do Oracle e o PgAdmin do PGSQL.
Cada banco de dados possui sua forma particular de controle de acesso, mas todas permitem, de alguma forma, controlar, restringir e auditar as conexões realizadas em suas estruturas.
Protegendo os Objetos do Banco de Dados
Passado pela plataforma e a autenticação, o usuário ganha permissão para acessar as estruturas lógicas que realmente armazenam os dados dentro do banco, normalmente representados em forma de esquemas, tabelas e visões de dados.
O processo de avaliação e restrição de permissão é trabalhoso e demorado. Muitas vezes envolvem equipes e empresas apressadas em entregar projetos e sistemas, que pouco se dedicam em implementar regras de segurança e proteção dos dados. Não é difícil encontrar o esquema de dados principal de um sistema Oracle, por exemplo, com permissão total em todos os outros esquemas de dados, mesmo em ambientes multi-tenant, somente por uma necessidade de controle de acesso. Usamos o Oracle como exemplo, mas isso é encontrado muito facilmente em bancos de dados Postgres e MySQL e, também no SQL Server, apesar de pequenas diferenças no conceito de conexão entre essas tecnologias.
Dessa forma, o importante é saber exatamente os acessos necessários no banco de dados e conceder apenas as permissões estritamente necessárias para o funcionamento do sistema. É importante ressaltar, finalmente, que além do controle de acesso aos objetos, também é possível controlar o acesso aos dados armazenados nesses objetos. Esses são os princípios de TI conhecidos como Need to Know, em outras palavras, conceder acesso apenas aos dados necessários para a conclusão da atividade requisitada e, nada mais, e Least Privilege, ou seja, conceder direitos e permissões aos objetos necessários para a conclusão da atividade, e nada mais.