INSTALLERA POSTGRESQL 12.X TDE FRÅN KÄLLA
PostgreSQL 12.x TDE är en version av PostgreSQL som stöder transparent datakryptering. I många praktiska affärsfall är det nödvändigt att kryptera data på disken. PostgreSQL TDE har utformats för att göra exakt det på ett så effektivt sätt som möjligt.
Här visar vi dig hur du installerar PostgreSQL TDE från källan på Linux och Mac OS X genom att förklara följande steg:
- Nedladdning av källkoden
- Extrahera och konfigurera PostgreSQL 12 TDE
- Sammanställa koden
- Ställa in nyckelhantering
- Skapa en databasinstans / -kluster
1. LADDA NER KÄLLKODEN
För att ladda ner PostgreSQL TDE kan du gå till vår webbplats och ladda ner den senaste tarfilen. Om du föredrar att använda kommandoraden kan du också helt enkelt använda “wget” för att hämta filen. Här är ett exempel:
wget https://download.cybertec-postgresql.com/postgresql-12.3_TDE_1.0.tar.gz
2. EXTRAKT OCH KONFIGURERA POSTGRESQL 12 TDE
När du har laddat ner filen kan du enkelt packa upp den. Så här fungerar det:
tar xvfz postgresql-12.3_TDE_1.0.tar.gz
En katalog skapas som innehåller hela källkoden för PostgreSQL TDE. Ange katalogen och kör följande kommando:
För Mac OS X:
./configure --prefix=/Users/hs/pg12tde \ --with-openssl \ --with-perl \ --with-python --with-ldap \ CPPFLAGS="-I$(brew --prefix openssl)/include" \ LDFLAGS="-L$(brew --prefix openssl)/lib"
⎟ Obs! På OS X är det vettigt att installera HomeBrew för att se till att du kan installera alla beroenden först för att kompilera koden. Det är det enklaste sättet att få all programvara att sammanställa och köra PostgreSQL.
För Linux:
På Linux är det ganska enkelt att kompilera PostgreSQL. Se till att alla beroenden som beskrivs i dokumentationen uppfylls. Kör sedan:
./configure --prefix=/usr/local/pg12tde --with-openssl --with-perl \ --with-python --with-ldap
Om något går fel under konfigurationen är det mycket troligt att du har missat ett paket.
3. SAMMANSTÄLLNING AV KODEN
När ”configure” steget har utförts framgångsrikt kan du enkelt kompilera koden:
make install cd contrib make install
Om du vill använda mer än en CPU-kärna kan du lägga till -j flag för att ”make” för att kompilera kod parallellt.
Vanligtvis kompileras koden inom 1 eller 2 minuter.
PostgreSQL är nu redo, och du kan redan förbereda din serverinfrastruktur genom att justera miljövariablerna $ PATH så att du enkelt kan komma åt databasen.
4. INSTÄLLNING AV NYCKELHANTERING
Nyckelhantering är en viktig aspekt. För att kryptera en databasinstans måste en nyckel till detta komma någonstans. När det gäller PostgreSQL TDE kommer nyckeln från ett flexibelt externt program. Helst kommer nyckeln INTE från det lokala filsystemet utan från en säker fjärrnyckellager.
Innan du skapar din databasinstans måste du skriva en kod för att se till att nyckeln kan läsas av databasen under start och instansskapande.
Här är det enklaste möjliga exemplet:
% cat /somewhere/provide_key.sh
#!/bin/sh
echo 882fb7c12e80280fd664c69d2d636913
Allt du behöver är ett program som skriver ut nyckeln till stdout – och det är det! Se till att PostgreSQL kan köra programmet:
% chmod +x /somewhere/provide_key.sh
⎟ Obs! Du behöver inte skriva ett skalskript – du kan använda någon typ av körbar som C, Go eller Python.
5. SKAPA EN DATABASINSTANS / KLUSTER
När den önskade nyckelhanteringen är på plats kan vi börja skapa databasinstansen. Skönheten är att allt som krävs är en enda rad och PostgreSQL kommer att göra all magi för dig:
% initdb -D /some_path/db12tde -K /somewhere/provide_key.sh The files belonging to this database system will be owned by user "hs". This user must also own the server process. The database cluster will be initialized with locale "C". The default database encoding has accordingly been set to "SQL_ASCII". The default text search configuration will be set to "english". Data page checksums are disabled. Data encryption is enabled. creating directory /some_path/db12tde ... ok creating subdirectories ... ok selecting dynamic shared memory implementation ... posix selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting default time zone ... Europe/Berlin creating configuration files ... ok running bootstrap script ... ok performing post-bootstrap initialization ... ok syncing data to disk ... ok initdb: warning: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. Success. You can now start the database server using: pg_ctl -D /some_path/db12tde -l logfile start
Skillnaden mellan PostgreSQL och PostgreSQL TDE är att det finns ett valfritt -K-alternativ. Annars är det ingen skillnad. Om du skickar namnet på din nyckelhanterings körbar till initdb kommer allt magi att hända automatiskt. Det finns inget mer att göra och du kan normalt starta databasen:
% pg_ctl -D /some_path/db12tde start 2020-01-29 11:54:19.131 CET [42193] LOG: starting PostgreSQL 12.3_TDE_1.0 on x86_64-apple-darwin19.2.0, compiled by Apple clang version 11.0.0 (clang-1100.0.33.17), 64-bit 2020-01-29 11:54:19.132 CET [42193] LOG: listening on IPv6 address "::1", port 5432 2020-01-29 11:54:19.132 CET [42193] LOG: listening on IPv4 address "127.0.0.1", port 5432 2020-01-29 11:54:19.133 CET [42193] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" waiting for server to start.… 2020-01-29 11:54:19.151 CET [42197] LOG: database system was shut down at 2020-01-29 11:54:05 CET 2020-01-29 11:54:19.154 CET [42193] LOG: database system is ready to accept connections done server started
Det finns inget behov av ytterligare parametrar. Allt har kopplats till dig i bakgrunden redan.
Du kan ladda ner installationsguiden ”INSTALLING POSTGRESQL 12.X TDE FROM SOURCE” här:
Ladda ner installationsguiden för TDE >>Rapportera eventuella fel direkt till bugs-tde@cybertec.at!
Rapportera fel >>KRYPTERING BAKOM SCENERNA
Anledningen till att du inte behöver ytterligare parametrar är att initdb redan har lagt till konfigurationen i postgresql.conf åt dig:
% grep encryption_key postgresql.conf encryption_key_command = '/somewhere/provide_key.sh'
postgresql.conf har redan informationen för att hämta nyckeln vid start. Fördelen är att du inte behöver anpassa befintliga skript. Den enda ändringen du måste göra är att lägga till ytterligare en parameter till initdb. Et voilá – du är klar.
ÄR MIN DATABASSERVER KRYPTAD?
Den mest uppenbara och vanligaste frågan vid denna tidpunkt är: ”Är det verkligen allt? Hur kan jag räkna ut att min server verkligen är krypterad?” För att göra det kan du använda pg_controldata, som är ett program som extraherar användbar information från din databasserver. Tänk på att pg_controldata INGENTING har att göra med TDE – det finns det ändå.
När det gäller PostgreSQL TDE producerar pg_controldata lite mer information än vanligt:
% pg_controldata /some_where/ | grep -i encryp Data encryption: on Data encryption fingerprint: 740A905130FE614CE0BE36B612157A09
Som du kan se är kryptering på och dina data är säkra.
Men om du inte har tillgång till maskinen via SSH finns det ett andra sätt att se om data är krypterade:
test=# SHOW data_encryption; data_encryption ---------------- on (1 row)
PostgreSQL TDE erbjuder en ytterligare variabel. data_encryption på / av kommer också att berätta om databasen har krypterats eller inte.
MER INFORMATION
Om du vill lära dig mer rekommenderar vi att du besöker vår webbplats regelbundet och följer oss på Twitter (@PostgresSupport). Vi kommer att hålla dig uppdaterad om den senaste utvecklingen. Tänk också på att CYBERTEC tillhandahåller kommersiellt 24×7 support för PostgreSQL TDE.
Om du har några frågor är du välkommen att kontakta oss!