web-dev-qa-db-fra.com

Quelle est une bonne pratique de sécurité pour le stockage d'une base de données critique sur les ordinateurs portables des développeurs?

Nous avons quelques données:

  1. Les développeurs ont besoin d'une réplique de la base de données de production sur leurs machines.
  2. Les développeurs ont le mot de passe de cette base de données dans les fichiers App.config.
  3. Nous ne voulons pas que les données de ladite base de données soient compromises.

Quelques suggestions de solutions et leurs inconvénients:

  1. Cryptage complet du disque. Cela résout tous les problèmes, mais dégrade les performances de l'ordinateur portable, et nous sommes une start-up, alors n'ayez pas d'argent pour les chevaux de bataille.
  2. Créer un VM avec un disque dur chiffré et y stocker la base de données. Cela fonctionne bien, mais cela n'aide pas trop, car il y a un mot de passe dans Web.Config.
  3. Solution numéro 2 + obligeant le développeur à taper 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 lourd 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 œuvre d'un écran de mot de passe devra différer dans chacune.

Donc, ma question est, s'il existe une solution commune à ce problème, ou des suggestions sur la façon de rendre l'une des solutions ci-dessus réalisable?

33
Svarog

Non seulement vous ne voulez pas de copie de la base de données de production, mais elle peut en fait être illégale. Par exemple, aux États-Unis, vous ne pouvez pas déplacer des données de production hors de l'environnement de production si elles contiennent 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 qui pourraient être utilisées dans le vol d'identité. Si vous le faites, vous pourriez être condamné à une amende, perdre votre statut de conformité et donc être soumis à des audits plus agressifs, ou même être nommé dans une poursuite.

Si vous avez besoin de données à l'échelle de la production pour les tests, vous avez deux options:

  1. Générez toutes les données factices. C'est plus compliqué qu'il n'y paraît. Il est étonnamment difficile et laborieux de générer des données imaginaires sensibles.
  2. Anonymisez vos données de production. Cela peut être plus facile, mais procédez avec prudence.

Pour l'option # 2

  • Dans l'environnement de production, un administrateur de base de données autorisé effectue une copie des données de production.
  • Toujours dans l'environnement de production, le même administrateur autorisé exécute une routine qui anonymise toutes les données sensibles. En cas de doute, anonymisez.
  • Ce n'est qu'alors que les données doivent être déplacées vers un autre environnement.
100
Corbin March

Pouvez-vous au moins donner aux développeurs des machines virtuelles dans votre centre de données dans lesquelles ils peuvent effectuer des RD pour ce travail? Bien qu'ils devraient vraiment travailler à partir de données hors production, cela serait plus sûr jusqu'à ce que vous puissiez y arriver car les données ne seraient pas stockées sur des ordinateurs portables facilement volables.

9
Brian Knoblauch

Changez votre façon de travailler si possible.

Comme d'autres l'ont souligné:

  • L'utilisation de données de production pour le développement n'est pas une bonne pratique.
  • Avoir un mot de passe stocké en texte brut n'est pas une bonne pratique.

Ces deux éléments 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 n'est peut-être pas vraiment possible de changer cela. En supposant que ce que vous faites est légal, vous devrez peut-être vivre avec cet arrangement (au moins temporairement).

Si cela est vraiment nécessaire, il vous suffit de faire un chiffrement complet 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, vivez avec. 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 cela rendait vos ordinateurs portables légèrement plus lents.

8
user82096

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 peut être un .NET. Mettez config dans une clé USB et lisez-la depuis la clé USB. Si le lecteur n'est pas présent, saisissez le type d'utilisateur dans le mot de passe.

Existe-t-il un moyen de stocker le mot de passe en mémoire la première fois qu'il est entré et lu par tous. Encore une fois, vous ne dites pas l'environnement. Fichiers mappés en mémoire

Avec certains TDE, vous pouvez stocker la clé sur un périphérique distinct afin qu'ils ne fournissent que la clé au démarrage du serveur de base de données.

1
paparazzo

La réponse de Corbin March est plutôt bonne, je vais juste ajouter un détail supplémentaire, que vous avez généralement deux classes de données dans votre base de données de production: les métadonnées système/application; et données utilisateur client/données transactionnelles. Ce dernier ne doit JAMAIS être utilisé dans un environnement de développement "tel quel".

Il est en effet très rare que vous ayez besoin d'informations réelles sur le client de production pour effectuer le développement.

Cependant, si le problème que l'OP décrit ici implique des données de secret commercial ou des données système hautement propriétaires qui n'impliquent pas de données client, cela est requis par les développeurs ... l'approche de sécurité doit impliquer un schéma qui n'a pas le mot de passe db conservé en texte clair dans un fichier de ressources quelque part. Il doit y avoir un mécanisme pour, par exemple, régénérer un mot de passe quotidien, qui n'est pas stocké sur le disque.

1
dwoz

Une option possible consiste à faire une copie de la base de données et à nettoyer cette copie avec un script afin de vous retrouver avec des données différentes de celles qui sont réellement en production. Vous ne vous retrouverez pas avec les mêmes données que la production Mais vous aurez la même échelle.

0
Jason Crosby