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

  1. Encriptació en repòs: Protegeix les dades emmagatzemades en discos durs o altres dispositius d'emmagatzematge.
  2. Encriptació en trànsit: Protegeix les dades mentre es transmeten entre el client i el servidor.
  3. Claus de xifrat: Utilitzades per encriptar i desencriptar dades.
  4. 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

  1. Instal·lació de LUKS:

    sudo apt-get install cryptsetup
    
  2. 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
    
  3. 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

  1. 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
    
  2. Configuració del servidor: Edita el fitxer postgresql.conf:

    ssl = on
    ssl_cert_file = 'server.crt'
    ssl_key_file = 'server.key'
    
  3. Configuració del client: Edita el fitxer pg_hba.conf:

    hostssl all all 0.0.0.0/0 md5
    
  4. 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

  1. Generació de claus:

    CREATE EXTENSION pgcrypto;
    
  2. Encriptació de dades:

    INSERT INTO users (username, password) VALUES ('user1', crypt('password', gen_salt('bf')));
    
  3. 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

Mòdul 7: Seguretat i gestió d'usuaris

Mòdul 8: Treballant amb JSON i funcionalitats NoSQL

Mòdul 9: Extensions i eines avançades

Mòdul 10: Estudis de cas i aplicacions del món real

© Copyright 2024. Tots els drets reservats