En aquest tema, explorarem com PostgreSQL maneja l'encriptació de dades per assegurar la confidencialitat i la integritat de la informació emmagatzemada. L'encriptació és una tècnica essencial per protegir les dades sensibles contra accessos no autoritzats.
Conceptes Clau
- Encriptació en repòs: Protegeix les dades emmagatzemades en discos durs o altres dispositius d'emmagatzematge.
- Encriptació en trànsit: Protegeix les dades mentre es transmeten entre el client i el servidor.
- Claus de xifrat: Utilitzades per encriptar i desencriptar dades.
- Certificats SSL/TLS: Utilitzats per assegurar les connexions de xarxa.
Encriptació en repòs
PostgreSQL no proporciona encriptació en repòs de manera nativa, però es pot aconseguir utilitzant eines externes com LUKS (Linux Unified Key Setup) o altres solucions de xifrat de disc.
Exemple amb LUKS
-
Instal·lació de LUKS:
sudo apt-get install cryptsetup
-
Configuració del disc:
sudo cryptsetup luksFormat /dev/sdX sudo cryptsetup luksOpen /dev/sdX encrypted_disk sudo mkfs.ext4 /dev/mapper/encrypted_disk sudo mount /dev/mapper/encrypted_disk /mnt/encrypted
-
Migració de dades:
sudo systemctl stop postgresql sudo rsync -av /var/lib/postgresql /mnt/encrypted sudo umount /var/lib/postgresql sudo mount /dev/mapper/encrypted_disk /var/lib/postgresql sudo systemctl start postgresql
Encriptació en trànsit
PostgreSQL suporta SSL/TLS per encriptar les connexions entre el client i el servidor.
Configuració de SSL/TLS
-
Generació de certificats:
openssl req -new -text -out server.req openssl rsa -in privkey.pem -out server.key openssl req -x509 -in server.req -text -key server.key -out server.crt
-
Configuració del servidor: Edita el fitxer
postgresql.conf
:ssl = on ssl_cert_file = 'server.crt' ssl_key_file = 'server.key'
-
Configuració del client: Edita el fitxer
pg_hba.conf
:hostssl all all 0.0.0.0/0 md5
-
Reinici del servidor:
sudo systemctl restart postgresql
Claus de xifrat
Les claus de xifrat són essencials per a l'encriptació i desencriptació de dades. És important gestionar-les de manera segura.
Exemple d'ús de claus
-
Generació de claus:
CREATE EXTENSION pgcrypto;
-
Encriptació de dades:
INSERT INTO users (username, password) VALUES ('user1', crypt('password', gen_salt('bf')));
-
Desencriptació de dades:
SELECT username FROM users WHERE password = crypt('password', password);
Resum
En aquest tema, hem après sobre les diferents tècniques d'encriptació que es poden utilitzar amb PostgreSQL per protegir les dades tant en repòs com en trànsit. Hem vist com configurar l'encriptació de disc amb LUKS, com habilitar SSL/TLS per a les connexions de xarxa i com utilitzar claus de xifrat per encriptar i desencriptar dades dins de la base de dades.
En el següent tema, explorarem com fer còpies de seguretat i restaurar les dades en PostgreSQL per assegurar la continuïtat del servei i la protecció contra pèrdues de dades.
Curs de PostgreSQL
Mòdul 1: Introducció a PostgreSQL
Mòdul 2: Operacions bàsiques de SQL
Mòdul 3: Consultes SQL avançades
Mòdul 4: Disseny de bases de dades i normalització
Mòdul 5: Funcionalitats avançades de PostgreSQL
Mòdul 6: Optimització i millora del rendiment
- Optimització de consultes
- Estratègies d'indexació
- Analitzant el rendiment de les consultes
- Vacuuming i manteniment
Mòdul 7: Seguretat i gestió d'usuaris
- Rols d'usuari i permisos
- Mètodes d'autenticació
- Encriptació de dades
- Còpia de seguretat i restauració
Mòdul 8: Treballant amb JSON i funcionalitats NoSQL
Mòdul 9: Extensions i eines avançades
- PostGIS per a dades geoespacials
- Cerca de text complet
- Wrappers de dades externes
- PL/pgSQL i altres llenguatges procedimentals