Estou trabalhando para um consultório médico particular, e estamos planejando instalar um sistema de agendamento de consultas por meio de nossa página da web. O sistema de consultas é um aplicativo PHP que armazena seus registros em um banco de dados SQL que pode estar no próprio servidor da web ou em um servidor remoto.
Devido ao caso de uso, o banco de dados conterá informações pessoais muito confidenciais* que devem ser mantidas em segredo do público.
Reforçar o acesso ao banco de dados é um ponto, mas acho que uma importante brecha de entrada nos dados seria o próprio aplicativo PHP.
Existe uma maneira recomendada de isolar os dados sensíveis do acesso público? Eu poderia imaginar um sistema como o seguinte:
público -> acesso via aplicativo PHP em servidor acessível publicamente -> banco de dados SQL com entradas confidenciais mascaradas <- sincronização via túnel ssh reforçado -> banco de dados SQL privado com entradas completas <- acesso via aplicativo PHP em servidor não público -> funcionários
Dessa forma, mesmo que o aplicativo PHP expusesse dados ao público, os dados sensíveis seriam protegidos. Além disso, obter acesso ao próprio banco de dados SQL disponível publicamente seria menos crítico.
O mapeamento entre os dois bancos de dados seria por meio de um código hash exclusivo para cada uma das entradas. Efetivamente, isso é apenas uma pseudonimização e não uma anonimização. Mas ainda assim, é uma camada adicional de segurança.
Só não sei se há uma maneira pronta para tal implementação. Basicamente, qualquer alteração no banco de dados SQL com entradas sensíveis mascaradas deve disparar uma sincronização com um mascaramento subsequente (já que entradas de clientes feitas de público precisam ser mascaradas).
Existe uma implementação melhor? Eu ficaria muito feliz com qualquer sugestão.
* Os pacientes inseririam dados sensíveis no banco de dados público, e precisamos desses dados para fazer nosso trabalho (precisamos de nomes, contato e algumas informações médicas). Mas assim que esses dados forem inseridos, eles devem ser transferidos para o banco de dados privado e ficar indisponíveis no banco de dados público.
Mas ainda assim, não quero fuzz com o aplicativo PHP que é pré-fabricado. Mascarar os dados no banco de dados público (por exemplo, com *s) faria o aplicativo PHP funcionar normalmente
NÃO! Se os dados forem processados como descrito em seu primeiro banco de dados de qualquer forma, algum registro deles permanecerá em logs de transações ou memória, onde "caras maus" ainda seriam capazes de obtê-los.
Este é um problema de infraestrutura muito maior do que a sincronização de dados. NENHUM banco de dados back-end deve ser diretamente "acessível publicamente" na Internet, e em particular nenhum com informações pessoalmente identificáveis (PII) ou informações pessoais de saúde (PHI). Certamente há aspectos legais no que você está tentando fazer , regidos por leis como HIPAA (nos EUA) ou GDPR (na Europa), dependendo de onde esta prática médica está e quem são seus pacientes. Você deve ter clareza sobre quais leis nacionais e locais se aplicarão a esta aplicação.
Com isso em mente, você precisa considerar o uso de tecnologias como um firewall de aplicativo da web, servidor web proxy reverso, servidor de aplicativo, rede segmentada adequadamente com TODOS os ativos de banco de dados localizados em redes privadas, comunicação e armazenamento de dados criptografados adequadamente, software de aplicativo e banco de dados que atenda a todos os requisitos regulatórios, sistemas operacionais reforçados, uma política de segurança de informações publicada que detalha sua conformidade legal em relação à proteção de dados de pacientes, etc. Sua seleção de banco de dados deve ser capaz de proteger dados automaticamente, com base na função do usuário, redigindo informações quando apropriado e auditando o acesso a tudo que requer proteção legal. PHP pode não ser sua melhor escolha de linguagem de programação no que diz respeito à segurança também.
O ponto principal é que você quase certamente não pode simplesmente pegar algum software FOSS do GitHub ou algo parecido e jogá-lo em um servidor exposto publicamente e esperar que ele funcione de qualquer forma que proteja os dados PII e a confidencialidade do seu paciente. Com base na sua descrição (armazenamento de informações de contato e alguns dados médicos), esse é o tipo de coisa que requer design e implementação profissionais, incluindo revisão legal e auditoria independente especializada em proteção de informações , ou sua prática médica poderia MUITO facilmente enfrentar multas e processos do governo, mesmo no caso improvável de seus dados não serem roubados. Em algumas jurisdições, pode até haver responsabilidade criminal por dados de pacientes maltratados. Quase certamente será menos incômodo (e arriscado) contratar um serviço externo que já fornece essas proteções do que tentar configurar (e manter) sua própria pilha de tecnologia internamente.