Segurança de Armazenamento
Esta aula aborda a segurança de armazenamento, focando em criptografia em repouso (encryption at rest), rotação de chaves e estratégias de backup. Você aprenderá conceitos fundamentais, melhores práticas e como implementá-los em cenários reais, com exemplos práticos e exercícios para fixação.
A segurança de armazenamento é um pilar fundamental da proteção de dados em qualquer sistema. Com o aumento de ataques cibernéticos e requisitos regulatórios, garantir que os dados armazenados estejam protegidos contra acesso não autorizado é essencial. Nesta aula, vamos explorar três aspectos críticos: criptografia em repouso, rotação de chaves e backups. Esses elementos trabalham juntos para criar uma estratégia de defesa em profundidade, assegurando confidencialidade, integridade e disponibilidade dos dados.
Vamos começar entendendo o que significa 'dados em repouso' e por que a criptografia é obrigatória em ambientes modernos. Em seguida, discutiremos como gerenciar chaves de forma segura, incluindo a prática de rotação periódica. Por fim, abordaremos backups, que são a última linha de defesa contra perda de dados, e como eles se relacionam com a segurança. Ao final, você terá uma visão clara de como implementar essas medidas em seus projetos.
Encryption at rest
Criptografia em repouso (encryption at rest) refere-se à proteção de dados quando eles estão armazenados em mídia física ou virtual, como discos rígidos, SSDs, bancos de dados, buckets de armazenamento em nuvem, fitas magnéticas, etc. O objetivo é garantir que, mesmo que um invasor obtenha acesso físico ao dispositivo ou roube os arquivos, ele não consiga ler o conteúdo sem a chave de descriptografia. Isso é diferente da criptografia em trânsito (TLS/SSL), que protege os dados durante a transmissão pela rede.
Existem duas abordagens principais para criptografia em repouso: criptografia de volume/disco e criptografia de arquivo/objeto. A criptografia de volume, como o BitLocker (Windows) ou LUKS (Linux), criptografa todo o disco, incluindo o sistema operacional, aplicativos e arquivos. Já a criptografia de arquivo ou objeto, como o AWS S3 SSE ou o Azure Storage Service Encryption, criptografa arquivos individuais ou objetos, permitindo controle mais granular. Além disso, muitos bancos de dados modernos oferecem criptografia transparente de dados (TDE) para proteger arquivos de banco de dados.
Um conceito importante é a gestão de chaves. A criptografia em repouso é tão forte quanto a proteção das chaves. As chaves devem ser armazenadas em cofres de chaves seguros (HSM – Hardware Security Module, ou serviços gerenciados como AWS KMS, Azure Key Vault, Google Cloud KMS). Nunca armazene chaves no mesmo local que os dados criptografados, e evite embutir chaves em código-fonte ou arquivos de configuração.
Exemplo de configuração de criptografia em repouso em um bucket S3 (conceitual):
// Exemplo de política de bucket S3 para exigir criptografia em repouso
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::meu-bucket/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
}
]
}Nesse exemplo, qualquer tentativa de enviar um objeto sem criptografia é negada. Isso garante que todos os objetos no bucket estejam criptografados.
Key rotation
A rotação de chaves é o processo de substituir periodicamente as chaves de criptografia por novas, reduzindo o impacto de uma possível exposição. Se uma chave for comprometida, a rotação limita o tempo em que os dados podem ser descriptografados pelo atacante. Além disso, muitas normas de segurança (como PCI DSS, ISO 27001) exigem rotação regular de chaves.
Existem duas estratégias principais: rotação manual e automática. Na rotação manual, o administrador gera uma nova chave e reconfigura os sistemas para usá-la, enquanto os dados antigos permanecem criptografados com a chave antiga. Isso pode ser trabalhoso e propenso a erros. Na rotação automática, o serviço de gerenciamento de chaves (KMS) gera novas chaves em intervalos definidos e gerencia a transição transparentemente para os aplicativos. Por exemplo, o AWS KMS permite rotação automática anual para chaves gerenciadas por AWS.
Um ponto crítico é a re-criptografia dos dados. Quando uma chave é rotacionada, os dados criptografados com a chave antiga podem ser re-criptografados com a nova, mas isso pode ser caro e demorado. Por isso, muitas vezes a rotação é feita apenas na chave de criptografia de dados (DEK), enquanto a chave mestra (KEK) é rotacionada. A DEK é usada para criptografar os dados, e a KEK é usada para criptografar a DEK. Dessa forma, a rotação da KEK não exige re-criptografar todos os dados, apenas as DEKs.
Exemplo de rotação de chave usando AWS KMS (CLI):
# Criar nova chave KMS
aws kms create-key --description "Nova chave para produção"
# Rotacionar automaticamente (se suportado)
aws kms enable-key-rotation --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
# Alternar aplicação para usar nova chave (exemplo em variável de ambiente)
export AWS_KMS_KEY_ID=novo-id-da-chaveÉ importante monitorar a rotação e registrar eventos para auditoria. Serviços como CloudTrail podem registrar chamadas de API para rotação.
Backups
Backups são cópias de segurança dos dados, criadas para permitir a recuperação em caso de perda, corrupção ou desastre. Eles são parte essencial da segurança de armazenamento, pois garantem a disponibilidade dos dados. Backups devem ser armazenados em local separado (offsite) e, idealmente, criptografados para proteger contra acesso não autorizado.
Existem vários tipos de backup: completo, incremental e diferencial. O backup completo copia todos os dados, o incremental copia apenas as alterações desde o último backup (completo ou incremental), e o diferencial copia as alterações desde o último backup completo. A escolha depende do trade-off entre tempo de backup e tempo de restauração. Além disso, é crucial testar os backups regularmente para garantir que podem ser restaurados.
As políticas de retenção definem por quanto tempo os backups são mantidos. Elas devem considerar requisitos legais e de negócio. Por exemplo, a regra 3-2-1 sugere ter pelo menos 3 cópias dos dados, em 2 mídias diferentes, com 1 cópia offsite. Isso aumenta a resiliência.
Exemplo de script de backup com criptografia usando GPG:
#!/bin/bash
# Backup de diretório com criptografia GPG
BACKUP_DIR="/backups"
DATA_DIR="/dados"
DATA=$(date +%Y%m%d)
tar czf - "$DATA_DIR" | gpg --encrypt --recipient "admin@empresa.com" \
--output "$BACKUP_DIR/backup-$DATA.tar.gz.gpg"
echo "Backup criado em $BACKUP_DIR/backup-$DATA.tar.gz.gpg"Esse script compacta o diretório de dados e criptografa o resultado com GPG usando a chave pública do destinatário. Somente quem possui a chave privada correspondente poderá descriptografar.
Boas práticas e observações finais
Além dos tópicos principais, é importante considerar:
- Defesa em profundidade: combine criptografia em repouso com controle de acesso, monitoramento e firewalls.
- Gerenciamento de chaves centralizado: utilize serviços gerenciados (KMS) para simplificar a rotação e o controle de acesso.
- Testes de recuperação: realize testes periódicos de restauração de backups para garantir que eles funcionam.
- Monitoramento e auditoria: registre todas as operações de criptografia e acesso aos dados.
- Conformidade: siga as normas aplicáveis (LGPD, GDPR, PCI DSS) que exigem proteção de dados.
Referências
- AWS S3 Server-Side Encryption
- Azure Storage Service Encryption
- Google Cloud Encryption at Rest
- AWS KMS Key Rotation
- GNU Privacy Guard Documentation
- The 3-2-1 Backup Rule
- BitLocker Overview
- LUKS/dm-crypt
Exercícios
- Explique a diferença entre criptografia em repouso e criptografia em trânsito e dê um exemplo de cada.✓ Resposta: Criptografia em repouso protege dados armazenados (ex: disco rígido, banco de dados), enquanto criptografia em trânsito protege dados durante a transmissão (ex: HTTPS, VPN). Exemplo de repouso: BitLocker; exemplo de trânsito: TLS.
- Descreva o que é rotação de chaves e por que ela é importante. Mencione um cenário em que a rotação automática é vantajosa.✓ Resposta: Rotação de chaves é o processo de substituir periodicamente as chaves de criptografia. É importante para limitar o impacto de uma chave comprometida e atender a normas. A rotação automática é vantajosa em ambientes com muitos sistemas, pois reduz a intervenção manual e erros.
- Qual é a regra 3-2-1 de backup e como ela ajuda na segurança?✓ Resposta: A regra 3-2-1 diz: tenha pelo menos 3 cópias dos dados, em 2 mídias diferentes, com 1 cópia offsite. Isso garante redundância e proteção contra desastres locais, como incêndio ou roubo.
- Considere um bucket S3. Como você garantiria que todos os objetos sejam criptografados em repouso? Escreva uma política de bucket que negue uploads sem criptografia.✓ Resposta: Use uma política como:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::meu-bucket/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } } ] } - Escreva um comando (ou script) para criar um backup criptografado de um diretório usando GPG e explique cada parte.✓ Resposta: Exemplo:
O comando tar cria um arquivo compactado do diretório /dados e envia para a saída padrão; o pipe envia para o gpg, que criptografa com a chave pública do destinatário e salva no arquivo backup.tar.gz.gpg.tar czf - /dados | gpg --encrypt --recipient admin@empresa.com --output backup.tar.gz.gpg