Nous avons quelques données:
- Les développeurs ont besoin d'une réplique de la base de données de production sur leurs machines.
- Les développeurs ont le mot de passe de cette base de données dans les fichiers App.config.
- Nous ne voulons pas que les données de ladite base de données soient compromises.
Quelques solutions suggérées et leurs inconvénients:
- Cryptage complet du disque. Cela résout tous les problèmes, mais dégrade les performances du portable, et nous sommes une start-up, alors n’avez pas d’argent pour les chevaux de course.
- Créer une machine virtuelle avec un disque dur crypté et y stocker la base de données. Cela fonctionne bien, mais cela n'aide pas beaucoup, car il y a un mot de passe dans Web.Config.
- La solution numéro 2 + demande au développeur de saisir le mot de passe de la base de données chaque fois qu'il exécute quoi que ce soit. Il résout tous les problèmes, mais il est vraiment encombrant pour les développeurs qui lancent parfois l’application plusieurs fois par minute. De plus, nous avons plusieurs applications qui se connectent à la même base de données, et la mise en place d'un écran de mot de passe devra être différente.
Ma question est donc la suivante: existe-t-il une solution commune à ce problème ou des suggestions sur la manière de rendre exploitables les solutions ci-dessus?
Réponses:
Non seulement vous ne voulez pas une copie de la base de données de production, mais cela pourrait même être illégal. Par exemple, aux États-Unis, vous ne pouvez pas déplacer des données de production de l'environnement de production si celui-ci contient des informations réglementées telles que des données personnelles sur la santé, des données financières ou même des données pouvant être utilisées pour le vol d'identité. Si vous le faites, vous risquez d’être condamné à une amende, à perdre votre statut de conformité et donc à faire l’objet d’audits plus agressifs, voire à être nommé dans une action en justice.
Si vous avez besoin de données à l'échelle de production pour les tests, vous avez plusieurs options:
Pour l'option n ° 2
la source
Pouvez-vous au moins indiquer aux développeurs les machines virtuelles de votre centre de données qu'ils peuvent utiliser pour ce travail? Bien qu'ils devraient vraiment travailler avec des données hors production, ce serait plus sûr jusqu'à ce que vous puissiez y accéder, car les données ne seraient pas stockées sur des ordinateurs portables facilement volés.
la source
Changez votre façon de travailler si possible.
Comme d'autres l'ont fait remarquer:
Ces deux facteurs vous exposent à des risques importants et doivent être modifiés si possible. Vous devriez au moins évaluer sérieusement le coût de ces changements. S'il s'agit d'une dépendance externe que vous n'avez pas le pouvoir de changer, envisagez de la soulever comme une préoccupation pour quiconque a ce pouvoir.
Dans le monde réel, cependant, il ne sera peut-être pas possible de changer cela. En supposant que ce que vous faites soit légal, vous devrez peut-être vivre avec cet arrangement (au moins temporairement).
Si cela est vraiment nécessaire, il vous suffit de procéder au chiffrement intégral du disque.
Compte tenu des risques, vous devez utiliser la meilleure option de sécurité disponible, et c'est tout. S'il y a un succès de performance, vivre avec elle. C'est un coût de travailler avec des données sensibles.
Si j'étais votre client, je ne serais pas impressionné que vous ayez décidé de ne pas utiliser la meilleure option de sécurité disponible avec mes données, car vos ordinateurs portables seraient un peu plus lents.
la source
La réponse de Corbin March est plutôt bonne, je vais juste ajouter un détail supplémentaire, à savoir que vous avez généralement deux classes de données dans votre base de données de production: métadonnées système / application; et données utilisateur client / données transactionnelles. Ce dernier ne devrait JAMAIS être utilisé dans un environnement de développement "tel quel".
Il est très rare en effet que vous ayez besoin des informations du client de production pour effectuer le développement.
Toutefois, si le problème décrit ici par le PO concerne des données secrètes commerciales ou des données système hautement propriétaires qui ne concernent pas les données client, cela est demandé par les développeurs. le mot de passe de la base de données est conservé en clair dans un fichier de ressources quelque part. Il doit exister un mécanisme permettant, par exemple, de régénérer un mot de passe quotidien, qui n'est pas stocké sur le disque.
la source
client user data/transactional data... should NEVER be used in a development environment "as is."
- Cela me semble impraticable. Des problèmes de programmation liés à la production liés aux données d'un client spécifique seraient insolubles dans le cadre de cet arrangement. De plus, les données réelles réelles sont extrêmement utiles du point de vue des tests. L’effort de privatisation ou d’anonymisation doit être axé uniquement sur les données spécifiquement réglementées.Vous ne précisez pas quelle base de données et quel environnement.
Si vous pouvez utiliser la sécurité intégrée, la base de données n'est pas accessible sans être connecté en tant qu'utilisateur. Oui, si les données sont sur le disque dur, elles peuvent être piratées, mais il s’agit d’une défense de premier niveau.
App.config me fait penser que cela pourrait être un .NET. Mettez config dans une clé USB et lisez-la à partir de la clé USB. Si le lecteur n'est pas présent, indiquez à l'utilisateur le mot de passe.
Est-il possible de stocker le mot de passe en mémoire la première fois qu'il est saisi et lu par tous? Encore une fois, vous ne déclarez pas l'environnement. Fichiers mappés en mémoire
Avec certains TDE, vous pouvez stocker la clé sur un périphérique séparé afin qu’ils ne la fournissent que lorsque le serveur de base de données est démarré.
la source
Une option possible consiste à créer une copie de la base de données et à la nettoyer à l'aide d'un script afin d'obtenir des données différentes de celles en cours de production. Vous ne vous retrouverez pas avec les mêmes données que la production, mais vous aurez la même échelle.
la source