Como separar dados confidenciais no banco de dados (MySql)


9

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?


11
De quem você precisa proteger os dados?
Oded

Boa pergunta, mas talvez isso deva ser migrado para dba.stackexchange.com/questions ?
FrustratedWithFormsDesigner

@Oded o dba não deve poder visualizar as informações sobre a doença do usuário do banco de dados.
carlo

2
Mas quem não deveria ?
Oded

11
Você poderia criptografá-lo no lado do aplicativo, mas o aplicativo teria a chave. É um aplicativo da Web que está "inserindo" os dados?
ominus

Respostas:


5

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

o dba não deve poder visualizar as informações sobre a doença do usuário do banco de dados.

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.


11
Outro motivo para bases de dados separadas é um requisito legal ou contratual de que os dados confidenciais sejam armazenados dentro de uma jurisdição (não na nuvem).
Gilbert Le Blanc

2

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.


1

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:

  • nome
  • data de nascimento
  • endereço de e-mail
  • sexo
  • endereço
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.