Preciso criar um banco de dados que contenha informações sobre doenças pessoais dos usuários.
Qual pode ser a abordagem para implementar as colunas das tabelas do banco de dados: criptografar as informações, separar dados dentro de dois bancos de dados diferentes, um para dados confidenciais e outro para dados não confidenciais, ou ambos ou outra abordagem?
security
database-design
mysql
carlo
fonte
fonte
Respostas:
Você pode criptografar os dados com uma chave armazenada em seu aplicativo Web, para que os dados sejam gravados / lidos do db em sua forma criptografada. No entanto, qualquer pessoa com acesso ao código teria acesso à chave e, com a chave, aos dados não criptografados. Isso resolve o requisito
Quanto a usar para separar bancos de dados, acho que não é necessário. Você está armazenando os dados criptografados e usando permissões de banco de dados por usuário, a tabela (se isso for necessário) será mais que suficiente. Eu acho que o banco de dados extra adiciona uma camada de complexidade sem muito mais. A menos que esteja em um local diferente, pode haver uma PEQUENA melhoria em um único sistema de banco de dados.
fonte
A resposta de Ominus aborda sua primeira pergunta. A resposta para a segunda pergunta pode exigir mais detalhes sobre seu aplicativo.
Outra abordagem com segurança ainda maior se os pacientes precisarem acessar o banco de dados pode ser ter um banco de dados separado para cada usuário. Nesta abordagem, você pode usar uma estrutura que fornece funcionalidade de vários inquilinos e vários bancos de dados. O problema, porém, é que, se você tiver usuários de aplicativos separados e usuários de banco de dados, a sincronização desses usuários será incrivelmente difícil. Eu acho que os pacientes não precisam acessar seu banco de dados. Se eles precisarem, pode ser mais seguro ter uma chave por usuário.
Além dos requisitos legais ou contratuais, algumas outras razões pelas quais posso pensar em ter bancos de dados separados são: percepção do cliente sobre aumento da segurança, facilitando as vendas, preocupações com quebra de criptografia e preocupações com comprometimento da (s) chave (s).
Em relação à parte da resposta de Briddmus, onde ele afirma "que você precisa criptografar mais do que apenas as informações médicas": isso só é válido se todos no banco de dados tiverem uma condição médica. (Eu acho que esse é o caso).
Nota: partes desta resposta seriam mais adequadas como comentários, mas ainda não tenho representante suficiente para postar comentários aqui.
fonte
Para esse tipo de aplicativo, você precisa pensar em quem deve ter permissão para acessar os dados. Com as informações médicas, acho que deve ser restrito ao usuário que as inseriu e a quem eles deram permissão para visualizá-las.
Para impedir que o DBA visualize os dados, você precisará criptografá-lo usando um código ao qual o DBA não tem acesso.
Você também precisa criptografar as informações de uma maneira que o programador de aplicativos também não possa acessá-las. Não faz sentido criptografar as informações do DBA se um programador puder efetuar login como qualquer usuário.
Você também não deseja criptografar todos os dados com o mesmo código. O software pode ter um erro que mostra a um usuário as informações de outro. Portanto, provavelmente seria melhor criptografar os dados de cada usuário usando um código específico para esse usuário.
É importante observar que você precisa criptografar mais do que apenas as informações médicas; como usuário final, eu não gostaria que seu DBA soubesse que tenho uma condição médica, muito menos o que é. Portanto, você também precisará criptografar qualquer informação de identificação pessoal sobre o usuário. Isso inclui coisas como:
fonte