Boas práticas de segurança
Estas regras vêm de incidentes reais ou de controlos feitos nos servidores do Bemba. Completam Autenticação JWT, a política de palavras-passe e a limitação de pedidos.
Contas
- Uma conta por pessoa; nunca credenciais partilhadas, nem para um inquiridor, nem para um prestador.
- Desativar uma conta no dia da saída da pessoa; rever a cada trimestre as contas sem início de sessão recente.
- Perfil mínimo e perímetro mínimo (instituição e projetos). O acesso ao registo nacional é uma exceção, concedida nominalmente.
- Limitar
ROLE_ADMINa duas ou três pessoas: escapa à compartimentação e tem todas as permissões. - Incentivar a autenticação de dois fatores (aplicação TOTP), disponível para cada utilizador em O meu perfil → Segurança, e exigi-la aos administradores.
- Nunca transmitir uma palavra-passe por mensagem; preferir a ligação « esqueci a palavra-passe » ou a ligação mágica.
Dados pessoais
O registo contém dados nominativos de agregados vulneráveis.
- As reclamações sensíveis (exploração e abuso sexual, assédio sexual) só são visíveis com
plaintes.sensibles_view; concedê-la a um círculo muito restrito. - As fotos e os anexos só são servidos por ligações assinadas válidas 12 horas: não as copiar para documentos partilhados.
- As exportações Excel ou CSV tiram os dados da compartimentação: guardá-las num espaço protegido e apagá-las depois de usar.
- Para um teste ou uma demonstração, usar a pré-produção, nunca dados de produção copiados para um posto.
Segredos
- Nenhum segredo no repositório Git, nesta documentação, num pedido de suporte ou numa conversa. Um segredo registado e depois « retirado » por um novo commit continua legível no histórico: é preciso mudá-lo.
- Os segredos vivem no ficheiro de ambiente lido pelo Compose em cada servidor (
~/pch-sig/.env.prodem produção) e embackend/.env, todos em modo 600. As chaves JWT estão embackend/config/jwt/, chave privada em modo 600. - Após uma suspeita de fuga, ou na saída de uma pessoa que tinha acesso: aplicar o procedimento de rotação
docs/ROTATION_SECRETS.mddo repositório (base de dados, JWT, SMTP, chaves de API Anthropic e Cohere, tokens Kobo).
Servidores
| Regra | Estado |
|---|---|
| Só 22 (SSH), 80 e 443 publicados na Internet, mais 2222 (SSH do GitLab, pré-produção) e 2525 (relé SMTP, aberto só ao servidor 220) | aplicado; exportadores e Loki ligados a 127.0.0.1 |
| SSH só por chave, fail2ban ativo | aplicado |
Sempre docker compose -f <ficheiro> | sem -f, o Compose arranca o esqueleto Symfony, com uma base com palavra-passe por defeito |
Comandos de consola com www-data | um comando lançado como root estraga a cache (erros 500) |
| Cabeçalhos de segurança e CSP | colocados pelo Nginx do frontend, ver HTTPS |
Registos e auditoria
- As ações dos utilizadores (inícios de sessão, modificações, eliminações, exportações) estão em Administração → Auditorias.
- Os registos técnicos são conservados um ano no Loki, os erros sobem ao Sentry. Ver Registos.
- Nunca registar uma palavra-passe, um token ou um número de conta de pagamento completo; não os colar num pedido de suporte.
Salvaguardas
Base de dados salvaguardada todos os dias e replicada no servidor de recuperação; ver Salvaguarda para a lista exata e os pontos ainda em aberto. Uma salvaguarda só vale se o seu restauro tiver sido testado: fazer um ensaio de restauro pelo menos uma vez por trimestre.
Em caso de incidente
- Conter: desativar as contas em causa; se um segredo fugiu, mudá-lo imediatamente.
- Cortar as sessões: esvaziar a tabela
refresh_tokensdesliga toda a gente em menos de uma hora. - Compreender: auditoria da aplicação, registos Loki, registos do Traefik.
- Corrigir e documentar: causa, período, dados expostos.
- Informar a UCP-PCH, e o Banco Mundial se dados de beneficiários puderem ter sido expostos.
Controlos regulares
| Frequência | Controlo |
|---|---|
| Diário | saúde da API, fila de e-mails falhados vazia, erros no Sentry |
| Semanal | espaço em disco, salvaguardas presentes, inícios de sessão falhados anormais na auditoria |
| Mensal | atualizações de segurança do Ubuntu e das imagens Docker |
| Trimestral | revisão das contas e dos perfis, ensaio de restauro |
| Anual | rotação dos segredos, revisão desta página |