Le stockage des données chiffrées dans Postgres
J'ai une exigence pour stocker des données sous une forme cryptée dans Postgres. Évidemment, j'ai besoin de les chiffrer, les stocker, et être en mesure de lire et de décrypter. Quelle est la meilleure façon de le faire?
- Votre question est trop vaste. Vous pouvez crypter/décrypter l'extérieur de postgres, ou utiliser le pgcrypto module de chiffrement dans le serveur. Dans les deux cas, vous pourriez vouloir utiliser bytea des colonnes ou des objets volumineux pour le stockage.
- Je pense que le pgcrypto module est probablement ce que je veux.
- Une trop grande question.
Vous devez vous connecter pour publier un commentaire.
La meilleur est de faire de la crypto sur le client ou le serveur d'application, de sorte que la base de données n'a aucune idée de ce que les touches sont et ne peut pas déchiffrer les données. Si le client /appserver sont sur un hôte différent, tout le meilleur.
Si votre base de données est de crypter et décrypter les données pour vous, alors il est vulnérable à avoir les clefs de vol avec la base de données.
Si vous utilisez pgcrypto dans la base de données crypto fonctions, vous pouvez avoir à l'application d'envoyer la clé avec les données, ce qui est au moins un peu utile. - Il encore des risques d'avoir les clés exposés dans les journaux, si utile sysadmin tourne sur déclaration agressive de journalisation automatique ou plan de dumping, même si, et dans la fin, si les touches sont d'aller à la base de données de la machine, ils sont plus vulnérables que s'ils ne le sont pas. Un attaquant qui prend le contrôle de la base de données de la machine peut également modifier les paramètres du journal, remplacer les binaires de postgresql, ou renifler le trafic de capturer des clés et des données de cette façon.
Si le serveur d'applications et db sont sur la même machine et gérés par le même rôle(s) il y a moins de point se soucier de les isoler, et il peut être judicieux d'utiliser pgcrypto.
De toute façon, n'oubliez pas de sel!