Checado no servidor

Prontuário médico é dado sensível. Tratamos assim.

Segurança não é uma camada adicional no Astantis CRM, é parte da arquitetura, do banco de dados ao navegador.

A permissão é conferida no servidor a cada rota — esconder o botão da tela não é segurança.

Toda ação sensível registra quem fez, o quê e quando na trilha de auditoria.

O banco roda em rede privada e nunca fica exposto à internet.

Tentativas de login em série são barradas antes de virarem ataque.

A checagem não depende do que a tela mostra.

Sessão, perfil, clínica e vínculo com o paciente são conferidos de novo no servidor, em toda requisição. Se a permissão não existe, a resposta é recusa — venha o clique de onde vier.

Ver o que cada perfil enxerga
Camada 1Sessão válida
Sem token, a resposta é 401 e a rota nem começa.
Camada 2Perfil do módulo
Fora do papel, 403 — mesmo com sessão boa.
Camada 3Isolamento entre clínicas
Toda consulta ao banco carrega o filtro da clínica — e um verificador reprova a publicação se alguma não carregar.
Camada 4Vínculo com o paciente
O profissional alcança quem acompanhou, e o período em que acompanhou — id adivinhado devolve 404.
Controle de acesso

RBAC aplicado no servidor

A permissão de cada perfil (Gestor, Médico, Recepção, Desenvolvedor) é verificada em toda rota da API, não apenas escondida na interface. Mesmo que alguém tente acessar uma rota diretamente, o servidor recusa se o perfil não tiver permissão para aquela ação.

Saiba mais sobre controle de acesso

Esconder um botão na tela não impede alguém de chamar a rota por trás dele, por isso a checagem de permissão acontece de novo no servidor, em toda requisição, independente do que a interface mostra.

Na prática, cada rota da API passa por duas camadas antes de tocar qualquer dado:

  1. Sessão válida: o token de sessão é verificado antes de qualquer outra coisa. Sem sessão, a resposta é recusada (401), nem chega perto da lógica da rota.
  2. Permissão para aquele módulo ou ação: o perfil da sessão (Gestor, Médico, Recepção, Desenvolvedor) é comparado contra o que aquela rota específica exige. Um médico tentando acessar uma rota do módulo Financeiro recebe 403 (Acesso negado), mesmo tendo uma sessão válida.

Há ainda uma terceira camada, e ela é a que não depende de ninguém lembrar: toda consulta ao banco carrega o identificador da clínica. Um verificador percorre o código inteiro a cada publicação e a reprova se encontrar uma consulta sem esse filtro — as exceções deliberadas são poucas, nomeadas e trazem o motivo escrito. Isolamento entre clínicas não é uma regra que cada rota precisa repetir corretamente; é uma condição que o build confere.

Exemplo de checagem
Gestor → agenda completaPermitido
Recepção → prontuário clínicoBloqueado
Rastreabilidade

Trilha de auditoria

Toda ação sensível, criação, edição ou exclusão de dados de paciente, prontuário, prescrição ou usuário, fica registrada com quem fez, o quê e quando. Isso permite reconstruir o histórico de qualquer alteração no sistema.

Saiba mais sobre auditoria

O registro fica disponível para o gestor consultar a qualquer momento, em Configurações → Auditoria, com filtros por perfil, por pessoa e por período, útil tanto para investigar um problema pontual quanto para atender uma exigência de conformidade no futuro.

Cada linha da trilha guarda, no mínimo:

  • quem fez a ação (nome e perfil de acesso no momento);
  • o que foi feito (criar paciente, assinar prontuário, emitir prescrição, criar ou remover usuário, alterar a própria senha, entre outras);
  • a entidade afetada e seu identificador, quando aplicável;
  • data e hora exatas do servidor, não o relógio do computador de quem agiu.

O registro de auditoria é gravado de forma independente da ação principal: mesmo que o registro de auditoria falhe por algum motivo, ele nunca bloqueia nem reverte a ação do usuário, e o inverso também vale, a ação em si não depende da auditoria para acontecer.

Registro de auditoria
Dra. Souzaeditou prontuário · 14:32
Recepçãocriou agendamento · 14:20
Infraestrutura

Banco de dados isolado

O banco MySQL roda dentro de uma rede Docker privada e nunca é exposto diretamente à internet. A aplicação usa uma credencial de banco com privilégio mínimo, apenas as operações que o dia a dia exige, separada da credencial usada para aplicar migrações de schema.

Saiba mais sobre o isolamento

Mesmo que a aplicação seja comprometida, a credencial que ela usa não tem permissão para alterar a estrutura do banco, só para ler e escrever os dados do dia a dia.

Algumas camadas adicionais de isolamento:

  • Rede privada Docker: o banco não tem porta exposta na internet pública; só os containers da própria aplicação, na mesma rede interna, conseguem alcançá-lo.
  • Credenciais separadas por função: a credencial usada pela aplicação no dia a dia é diferente da credencial usada para aplicar migrações de schema, que só é usada manualmente, no momento de um deploy.
  • Acesso administrativo só por túnel SSH: quando é preciso inspecionar o banco diretamente (raramente), o acesso passa por um túnel autenticado por chave, nunca por uma porta aberta ao público.
  • Backups diários com rotação, reduz o impacto de uma falha de infraestrutura ou de um erro operacional.

Documentos anexados ao prontuário (exames, PDFs) também ficam salvos direto no banco, não em um serviço de arquivos externo, um ponto a menos de exposição.

Caminho até o banco
App
Rede privada
Banco
Criptografia

Senhas protegidas com bcrypt

Nenhuma senha é armazenada em texto puro. Todo login passa por hash criptográfico (bcrypt) antes de tocar o banco de dados.

Saiba mais sobre criptografia

O hash é uma via de mão única, não existe forma de “descriptografar” de volta para a senha original, nem para quem tem acesso direto ao banco de dados.

O algoritmo usado é o bcrypt, com um fator de custo deliberadamente alto, o que torna cada tentativa de adivinhação por força bruta computacionalmente cara, mesmo que alguém consiga uma cópia do banco de dados. Cada senha recebe também um “sal” único, então duas pessoas com a mesma senha nunca geram o mesmo hash, o que impede ataques baseados em tabelas pré-computadas (rainbow tables).

Trocar a própria senha (Configurações → Minha conta) sempre exige informar a senha atual antes de definir a nova.

Antes / depois
senha123 bcrypt$2b$10$Xk9F7z…
Proteção

Rate limiting em tentativas de login

Tentativas de login em série (força bruta) são limitadas automaticamente, dificultando ataques de adivinhação de senha.

Saiba mais sobre essa proteção

Depois de várias tentativas seguidas sem sucesso, novas tentativas para aquela conta ficam bloqueadas por um tempo, o suficiente para inviabilizar um ataque automatizado sem atrapalhar quem só errou a senha uma vez.

O limite é aplicado no servidor, por origem da tentativa, não depende de nenhuma configuração no navegador de quem está tentando entrar, então não há como simplesmente limpar o histórico ou trocar de aba para contornar o bloqueio. Passado o tempo de espera, as tentativas voltam ao normal automaticamente, sem precisar de intervenção manual do gestor ou do suporte.

5tentativas por 15 min
Privacidade

Cada perfil só vê o que precisa

Um recepcionista não vê o conteúdo clínico do prontuário; um médico não acessa configurações administrativas da clínica. O acesso é desenhado para o mínimo necessário de cada função.

Saiba mais sobre os perfis

Os quatro perfis do Astantis CRM, e o que cada um foi desenhado para enxergar:

  • Gestor: visão completa da clínica: dashboard geral, agenda de todos os médicos, financeiro, estoque, documentação legal e gestão de usuários.
  • Médico(a): área médica, prontuário e prescrição; a própria agenda e os próprios pacientes, não os de outros profissionais.
  • Recepção: agendamento, cadastro de pacientes e um dashboard operacional enxuto; sem acesso ao conteúdo clínico do prontuário nem ao financeiro.
  • Desenvolvedor(a): acesso técnico de manutenção, incluindo as áreas administrativas, para suporte e evolução do sistema.

Veja a lista completa de recursos por perfil na página de recursos.

Quem vê o quê
Médico vê prontuário clínicoSim
Recepção vê prontuário clínicoNão
Recepção vê agendaSim
🎣Golpes e e-mails falsos

Como reconhecer um e-mail nosso

A defesa técnica desta página não impede o golpe mais comum contra uma clínica: alguém ligar para a recepção dizendo ser do suporte e pedir a senha ou o código de acesso. Por isso vale saber o que nunca vamos pedir.

Saiba mais sobre golpes por e-mail e telefone

Três regras que valem sempre, sem exceção:

  1. Nunca pedimos sua senha: por e-mail, telefone, WhatsApp ou qualquer outro canal. Ninguém da nossa equipe precisa dela para ajudar você — nem nós conseguimos vê-la, porque o banco guarda só um resumo criptográfico.
  2. Nunca pedimos o código de verificação: o código de 6 dígitos que chega por e-mail serve só para você digitar na nossa tela de login. Quem pedir esse código está tentando entrar na sua conta naquele exato momento.
  3. Todo link nosso aponta para o nosso domínio: antes de clicar, passe o mouse sobre o link e confira o endereço. Se ele leva para outro domínio, não é nosso.

Nossos e-mails automáticos avisam quando algo importante muda na sua conta: um acesso de dispositivo novo, uma troca de senha e uma troca do e-mail de acesso. Se você receber um desses avisos e não reconhecer a ação, troque a senha imediatamente e avise quem administra a clínica.

Recebeu um e-mail suspeito em nome do Astantis CRM? Não clique em nada e encaminhe para o nosso canal de privacidade — o endereço está na Política de Privacidade.

O que nunca pedimos
Sua senhaNunca
Seu código de 6 dígitosNunca
Confirmar seu e-mail na nossa telaSim

Quer entender como isso se aplica à sua clínica?

Conheça os planos disponíveis e fale com a nossa equipe.

Ver planos