Тайното съхранение е често срещан проблем при използване на крипто механизми.
pgcrypto не осигурява съхранение на ключове, вие сте свободни да съхранявате ключа където пожелаете и да го защитите, доколкото можете.
Съхраняването на ключа в друга база данни, ако се управлява от същия DBA, не осигурява много сигурност, тъй като DBA може да има достъп до нея по същия начин.
В идеалния случай бихте съхранили ключа в защитено хранилище и бихте го поискали от вашето приложение, за да конструирате заявките. Той все още ще бъде видим от DBA, докато заявката се изпълнява чрез select * from pg_stat_activity
.
Можете да зададете ключа за широко използване на SQL сесия чрез set session my.vars.cryptokey = 'secret';
след това го използвайте в заявките си със следния синтаксис:current_setting('my.vars.cryptokey')::text
За да бъдат (почти) прозрачни от гледна точка на приложението, правилата на PostgreSQL могат да помогнат за превода на secure_column
към извикването на функцията за дешифриране със съхранения ключ на сесията. За вмъкване ще е необходим тригер за предварително вмъкване.