J'ai besoin de concevoir une base de données qui contiendra des informations sur la maladie personnelle des utilisateurs.
Quelle peut être l'approche pour implémenter les colonnes des tables de la base de données: crypter les informations, séparer les données dans deux bases de données différentes, une pour les données sensibles et une autre pour les données non sensibles, ou les deux ou une autre approche?
Réponses:
Vous pouvez crypter les données avec une clé stockée dans votre application Web afin que les données soient écrites / lues à partir de db sous leur forme cryptée. Cependant, toute personne ayant accès au code aurait accès à la clé et avec la clé aux données non chiffrées. Cela résout l'exigence
En ce qui concerne l'utilisation pour séparer les bases de données, je ne pense pas que ce soit nécessaire. Vous stockez les données cryptées et utilisez les autorisations de base de données par utilisateur, la table (si cela est même nécessaire) sera plus que suffisante. Je pense que la base de données supplémentaire ajoute une couche de complexité sans grand-chose d'autre. À moins que ce ne soit à un emplacement différent, il peut y avoir une PETITE amélioration par rapport à un seul système de base de données.
la source
La réponse d'Ominus répond à votre première question. La réponse à la deuxième question peut nécessiter plus de détails sur votre candidature.
Une autre approche avec une sécurité encore plus grande si les patients doivent accéder à la base de données pourrait être d'avoir une base de données distincte pour chaque utilisateur. Dans cette approche, vous pouvez utiliser une infrastructure qui fournit des fonctionnalités multi-locataires et multi-bases de données. Le problème est cependant que si vous avez des utilisateurs d'application et des utilisateurs de base de données distincts, la synchronisation de ces utilisateurs sera incroyablement difficile. Je suppose cependant que les patients n'ont pas besoin d'accéder à votre base de données. S'ils en ont besoin, il peut être plus sûr d'avoir une clé par utilisateur.
En plus des exigences légales ou contractuelles, d'autres raisons pour lesquelles je peux penser à avoir des bases de données distinctes sont: la perception du client d'une sécurité accrue facilitant les ventes, les soucis de rupture du cryptage et les soucis de (la) clé (s) compromise.
En ce qui concerne la partie de la réponse de Briddmus où il déclare "que vous devez crypter plus que les informations médicales": cela ne s'applique que si tout le monde dans la base de données a une condition médicale. (Je suppose que c'est le cas).
Remarque: certaines parties de cette réponse seraient mieux adaptées en tant que commentaires, mais je n'ai pas encore suffisamment de représentants pour poster des commentaires ici.
la source
Pour ce type d'application, vous devez penser à qui devrait être autorisé à accéder aux données. Avec les informations médicales, je pense qu'elles devraient être limitées à l'utilisateur qui les a saisies et à toute personne autorisée à les consulter.
Afin d'empêcher le DBA de visualiser les données, vous devrez les chiffrer à l'aide d'un code auquel le DBA n'a pas accès.
Vous devez également crypter les informations de manière à ce que le programmeur d'application ne puisse pas y accéder non plus. Il est inutile de crypter les informations du DBA si un programmeur peut se connecter en tant qu'utilisateur.
Vous ne voulez pas non plus crypter toutes les données avec le même code. Le logiciel peut avoir un bogue qui montre à un utilisateur les informations d'un autre. Il serait donc préférable de crypter les données de chaque utilisateur à l'aide d'un code spécifique à cet utilisateur.
Il est important de noter que vous devez crypter plus que les informations médicales; en tant qu'utilisateur final, je ne voudrais pas que votre DBA sache que j'ai un problème de santé, sans parler de ce que c'est. Vous devrez donc crypter également toute information d'identification personnelle concernant l'utilisateur. Cela comprend des choses telles que:
la source