Project Description

Cliente: Loja Virtual

Tempo de contrato: Cliente desde 2018.

Bases de dados administradas: 10 bases de dados PostgreSQL.

Serviços contratados: Administração e monitoramento das bases de dados com atendimento 24 horas por dia.

Por conta do acordo de confidencialidade entre as empresas, detalhes específicos do projeto não serão divulgados. Somente serão descritas informações de conhecimento geral e/ou domínio público sobre hardware, software e atividades que sejam inerentes à administração de banco de dados.

Desafios

A lei no. 13.709/2018, que trata da proteção dos dados pessoais e entra em vigor em 2.020, obriga e regulamenta normas já utilizadas em algumas metodologias comuns no ambiente de TI, tais como o ISO/IEC 27.000 a 27.005, o COBIT, o SOX e o PCI/DSS.

Conforme informações contidas no site http://www.planalto.gov.br, a lei de Proteção Geral aos Dados define como dado pessoal sensível aquele:

a)       Dado pessoal sobre origem racial ou étnica,

b)      Convicção religiosa, opinião política,

c)       Filiação a sindicato ou a organização de caráter religioso, filosófico ou político,

d)      Dado referente à saúde ou à vida sexual,

e)      Dado genético ou biométrico, quando vinculado a uma pessoa natural.

Traduzindo tal lei para a nossa área de infraestrutura de tecnologia de informação, utilizando as metodologias já citadas anteriormente, temos, em linhas gerais, que o objetivo genérico dos padrões de segurança exigem:

a)       Construção e Manutenção de Sistemas e Redes Seguras

b)      Proteção dos dados sensíveis ou financeiros de seu titular

c)       Manutenção de programas de gerenciamento de vulnerabilidades

d)      Definição de medidas fortes de controle de acesso

e)      Acompanhamento e testes regulares de rede

f)        Manutenção de política de segurança de informação

Preocupados com auditorias de segurança exigidos para seus sistemas, nosso cliente solicitou a adequação de seu banco de dados às exigências das normas do Conselho de Padrões de Segurança PCI. Para tanto, no escopo do software de banco de dados que atuamos, utilizamos as seguintes funcionalidades do PostgreSQL para adequar o produto às normas exigidas, pois apesar do produto ser conhecido como o open source mais avançado do mundo, ele é vulnerável, conforme informações de vulnerabilidades e exposições comuns aos dados do PostgreSQL(CVE). Tais informações estão também disponíveis no site do fabricante

Alterações Realizadas no PostgreSQL

Construção e Manutenção de Sistemas e Redes Seguras

As seguintes alterações foram realizadas nas definições padrão do SGBD

  1. Local padrão de instalação;
  2. Local de armazenamento padrão dos dados;
  3. Desativação do usuário postgre;
  4. Porta padrão de conexão de 5432 para outra porta.
  5. Método padrão de autenticação.

Também criamos contas com privilégio administrativo nomeadas no banco de dados para os DBAs, que só podem conectar localmente ao servidor. Isso foi possível pois o servidor de banco de dados e o servidor de aplicação compartilhavam o mesmo host físico. Técnicas de configuração específicas nos arquivos de configuração pg_hba.conf e tunelamento de conexão SSH foram implementadas para que o DBA não necessite realmente estar na frente do servidor.

Finalmente, desabilitamos o método confiável de autenticação ao banco de dados (Tipo trust), e a possibilidade de conexão aos bancos de dados default do produto para usuários desnecessários.

Proteção dos dados sensíveis ou financeiros de seu titular

Informações sensíveis, bem como senhas eram armazenadas de forma aberta. O número do cartão de crédito do usuário era criptografado utilizando algoritmo MD5 e uma mesma chave embutida na aplicação era utilizada. A comunicação com o servidor de aplicação era feito sei nenhuma forma de criptografia e o backup dos bancos de dados eram aberto a todos que possuíam acesso ao servidor de backup. Dessa forma, sugerimos as seguintes alterações:

  1. Desnormalizar o modelo de dados e armazenar de forma criptografada todos os dados sensíveis do usuário.
  2. Alterar o algoritmo de criptografia para os dados do cartão de crédito do usuário de MD5 para SHA-256.
  3. Realizar o backup local e criptografá-lo antes de enviá-lo ao servidor de backup.
  4. Configuração de SSL entre o serviço de banco de dados e o serviço de aplicação, uma vez que os dois rodavam no mesmo servidor.
  5. As chaves de criptografia foram divididas entre dois usuários que alteram quinzenalmente seu conteúdo através de procedimento que armazena sua parte no banco de dados. O mesmo procedimento é realizado caso um dos dois usuários se afasta ou rompe os laços com a empresa. A cada alteração na chave, uma trigger é disparada atualizando todos os números de cartão de crédito e outros dados sensíveis dos usuários.

Manutenção de programas de gerenciamento de vulnerabilidades

Como nossa atividade se restringe ao software de banco de dados e a inexistência de política de atualização do produto, criamos uma política de instalação bimestral de atualizações de segurança (patches), incluindo os ambientes de desenvolvimento, homologação, pré-produção e produção. Também não permitimos mais o acesso de desenvolvedores no ambiente de produção e pré-produção.

Definição de medidas fortes de controle de acesso

Foram separados os esquemas de banco de dados e aplicação, criados grupos de usuários e regras de acesso para restringir e identificar os usuários dentro dos ambientes de homologação, produção e pré-produção. Esses grupos foram criados para restringir o acesso principalmente no ambiente de homologação uma vez que o ambiente de produção é só aberto ao DBA e a aplicação. As atualizações em homologação são realizadas frequentemente, mas um processo de embaralhamento dos dados não permite aos usuários identificar realmente as informações dos clientes cadastrados no sistema. Os dados de cartão de crédito são completamente removidos antes da liberação do ambiente para usuários funcionais e desenvolvedores.

Acompanhamento e testes regulares de rede

Para a camada de banco de dados, auditoria em tabelas sensíveis da aplicação e privilégios de administrador forma criados, utilizando a funcionalidade do pgaudit e triggers de banco de dados. Políticas de armazenamento e monitoramento dessas informações utilizando ferramentas de terceiros foram desenvolvidas. Uma empresa de segurança avalia o ambiente anualmente e gera relatórios com o resultado auditado.

Manutenção de política de segurança de informação

Para a camada do banco de dados, criamos um documento que é compartilhado com os DBAs do cliente para que conheçam e sigam os procedimentos de segurança do produto.

Resultados Alcançados

Logicamente essas não são as únicas estratégias a serem realizadas para adequar um sistema às normas do PCI. Aqui estão apenas as atividades realizadas na camada do banco de dados. Algumas outras técnicas são possíveis de serem utilizadas no PostgreSQL, mas optamos, em conjunto com o cliente, em configurar apenas as atividades descritas nesse documento. Os resultados alcançados foram:

  • Maior segurança dos dados armazenados;
  • Constante atualização do software de banco de dados;
  • Melhor compartilhamento das políticas de segurança entre os DBAs;
  • Camada do banco de dados auditada e aprovada às normas do Conselho de Padrões de Segurança PCI.