El almacenamiento secreto es un problema común cuando se usan mecanismos criptográficos.
pgcrypto no proporciona almacenamiento de claves, puede almacenar la clave donde desee y protegerla como pueda.
Almacenar la clave en otra base de datos, si la administra el mismo DBA, no brinda mucha seguridad, ya que el DBA puede acceder a ella de la misma manera.
Idealmente, almacenaría la clave en una bóveda segura y la solicitaría desde su aplicación para construir las consultas. Todavía será visible desde DBA mientras la solicitud se ejecuta a través de select * from pg_stat_activity
.
Puede configurar la clave para un uso amplio de la sesión SQL a través de set session my.vars.cryptokey = 'secret';
luego utilícelo en sus consultas con la siguiente sintaxis:current_setting('my.vars.cryptokey')::text
Para ser (casi) transparente desde el punto de vista de la aplicación, las reglas de PostgreSQL pueden ayudar a traducir secure_column
a la llamada para descifrar la función con la clave almacenada en la sesión. Para insertar, se requeriría un activador de inserción previa.