Artikel

Open source database-encryptie

Posgres beveiligen met Transparent Data Encryption (TDE)

Security is altijd een grote zorg voor organisaties, maar in het bijzonder voor databases. Daar wordt immers vaak cruciale bedrijfsinformatie in wordt opgeslagen. Het is daarom noodzakelijk om er robuuste security omheen te bouwen. De open source Postgres-database biedt daar geen standaard middel voor, maar zijn wel degelijk goede oplossingen voor robuuste database-encryptie.

Als je zeer gevoelige informatie beheert, dan is het normaal om deze informatie versleuteld op te slaan, zodat het onleesbaar is voor iemand die ongeautoriseerd toegang krijgt.

Voor het beheren van gevoelige informatie gebruiken organisaties meerdere methodes:

  1. Specifieke informatie versleutelen.

Als er PPA's (Personal Package Archives) worden gebruikt, dan zou je bij voorkeur een DBMS_CRYPTO package gebruiken, dat een methode biedt om gevoelige informatie in databases te versleutelen. Meer informatie hierover is te vinden via deze link.

Voor PostgreSQL kunnen gebruikers ook de pgcrypto-module gebruiken.

  1. Transparent Data Encryption (TDE) is een andere methode die zowel door Microsoft als Oracle wordt gebruikt om database-bestanden te versleutelen. TDE biedt encryptie op bestandsniveau. Deze methode lost het probleem op van het beschermen van opgeslagen data, ofwel het versleutelen van databases op zowel de harddisk als op backup-media. Organisaties gebruiken normaliter TDE om compliance-zaken in te vullen, zoals PCI DSS.

Postgres Plus heeft momenteel geen ingebouwde TDE-functionaliteit. Als organisaties echter toch database-encryptie op bestandsniveau willen toepassen, dan kunnen zij een van de volgende methoden gebruiken om opgeslagen data te beschermen:

  1. Full Disk Encryption:

Encryptie van de volledige disk of partitie is een van de beste manieren om je data te beschermen. Deze methode beschermt niet alleen elk bestand, het zorgt ook dat de tijdelijke opslag waarin delen ervan zijn opgeslagen, beschermd worden. Full disk encryption beschermt al je bestanden. Daardoor hoef je je geen zorgen te maken over wat je precies wilt beschermen, en loop je geen risico dat je mogelijk een bestand over het hoofd ziet.

RHEL (Red Hat) ondersteunt hiervoor Linux Unified Key Setup-on-disk-format (of LUKS). LUKS versleutelt harddisk-partities.

Voor meer informatie over LUKS, zie de volgende link.

  1. File system-level encryption:

Encryptie op filesystem-niveau wordt ook wel file/directory-encryptie genoemd. Met deze methode worden individuele bestanden of directory's versleuteld door het bestandssysteem zelf.

Er bestaat ook stackable cryptografische file system-encryptie, die gebruikers in hun omgeving kunnen inzetten.

File System Encryption heeft de volgende voordelen:

  1. Flexibel en bestandsgebaseerd key management, waardoor elk bestand met een aparte encryptie-key versleuteld kan worden.
  1. Individueel beheer van versleutelde bestanden, bijvoorbeeld: Incrementele backups van de individuele gewijzigde bestanden, zelfs in versleutelde vorm, in plaats van een backup van het gehele versleutelde encrypted volume.
  1. Access control kan afgedwongen worden door het gebruik van public-key cryptografie, en het  het feit dat cryptografische sleutels alleen in het geheugen gehouden worden als het bestand dat ermee is versteuteld, geopend is.

Stackable cryptographic file system encryption kan voor Postgres gebruikt worden om Transparent Data Encryption te implementeren.

In dit blog zal ik het gebruik van 'mount ecrpytfs' uitleggen, omdat het tot minder overhead leidt in de setup. De reden hiervoor is dat LUKS vereist dat er een nieuwe disk wordt geconfigureerd en geformatteerd, voordat er data opgeslagen kan worden. 'Mount ecrpytfs” werkt met bestaande directory's en data.

Als organisaties hun DBA's in staat willen stellen om TDE te beheren, kunnen zij met use/define enkele sudo-rules aanmaken waarmee DBA's zelf commando's voor encryptie kunnen uitvoeren.

De volgende methode kan hiervoor gebruikt worden:

  • Vraag een systeembeheerder om sudo-rules te maken waarmee een DBA encryptie voor data-directory's for Postgres Plus kan uitvoeren. Een gangbare manier om dit te doen is door het commando 'mount ecryptfs' te gebruiken op Linux besturingssystemen.
  • Als een gebruiker de directory /ppas94/data wil versleutelen, kan het volgende commando gebruikt worden:


sudo mount -t ecryptfs /ppas94/data /ppas94/data

       

Meer informatie is beschikbaar in de documentatie van RHEL:

De gebruiker kan met dit commando ook het encryption key type specificeren (passphrase, openssl), cipher (aes, des3_ede) key byte size, en andere opties.

Een voorbeeld:

# mount -t ecryptfs /home /home -o ecryptfs_unlink_sigs \

 

 ecryptfs_key_bytes=16 ecryptfs_cipher=aes ecryptfs_sig=c7fed37c0a341e19

<strong>

Centos 7 en RHEL 7 worden standaard niet geïnstalleerd met ecrpytfs, maar gebruikers kunnen ook het encfs-commando gebruiken.

Voor meer informatie over encfs is de vinden via de volgende link.

Met de volgende stappen kan encfs gebruikt worden om data-directory te versleutelen.

  1. Maak als database-user een data directory aan met het volgende commando:

   mkdir /var/lib/ppas/9.4/encrypted_data

   chmod 700 /var/lib/ppas/9.4/encrypted_data

  1. Gebruik het volgende encfs-commando om de data-directory te versleutelen.

         encfs /var/lib/ppas-9.4/encrypted_data/ /var/lib/ppas-9.4/data

Een snapshot van het bovenstaande commando is hieronder te zien:

encfs /var/lib/ppas/9.4/encrypted_data /var/lib/ppas/9.4/data

 

The directory "/var/lib/ppas/9.4/data" does not exist. Should it be created? (y,n) y

 

Creating new encrypted volume.

 

Please choose from one of the following options:

 

 enter "x" for expert configuration mode,

 

 enter "p" for pre-configured paranoia mode,

 

 anything else, or an empty line will select standard mode.

 

?> p

 

 Paranoia configuration selected.

  

Configuration finished.  The filesystem to be created has

 

the following properties:

 

Filesystem cipher: "ssl/aes", version 3:0:2

 

Filename encoding: "nameio/block", version 3:0:1

 

Key Size: 256 bits

 

Block Size: 1024 bytes, including 8 byte MAC header

 

Each file contains 8 byte header with unique IV data.

 

Filenames encoded using IV chaining mode.

 

File data IV is chained to filename IV.

 

File holes passed through to ciphertext.

  

-------------------------- WARNING --------------------------

 

The external initialization-vector chaining option has been

 

enabled.  This option disables the use of hard links on the

 

filesystem. Without hard links, some programs may not work.

 

The programs 'mutt' and 'procmail' are known to fail.  For

 

more information, please see the encfs mailing list.

 

If you would like to choose another configuration setting,

 

please press CTRL-C now to abort and start over.

 

 

Now you will need to enter a password for your filesystem.

 

You will need to remember this password, as there is absolutely

 

no recovery mechanism.  However, the password can be changed

 

later using encfsctl.

 

   

New Encfs Password:

 

Verify Encfs Password:

 

  1. Nadat de data-directory is versleuteld, moeten gebruikers ook het postgresql-<version> service script aanpassen, zodat er een geschikt password-commando in staat. Daarvoor kan sshpass gebruik worden. Ook is het is mogelijk om een eigen programma te schrijven dat het wachtwoord kan verwerken om een directory te mounten.


Zoals je ziet is het implementeren van Transparent Data Encryption Postgres eigenlijk vrij eenvoudig.


Auteur: Vibhor Kumar, Principal System Engineer EnterpriseDB

 

 

 

Categorie:   
Auteur(s)
afbeelding van JeannotBos
Jeannot Bos
EnterpriseDB - Sales Director Europe

Jeannot is een inspirende leider met een succesvolle track-record. Hij is resultaatgericht en kan een sterke bijdrage leveren aan het groeien van de business van sofware en SaaS-bedrijven. Dit doet hij door relaties met potentiële klanten te bouwen op basis van wederzijds vertrouwen.

Nieuwe reactie inzenden

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.
Indien het niet lukt om een reactie te plaatsen, stuur dan uw reactie naar redactie@xr-magazine.nl.
Alle inzendingen dienen correct, professioneel en beschaafd te zijn. IP-adressen worden gelogd, maar niet gepubliceerd. De redactie van XR Magazine behoudt zich het recht voor om anonieme reacties (niet op naam) of zonder geldig e-mailadres, te verwijderen zonder kennisgeving. Ook reacties waarin commerciële uitingen worden gedaan en/of commerciële producten en diensten worden aangeboden worden door de redactie verwijderd of ontdaan van commerciële uitingen zonder kennisgeving.