Boas práticas para melhorar a segurança do seu banco de dados

Um passo importante é ter atenção aos acessos dos usuários e administradores dos bancos de dados para evitar exposições desnecessárias em caso de invasões.

A segurança de banco de dados pode parecer uma tarefa complexa, e chegar à arquitetura de segurança máxima desejada para proteger os dados confidenciais demanda tempo, pessoal e orçamento. Dito isso, há certas melhores práticas fundamentais que todas as organizações, de todos os tamanhos e setores, deveriam estar implementando. Na verdade, essas práticas básicas de segurança precisam estar em vigor antes de se gastar recursos em medidas de segurança adicionais.

Considerar cuidadosamente a forma como privilégios administrativos são concedidos aos usuários de bancos de dados pode evitar grandes problemas para as organizações, incluindo a redução do risco de violações de dados onerosas. Apesar de você provavelmente confiar nos DBAs, os cibercriminosos geralmente usam ataques de spear phishing e outros meios para alvejar os usuários privilegiados de uma organização, tirando proveito de suas contas para uso malicioso, incluindo extração de dados confidenciais. Por exemplo, se um hacker consegue invadir a conta de um DBA com privilégio de execução do comando “SELECT ANY TABLE”, ele é capaz de acessar quase todos os dados do banco de dados, incluindo números de identificação social, números de cartões de crédito e propriedade intelectual. Confira abaixo algumas dicas:

1. Separação de tarefas

O conceito de separação de tarefas (SOD, Separation of Duties) determina que as tarefas de administração devem ser divididas entre vários usuários, em vez de ficarem a cargo de uma única pessoa com plenos poderes. Dividir tarefas como administração, segurança e operações diminui o risco de os usuários abusarem de seus privilégios e também reduz a área da superfície de ataque no caso de contas invadidas. Por exemplo, em vez de usar o onipotente privilégio “SYSDBA”, conceda privilégios direcionados, como “SYSBACKUP”, “SYSDG”, “SYSRAC” e “SYSKM”, para as tarefas específicas de backup do banco de dados, administração do Data Guard, gerenciamento do RAC e gerenciamento de chaves, respectivamente.

2. Usuários nomeados

Os administradores jamais devem compartilhar contas por praticidade (aliás, por nenhum outro motivo). Contas compartilhadas impedem a responsabilização, aumentam o risco e basicamente tornam impossível auditar as atividades do usuário. Cada usuário de uma organização deve ter uma conta individual nomeada, explicitamente associada ao seu nome; Bob Jones, por exemplo, teria uma conta com nome “Bob_Jones” ou “Robert_Jones”. Cada conta nomeada é então vinculada a privilégios personalizados, selecionados de acordo com a função dessa pessoa dentro da organização. Regras de gravação de logs de auditoria baseadas em políticas podem ser definidas e a atividade do usuário pode ser auditada individualmente.

3. Gestão de contas SYSDBA

A conta SYS do proprietário do banco de dados (SYSDBA) é um privilégio administrativo que fornece acesso irrestrito ao banco de dados, como uma conta ROOT no gerenciamento do sistema operacional. É simplesmente poder demais para que qualquer usuário o tenha de forma permanente. De fato, muitos dos próprios administradores de banco de dados pensam que ter os privilégios da conta SYSDBA os coloca em uma indesejável posição de potencial responsabilidade caso algo saia errado. Sendo assim, o uso dessa conta e de seus privilégios precisa ser administrado e monitorado de perto, e tais privilégios só devem ser concedidos quando for absolutamente necessário, tal como durante atualizações e correções do banco de dados. Tire proveito de um sistema de gerenciamento de contas privilegiadas combinado a um sistema de gerenciamento de mudanças e designe uma janela de tempo de uso específica a fim de gerenciar de perto o privilégio SYSDBA. Recomenda-se o uso de controles de segurança compensatórios quando contas SYS/SYSDBA são usadas. Um exemplo de tal controle seria exigir fluxos de trabalho de aprovação secundários (a regra das duas pessoas).

Para auditar usuários administrativos como o SYSDBA, crie políticas de auditoria unificadas e nomeadas e, em seguida, aplique as políticas ao usuário administrativo da mesma forma que você faria para usuários não administrativos. Além disso, você pode criar condições e exclusões granulares em suas políticas ou optar por auditar todas as declarações de nível superior feitas por usuários administrativos. No caso da auditoria tradicional, o “AUDIT_SYS_OPERATIONS” ativa ou desativa a auditoria de operações de nível superior, que são comandos SQL emitidos diretamente pelos usuários ao se conectarem usando os privilégios “SYSASM”, “SYSBACKUP”, “SYSDBA”, “SYSDG”, “SYSKM” ou “SYSOPER”.

4. Privilégio mínimo

A Separação de Tarefas (SOD) separa pessoas, processos e contas, mas você não consegue aplicá-la quando todos os usuários e contas têm todos os privilégios. Depois de ter a SOD implementada, aplicar o princípio do privilégio mínimo limita cada usuário e cada conta a ter apenas os privilégios necessários para as operações do dia a dia.  Em suma, esse modelo recomenda que os usuários recebam apenas o conjunto mínimo de privilégios necessários para que realizem suas tarefas relacionadas ao trabalho, e nada mais. Para alcançar o nível adequado de granularidade, conceda os privilégios de objeto específicos que são necessários, e não privilégios gerais do sistema, e lembre-se de remover esses privilégios quando eles não forem mais necessários. Crie funções específicas de tarefas, em vez de conceder funções plenas de poderes, como a SYSDBA integrada. O modelo de privilégio mínimo reduz a área da superfície de ataque do banco de dados limitando o que um invasor consegue fazer, até mesmo quando as credenciais estão de alguma forma comprometidas.

5. Proteção da auditoria

Os logs de auditoria são necessários para emissão de relatórios de conformidade e para perícia em caso de violações ou outros eventos adversos. Faça um registro irrefutável das ações realizadas por contas nomeadas, incluindo “CREATE USER”, “CREATE ANY TABLE”, “ALTER SYSTEM” e “ALTER SESSION”, e adicione informações contextuais, como endereço IP e hora do evento. Os registros de auditoria ajudam as organizações a identificar usuários perigosos, otimizar as auditorias e simplificar a conformidade.

Próximas etapas

Adote essas melhores práticas, incluindo a separação de tarefas e o princípio do privilégio mínimo, para encontrar o equilíbrio certo entre a necessidade dos usuários de realizar seu trabalho e a necessidade de proteger o banco de dados. 

Essas práticas recomendadas não são nada revolucionárias, mas, infelizmente, são negligenciadas por um grande número de organizações. Nenhum dos métodos acima mencionados requer investimentos adicionais. Não seja uma “presa fácil” para os cibercriminosos. Reduza a área da superfície de ataque de sua organização hoje considerando cuidadosamente os privilégios dos usuários.

Artigo escrito por: Alan Williams e Sean Cahill - Fonte: Blog Oracle