Como proteger o db dump retirado do script de execução diária

2

Em um dos meus servidores escravos mysql eu escrevi um script de execução diária, que 1) pára o slave, 2) pega um db dump, 3) inicia o slave novamente, 4) criptografa ele, 5) copia para o meu s3-bucket.

Estou usando o aws-cli para copiar o despejo para o s3-bucket. O problema aqui é que no caso de alguém obter acesso ao servidor, ele também pode excluir os dumps do intervalo, porque o aws-cli concede acesso de atualização / exclusão para um intervalo.

Como faço para copiar o dump para algum lugar (preferencialmente s3) de onde se alguém obtém acesso ao db server não pode excluir os dumps.

Quando penso nisso, eu preciso de um serviço em um servidor diferente que aceite o dump como entrada e, em seguida, por sua vez, salve-o em s3. Este serviço não aceita nenhum outro tipo de solicitação. Dessa forma, adiciono uma camada extra de segurança aos backups do banco de dados. O problema é que eu não conheço nenhum sistema desse tipo.

Pergunta mais geral, como as pessoas geralmente protegem seus dados. Se alguém obtiver acesso ao meu banco de dados mestre, mesmo por injeção de sql, ele poderá fazer com que todas as replicações sejam truncadas ou excluídas. É necessário que haja algum tipo de backup regular para voltar, em qualquer caso. Em caso de injeção, os backups são seguros, mas no caso de acesso ao servidor, não.

    
por Rajat Singhal 18.09.2015 / 01:47

1 resposta

2

O Princípio do menor privilégio sugere que a primeira coisa que você deve fazer é remover quaisquer privilégios desnecessários de o usuário do IAM que está fazendo os backups.

A granularidade da permissão s3:PutObject , no entanto, é tal que sobrescrever um objeto existente ainda é possível por uma conta que possua apenas esse privilégio, o que deixa aberta a possibilidade de um usuário mal-intencionado "excluir" seus backups substituindo -los com arquivos vazios.

Ativar controle de versões de objetos é uma peça remanescente do quebra-cabeça, pois o controle de versão impede usuário com s3:PutObject , mas sem a permissão s3:DeleteObject de exclusão permanente de um objeto, sobrescrevendo-o. Um usuário com s3:DeleteObjectVersion permissão ainda pode remover objetos com versão.

Um passo final que pode ser desejável é ativar o MFA excluir no intervalo. Essa configuração, que também exige que o bucket seja ativado para versionamento, requer autenticação de vários fatores para exclusão de qualquer versão de qualquer objeto no intervalo.

    
por 20.09.2015 / 22:15