PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL:criptografar coluna com pgcrypto


O armazenamento secreto é um problema comum ao usar mecanismos de criptografia.

O pgcrypto não fornece armazenamento de chave, você é livre para armazenar a chave onde quiser e protegê-la como puder.

Armazenar a chave em outro banco de dados, se gerenciada pelo mesmo DBA, não oferece muita segurança, pois o DBA pode acessá-la da mesma maneira.

Idealmente, você armazenaria a chave em um cofre seguro e a solicitaria de seu aplicativo para construir as consultas. Ele ainda estará visível do DBA enquanto a solicitação estiver sendo executada através de select * from pg_stat_activity .

Você pode definir a chave para uso em toda a sessão SQL através de set session my.vars.cryptokey = 'secret'; em seguida, use-o em suas consultas com a seguinte sintaxe:current_setting('my.vars.cryptokey')::text

Para ser (quase) transparente do ponto de vista da aplicação, as regras do PostgreSQL podem ajudar na tradução de secure_column para a chamada para descriptografar a função com a chave armazenada na sessão. Para inserir, seria necessário um gatilho de pré-inserção.