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