Geheime opslag is een veelvoorkomend probleem bij het gebruik van crypto-mechanismen.
pgcrypto biedt geen sleutelopslag, u bent vrij om de sleutel op te slaan waar u wilt en deze zo goed mogelijk te beschermen.
Het opslaan van de sleutel in een andere database, indien beheerd door dezelfde DBA, biedt niet veel beveiliging omdat DBA er op dezelfde manier toegang toe heeft.
In het ideale geval zou u de sleutel in een beveiligde kluis opslaan en deze opvragen bij uw toepassing om de query's te maken. Het zal nog steeds zichtbaar zijn vanuit DBA terwijl het verzoek wordt uitgevoerd door select * from pg_stat_activity
.
U kunt de sleutel voor een algemeen gebruik van SQL-sessies instellen via set session my.vars.cryptokey = 'secret';
gebruik het vervolgens in uw zoekopdrachten met de volgende syntaxis:current_setting('my.vars.cryptokey')::text
Om (bijna) transparant te zijn vanuit het oogpunt van de toepassing, kunnen PostgreSQL-regels helpen bij het vertalen van secure_column
aan de oproep om de functie te decoderen met de in de sessie opgeslagen sleutel. Voor het invoegen is een pre-insert-trigger vereist.