Chiffrer les données de vos tables sous PostgreSQL
Comme vous le savez, je suis un partageux. Et, à la demande générale, je vais vous montrer comment chiffrer les données d’une colonne d’une table sous PostgreSQL à l’aide de l’extension pgcrypto, installée dans votre distribution Linux avec le paquet contrib (postgresql13-contrib sous CentOS 8).
Mise en œuvre de l’extension pgcrypto
Installez tout d’abord l’extension dans votre base de données PostgreSQL, où vous avez à chiffrer vos données :
CREATE EXTENSION pgcrypto CASCADE;
Exemple : chiffrement d’un mot de passe stocké dans une colonne de table
Je crée tout d’abord la table d’exemple dans la base :
CREATE TABLE logs.users(username varchar(100), cryptpwd varchar(1000));
J’ajoute des données en chiffrant à l’aide de la fonction encrypt utilisant l’algorithme de chiffrement aes. pwddenis et pwdolive sont les mots de passe de mes utilisateurs que je chiffre à l’aide de la clé mypwd.
INSERT INTO logs.users(username, cryptpwd) VALUES ('denis', encrypt('pwddenis', 'mypwd', 'aes')), ('olive', encrypt('pwdolive', 'mypwd', 'aes'));
Pour pouvoir lire les données de la table, je dois connaître la clé utilisée, ici mypwd :
select convert_from(decrypt(cryptpwd::bytea, 'mypwd','aes'), 'SQL_ASCII') FROM logs.users;