Chiffrer les données de vos tables sous PostgreSQL

Chiffrer les données de vos tables sous PostgreSQLComme 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;

Base de données  / Chiffrement