Hemmelig opbevaring er et almindeligt problem, når du bruger kryptomekanismer.
pgcrypto sørger ikke for nøgleopbevaring, du kan frit gemme nøglen, hvor du vil, og beskytte den, som du kan.
Lagring af nøglen i en anden database, hvis den administreres af samme DBA, giver ikke meget sikkerhed, da DBA kan få adgang til den på samme måde.
Ideelt set ville du gemme nøglen i en sikker boks og anmode om den fra din applikation for at konstruere forespørgslerne. Den vil stadig være synlig fra DBA, mens anmodningen kører gennem select * from pg_stat_activity
.
Du kan indstille nøglen til en SQL-session bred brug gennem set session my.vars.cryptokey = 'secret';
brug det derefter i dine forespørgsler med følgende syntaks:current_setting('my.vars.cryptokey')::text
For at være (næsten) gennemsigtig fra applikationssynspunktet, kan PostgreSQL-regler hjælpe med at oversætte secure_column
til funktionen opkald til dekryptering med den gemte sessionsnøgle. For at indsætte kræves en trigger før indsættelse.