2010-01-28 8 views
2

Je suis étudiante et nous fabriquons un système d'information simple pour un hôpital. Comment pouvons-nous améliorer la sécurité de la base de données mysql afin que les informations confidentielles soient protégées.Comment améliorer la sécurité de la base de données mysql

+0

Arrêtez le serveur, ce qui rendra la base de données impossible à attaquer. Vraiment: Quelles mesures avez-vous prises jusqu'à présent? Si nous ne savons pas quel est l'état actuel, comment devrions-nous savoir quoi ou comment nous améliorer? – Joey

+0

Vous avez besoin de beaucoup plus que de protéger des données confidentielles. Je travaille aussi dans un hôpital, et la sécurité n'est pas seulement une limitation d'accès. Vous devez également prendre en compte la haute disponibilité (minimiser les temps d'arrêt), les politiques de sauvegarde et de restauration, les systèmes en double pour les tests et la production, ... C'est une question trop vague. – jap1968

Répondre

3

La sécurité est un problème complexe et il est difficile de répondre à des questions vagues.

Quelques généralisations.

S'il est judicieux de co-localiser votre base de données et votre application sur le même serveur, vous devez le faire et désactiver tous les accès à distance à la base de données. L'inconvénient est que cela limite votre capacité à évoluer en utilisant des bases de données et des serveurs d'applications séparés.

Vous devez également déterminer si vous avez besoin de réplication. Si vous le faites alors vous devez autoriser l'accès, alors que si vous pouvez vous en sortir, vous ne devriez pas.

Vous devez être rigouous avec votre nom d'utilisateur et votre mot de passe. En fait, j'utilise un générateur de mot de passe pour le nom d'utilisateur et le mot de passe pour l'accès aux applications, mais c'est à vous de décider jusqu'où vous allez.

Vous devez supposer que quelqu'un aura accès à votre base de données. Chaque "utilisateur" ne devrait avoir que les permissions requises par l'utilisateur pour faire ce travail. Moins chaque utilisateur peut faire la sécurité, plus vous serez en cas d'effraction. Vous devrez peut-être créer plusieurs utilisateurs pour que chaque partie de votre application puisse faire son travail, et seulement son travail.

Enfin, vous devriez considérer les ramifications de l'accès à votre base de données. Je suppose que les dossiers de santé exigent des niveaux de sécurité extrêmement élevés. Vous pouvez envisager une forme de cryptage/obscurcissement dans la base de données elle-même, mais je n'ai jamais eu besoin de le faire moi-même pour que je ne puisse pas commenter plus loin.

4

Juste un peu du haut de ma tête ...

  1. Utilisez un mot de passe
  2. uniquement autoriser l'accès au serveur à partir d'endroits, il est accessible à partir. par exemple. Si le serveur Web ne doit y accéder que sur la même machine, n'autorisez pas l'accès à mysql depuis l'extérieur de la machine.
  3. Donnez à chaque personne qui peut y accéder son propre nom d'utilisateur et mot de passe et limitez-les aux seules actions à effectuer. Désactivez DROP, DELETE etc. et ne donnez pas aux utilisateurs moyens la permission de changer de base de données, de créer des tables, de modifier des tables, etc.
  4. Assurez-vous de bien comprendre le système d'autorisations utilisateur utilisé dans MySQL. C'est un cauchemar au début, mais cela vous donne beaucoup de contrôle quand vous l'obtenez.
  5. Ne supposez pas qu'il est sécurisé - ce n'est pas - indépendamment de ce que vous avez fait, vous pouvez toujours faire plus. Désactiver les connexions de toutes les adresses IP à l'exception de l'adresse IP du serveur d'application.
0

Et assurez-vous que l'application fonctionnant avec DB est exempte de failles de sécurité. :)

2
  1. utiliser un mot de passe
  2. permettent que les visiteurs de certains IP
  3. fort système de mot de passe, de sorte que même piraté, personne ne l'obtient même vous

md5('your-password') n'est pas assez en sécurité, essayez quelque chose comme md5(md5('your-password').'your-password').

Questions connexes