Tema
Auditoria & Segurança
Trilha imutável do que foi feito, por quem e quando, log de acessos, alertas de segurança e estado das cópias de segurança. Destina-se ao Controlo Interno, à Inspecção e ao administrador de sistema.
| Secção | Menus |
|---|---|
| Sistema / Administração | Trilha de auditoria · Segurança |
Permissões: auditoria.view (ver a trilha, o log de acessos, os alertas e o painel) e auditoria.manage (mudar o estado de um alerta). Perfis de origem com acesso: Presidente / Executivo e Vereador de Finanças (leitura), Auditor / Controlo Interno (leitura total + gestão de alertas) e Administrador de Sistema. Ver Perfis e permissões.
Auditor sem poder de alteração
O perfil Auditor recebe auditoria.view, auditoria.manage e todas as permissões de leitura (*.view) dos módulos — mas nenhuma de escrita. Consegue ver tudo e não muda nada. É o perfil certo para o Controlo Interno e para auditorias externas.
Trilha de auditoria
Sistema / Administração › Trilha de auditoria — «Registo imutável de todas as ações sensíveis · para Controlo Interno e Inspeção».
O que fica registado
Cada acto relevante grava um registo com: data/hora, utilizador (nome no momento do acto), acção, entidade e ID da entidade, valor anterior e valor novo, IP e agente (browser). A escrita é feita pelos próprios módulos no momento da operação — não há forma de editar nem de apagar um registo, em nenhuma consola nem na API.
Acções canónicas (com rótulo e cor próprios):
| Acção | Rótulo |
|---|---|
criacao | Criação |
edicao | Edição |
aprovacao | Aprovação |
publicacao | Publicação |
anulacao | Anulação |
eliminacao | Eliminação |
reset_senha | Reposição de senha |
alteracao_permissao | Alteração de permissão |
login / logout | Início / Fim de sessão (ver Log de acessos) |
Os módulos registam ainda acções específicas, mostradas com o nome técnico: emissao_guia, pagamento, pagamento_confirmado, conciliacao, isencao, prescricao, fecho_periodo, abertura_periodo, alteracao_orcamental, depreciacao, abate, alienacao, transferencia, exportar (exportação de mapas, com formato, período e filtros), modulos.definir, cms.topico.fechar, cms.topico.apagar, cms.resposta.apagar, cadastro.processo_obra.indeferir, fiscalizacao.auto.arquivar, entre outras.
Exemplos do que gera registo:
- Utilizadores — criação, edição, mudança de estado, eliminação, reposição de senha, reenvio de credenciais, cancelamento de eliminação; permissões individuais;
- Parâmetros e taxas — criação, edição, aprovação, publicação (ver Administração);
- Tesouraria — guias, pagamentos, recibos, anulações, conciliações;
- Tributação, Contabilidade, Património, Cadastro, Ambiente, Fiscalização, Mercados;
- Comunicação — moderação de fóruns com motivo;
- Arquivo — criar pasta, carregar, renomear, enviar para o lixo;
- Exportações de mapas em PDF/Excel.
Licenciamento
Nesta versão o módulo de Licenciamento (taxas e licenças de postura) não escreve na trilha. Para acompanhar essas operações use os registos da Tesouraria (guias e pagamentos) — ver Tesouraria.
Indicadores do período
Quatro cartões, calculados sobre os filtros activos:
| Cartão | O que conta |
|---|---|
| Registos no período | todos os registos filtrados |
| Anulações | acções anulacao (receita e documentos) |
| Taxas / parâmetros | criação, edição, aprovação e publicação de Parametro e TaxaPostura |
| Perfis / permissões | alterações à entidade Perfil ou acções alteracao_permissao |
Pesquisar
Filtros (todos aplicados no servidor):
- Pesquisa livre («Utilizador, entidade, ID...») — procura no nome do utilizador, na entidade, no ID da entidade e na acção;
- Utilizador — «Todos os utilizadores» ou um utilizador concreto;
- Entidade — «Todas as entidades» ou uma (ex.: Utilizador, Parametro, TaxaPostura, Guia, ArquivoNo);
- Ação — «Todas as ações» ou uma das dez canónicas;
- De / Até — intervalo de datas.
A lista mostra Data / hora · Utilizador · Ação · Entidade · IP, 25 por página, do mais recente para o mais antigo. Não há filtro por IP nem por módulo — use a pesquisa livre e a entidade.
Ver um registo
Clique na linha. O painel lateral mostra Data / hora, Utilizador, Ação, Entidade, ID da entidade, IP, Agente e a secção Diferenças (antes → depois): cada campo alterado com o valor antigo e o novo, lado a lado. Nunca é apresentado JSON cru.
Exportar relatório
Exportar relatório (cabeçalho) gera auditoria-AAAA-MM-DD.csv com todos os registos que cumprem os filtros (não só a página visível), colunas timestamp, utilizador, acao, entidade, entidade_id, ip. O CSV não inclui o agente nem as diferenças — para essas, abra o registo. Os campos são protegidos contra injecção de fórmulas no Excel. Não há exportação em PDF.
Painel de segurança
Sistema / Administração › Segurança — «Tentativas falhadas, alertas por severidade, log de acessos e cópias de segurança».
Cartões
| Cartão | Significado |
|---|---|
| Tentativas falhadas (24h) | acessos recusados nas últimas 24 horas |
| Alertas abertos | alertas por tratar |
| Alertas críticos | alertas de severidade Crítica não resolvidos |
| Estado do backup | estado da última cópia de segurança e retenção |
Alertas de segurança
Lista de alertas com severidade (Baixa · Média · Alta · Crítica), tipo (Muitas anulações · Acesso fora de horário · Tentativas falhadas), estado (Aberto · Em tratamento · Resolvido), contexto e data. Ordenados por gravidade.
Tratar um alerta (exige auditoria.manage): escolha o novo estado → Atualizar estado → confirmar «Atualizar estado do alerta?». Um alerta Resolvido deixa de poder ser alterado.
Alertas ainda sem produtor automático
Nesta versão nenhuma rotina cria alertas: o painel mostra «Sem alertas — nenhum alerta de segurança para os critérios atuais» e os cartões ficam a 0 (não verificado em produção). Os indicadores fiáveis são o cartão Tentativas falhadas (24h) e o log de acessos.
Log de acessos
Tabela Data / hora · Utilizador / conta · Evento · IP · Resultado, com filtro por resultado (Todos · Sucesso · Falha), 25 por página.
| Evento | Quando é gravado |
|---|---|
| Início de sessão | credenciais aceites e sessão emitida (com 2FA, só depois do código) |
| Tentativa falhada | senha errada, conta inexistente, ou conta inactiva/bloqueada |
| Fim de sessão | terminar sessão |
Numa tentativa falhada a coluna Utilizador / conta mostra o identificador tentado (email ou nome) — nunca a senha. Enquanto uma conta está bloqueada por excesso de tentativas, as repetições não são gravadas (as tentativas que causaram o bloqueio já lá estão); isto evita que um anónimo encha o log.
Cópias de segurança
O cartão Cópias de segurança mostra Último backup, Último teste de restauro e Retenção, com o estado:
| Estado | Significado |
|---|---|
| OK (verde) | última cópia registada dentro do prazo |
| Atrasado | a rotina não corre há mais tempo do que devia |
| Falha | a última execução falhou; a data da última cópia boa mantém-se |
| Sem informação (vermelho) | nunca foi registada nenhuma cópia |
«Sem informação» significa que não há cópias
O cartão só é alimentado pela rotina de cópias de segurança instalada pela equipa de sistemas no servidor; é ela que regista a data de cada cópia e de cada teste de restauro. Enquanto o cartão disser «Sem informação», assuma que não existem cópias de segurança. Se houver cópias mas nenhum teste de restauro, o cartão avisa: uma cópia nunca restaurada não é uma cópia.
O que a rotina copia (ver o guia de instalação): a base de dados completa, os anexos que não passam pelo Arquivo, o repositório de documentos do Arquivo (cifrado em repouso) e, em separado e cifrado, as chaves da instalação — sem elas os documentos do Arquivo ficam ilegíveis para sempre. Retenção por omissão: 30 dias. Recomenda-se cópia diária de madrugada, teste de restauro mensal e cópia rápida da base antes de cada actualização.
Contas, senhas e sessões
O que o SGM impõe, e onde se gere:
Senhas
- Mínimo 8 caracteres, com confirmação; não há regra de complexidade obrigatória. A nova senha não pode ser igual à actual;
- Senhas geradas pelo sistema (criação de conta, reposição por administrador) têm 16 caracteres com maiúsculas e minúsculas e obrigam a trocar no primeiro acesso («Deve alterar a senha no próximo acesso» na ficha do utilizador);
- Mudar a senha termina todas as sessões («Senha alterada. Faça login novamente.»);
- Recuperação de acesso em 4 passos (pedido → código de 6 dígitos por SMS ou email → verificação → nova senha). O código vale 10 minutos, com 5 tentativas, reenvio a cada 60 s e 3 envios por hora por conta. O pedido responde sempre da mesma forma, exista ou não a conta.
Bloqueio por tentativas falhadas
| Regra | Valor por omissão |
|---|---|
| Tentativas antes de bloquear | 5 (parâmetro security.login_max_attempts, mín. 3) |
| Duração do bloqueio | 15 minutos (security.login_lockout_minutes) |
| Mensagem | «Demasiadas tentativas falhadas. Tente de novo em N min.» |
O bloqueio é por conta e expira sozinho — não existe botão de desbloqueio. Estes valores são definidos pela administração da plataforma. Além disso, o servidor limita pedidos por endereço IP nos ecrãs de entrada e recuperação.
Autenticação de dois factores (2FA)
- O 2FA do SGM é um código de 6 caracteres enviado por email (não é aplicação autenticadora). Validade: 10 minutos (
security.otp_expiry_minutes); máximo 10 envios por hora e 60 s entre reenvios; 5 códigos errados bloqueiam a verificação por 30 minutos; - Activa-se na própria conta ou por um administrador em Administração › Utilizadores (Ativar 2FA / Desativar 2FA). Desactivar pela própria conta exige a senha;
- Ao activar, o sistema entrega um código de recuperação (letras e dígitos sem caracteres ambíguos). Usá-lo para entrar consome-o e gera outro, mostrado nesse momento — guarde-o. Pode regenerá-lo na conta;
- O 2FA não é obrigatório para nenhum perfil. Ver a recomendação abaixo.
Sessões
- A sessão expira ao fim do prazo definido na instalação (por omissão 120 minutos, renovável enquanto a consola está em uso); não há expiração por inactividade;
- Entrar noutro dispositivo não termina as sessões anteriores;
- Um utilizador bloqueado/inactivado deixa de poder usar qualquer sessão de imediato — incluindo no Arquivo — e cada nova tentativa fica no log como Tentativa falhada;
- A gestão de sessões próprias («dispositivos ligados») existe na API mas não tem ecrã na consola nesta versão (não verificado).
Bloquear, repor e eliminar utilizadores
Estas acções não estão no painel de segurança: fazem-se em Administração › Utilizadores — Inativar / Ativar, Repor senha, Ativar / Desativar 2FA, reenviar credenciais, eliminar e cancelar eliminação. Todas ficam na trilha. Ver Administração.
Retenção da trilha
Não há expurgo automático da trilha nem do log de acessos: crescem indefinidamente e a retenção é tratada ao nível da base de dados e das cópias de segurança. A única limpeza agendada de segurança é a dos tokens revogados expirados (diária).
Boas práticas
- Active o 2FA nos perfis com poder de escrita em dinheiro e acessos: Administrador de Sistema, Tesoureiro / Caixa, Vereador de Finanças, Contabilista. Não é imposto pelo sistema — faça-o por política interna e confirme na coluna 2FA da lista de utilizadores;
- Reveja semanalmente o cartão Tentativas falhadas (24h) e filtre o log de acessos por Falha: vários falhanços seguidos no mesmo identificador ou IP merecem contacto com o utilizador;
- Reveja mensalmente os cartões Anulações e Perfis / permissões da trilha, abrindo cada registo para ver as diferenças;
- Exija que o cartão de cópias de segurança esteja OK com teste de restauro no último mês; se disser «Sem informação», trate como incidente;
- Uma conta por pessoa, sem partilha de credenciais — a trilha só vale como prova se o utilizador registado for quem praticou o acto;
- Ao sair de funções, inative a conta em vez de a eliminar: o nome mantém-se legível na trilha e a conta deixa de entrar de imediato;
- Exporte o CSV da trilha no fecho de cada exercício e guarde-o com o processo de prestação de contas.