Sådan krypteres en database i hvile i PostgreSQL på Ubuntu 22.04

Sådan krypteres en database i hvile i PostgreSQL på Ubuntu 22.04

Kryptering af databaser i hvile er en afgørende sikkerhedsforanstaltning for at beskytte følsomme data mod uautoriseret adgang. PostgreSQL, et populært open source-databasehåndteringssystem (DBMS), giver mulighed for at kryptere data i hvile ved hjælp af forskellige metoder. I denne omfattende vejledning vil vi guide dig gennem trinene til at kryptere en PostgreSQL-database i hvile på Ubuntu 22.04.

Introduktion

Data kryptering i hvile indebærer at konvertere læsbare data til en ulæselig form ved hjælp af kryptografiske algoritmer. Dette sikrer, at selvom dataene kompromitteres på grund af et sikkerhedsbrud, forbliver de utilgængelige for angribere uden dekrypteringsnøglerne.

Kryptering af databaser i hvile giver flere fordele, herunder:

* Beskyttelse af følsomme data: Kryptering sikrer, at kun autoriserede brugere har adgang til følsomme data i databasen.
* Overholdelse af lovgivningsmæssige krav: Mange brancher har lovgivningsmæssige krav, der kræver kryptering af følsomme data.
* Reduceret risiko for sikkerhedsbrud: Kryptering minimerer risikoen for dataindbrud og tab af data ved at gøre dataene ubrugelige for uautoriserede personer.

Forudsætninger

Før du fortsætter, skal du sikre, at du har følgende:

* Et Ubuntu 22.04-system
* En installeret PostgreSQL-database
* Superbrugeradgang til PostgreSQL

Trin-for-trin guide

1. Opret et krypteret filsystem

Opret et krypteret filsystem, hvor PostgreSQL-dataene skal gemmes:


sudo cryptsetup --type luks1 --hash sha256 --key-size 256 -c aes-xts-plain64 --iter-time 5000 --use-random -s 512 -v --cipher aes-256-xts /dev/sdb1 luks_sdb1

2. Åbn det krypterede filsystem

Åbn det krypterede filsystem:


sudo cryptsetup open --type luks1 luks_sdb1 crypt_sdb1

3. Opret et datavolumen

Opret et datavolumen i det krypterede filsystem:


sudo lvcreate --extents 100%FREE --name postgres_data /dev/mapper/crypt_sdb1

4. Formater datavolumenet med ext4

Formater datavolumenet med ext4-filsystemet:


sudo mkfs.ext4 /dev/mapper/postgres_data

5. Montér datavolumenet

Montér datavolumenet i det ønskede monteringspunkt, f.eks. /mnt/postgres-data:


sudo mkdir /mnt/postgres-data
sudo mount /dev/mapper/postgres_data /mnt/postgres-data

6. Tilpas PostgreSQL-konfigurationsfilen

Rediger PostgreSQL-konfigurationsfilen (postgresql.conf):


sudo nano /etc/postgresql/14/main/postgresql.conf

Føj følgende linjer til filen:


data_directory = '/mnt/postgres-data'

Gem og luk filen.

7. Genstart PostgreSQL

Genstart PostgreSQL for at anvende ændringerne:


sudo systemctl restart postgresql

Konfiguration af databasekryptering

1. Aktivér kryptering for nye databases

Rediger filen pg_hba.conf for at aktivere kryptering for alle nye databaseoprettelser:


sudo nano /etc/postgresql/14/main/pg_hba.conf

Føj følgende linje til filen:


local all all trust

Gem og luk filen.

2. Opret en krypteret database

Opret en ny krypteret database ved hjælp af kommandoen createdb:


sudo -u postgres createdb --encryption=on database_name

Test af kryptering

1. Kontroller databasens krypteringstilstand

Kontroller databasens krypteringstilstand ved hjælp af kommandoen pg_controldata:


sudo -u postgres pg_controldata /mnt/postgres-data/database_name

Du skal se følgende linje i resultatet:


encryption = on

2. Forsøg at få adgang til databasen uden dekrypteringsnøglen

Forsøg at oprette forbindelse til databasen uden dekrypteringsnøglen:


sudo -u postgres psql -d database_name

Du skal få en fejlmeddelelse, der angiver, at databasen er krypteret.

Konklusion

Kryptering af databaser i hvile er en afgørende foranstaltning for at beskytte følsomme data mod uautoriseret adgang. Denne vejledning gav dig et trin-for-trin guide til, hvordan du krypterer en PostgreSQL-database i hvile på Ubuntu 22.04 ved hjælp af et krypteret filsystem. Ved at implementere de beskrevne trin kan du forbedre sikkerheden af dine data og sikre overholdelse af lovgivningsmæssige krav.

Ofte stillede spørgsmål

1. Hvad er fordelene ved at kryptere en database i hvile?

Fordelene omfatter beskyttelse af følsomme data, overholdelse af lovgivningsmæssige krav og reduktion af risikoen for sikkerhedsbrud.

2. Hvilke krypteringsalgoritmer understøtter PostgreSQL?

PostgreSQL understøtter forskellige krypteringsalgoritmer, herunder AES, 3DES og Twofish.

3. Hvordan slår jeg kryptering fra for en eksisterende database?

Du kan slå kryptering fra ved at slette krypteringsnøglen fra tabellen pg_db_encryption:


DELETE FROM pg_db_encryption WHERE dbid = 'database_id';

4. Hvordan nulstiller jeg dekrypteringsnøglen for en krypteret database?

Du kan nulstille dekrypteringsnøglen ved at bruge kommandoen ALTER DATABASE:


ALTER DATABASE database_name SET DECRYPTION KEY = 'new_key';

5. Er det muligt at kryptere en database uden at kryptere filsystemet?

Du kan kryptere en database uden at kryptere filsystemet ved at bruge tabelkryptering. Denne metode giver dig mulighed for at kryptere individuelle kolonner eller hele tabeller.

6. Hvordan administrerer jeg dekrypteringsnøgler for krypterede databaser?

Du kan administrere dekrypteringsnøgler ved hjælp af PostgreSQL-værktøjet pgcrypto. Dette værktøj giver dig mulighed for at oprette, rotere og gemme dekrypteringsnøgler sikkert.

7. Hvad er forskellen mellem databasens krypteringstilstand “on” og “required”?

Tilstanden “on” tillader adgang til databasen uden dekrypteringsnøglen, mens tilstanden “required” kræver dekrypteringsnøglen for at få adgang til databasen.

8. Hvilke andre overvejelser er der, når man krypterer en database i hvile?

Andre overvejelser omfatter ydeevnepåvirkning, nøgleadministration og procedurer for nødudvindelse. Det er vigtigt at nøje overveje disse aspekter, når man implementerer kryptering i hvile.