Pular para o conteúdo principal

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_ADMIN a 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.prod em produção) e em backend/.env, todos em modo 600. As chaves JWT estão em backend/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.md do repositório (base de dados, JWT, SMTP, chaves de API Anthropic e Cohere, tokens Kobo).

Servidores​

RegraEstado
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 ativoaplicado
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-dataum comando lançado como root estraga a cache (erros 500)
Cabeçalhos de segurança e CSPcolocados 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​

  1. Conter: desativar as contas em causa; se um segredo fugiu, mudá-lo imediatamente.
  2. Cortar as sessões: esvaziar a tabela refresh_tokens desliga toda a gente em menos de uma hora.
  3. Compreender: auditoria da aplicação, registos Loki, registos do Traefik.
  4. Corrigir e documentar: causa, período, dados expostos.
  5. Informar a UCP-PCH, e o Banco Mundial se dados de beneficiários puderem ter sido expostos.

Controlos regulares​

FrequênciaControlo
Diáriosaúde da API, fila de e-mails falhados vazia, erros no Sentry
Semanalespaço em disco, salvaguardas presentes, inícios de sessão falhados anormais na auditoria
Mensalatualizações de segurança do Ubuntu e das imagens Docker
Trimestralrevisão das contas e dos perfis, ensaio de restauro
Anualrotação dos segredos, revisão desta página