在Linux环境下,通过pgAdmin处理数据加密与解密,本质上是在PostgreSQL数据库层面借助pgcrypto扩展来实现的。下面就直接进入正题,看看具体怎么做。
安装pgcrypto扩展
第一步,得先把pgcrypto扩展装到PostgreSQL里。执行这条SQL命令就搞定:
CREATE EXTENSION IF NOT EXISTS pgcrypto;
数据加密
加密操作靠的是encrypt函数。举个例子,要对文本数据加密:
SELECT encrypt('敏感数据', '加密密钥');
这里的'敏感数据'就是你要保护的内容,'加密密钥'自然是对应的密钥。
数据解密
解密则用decrypt函数,把之前加密后的数据原样传进去:
SELECT decrypt(加密后的数据, '加密密钥');
注意,密钥必须和加密时使用的一致,否则什么都解不出来。
配置PgAdmin使用SSL加密连接
光有数据库层的加密还不够,数据在传输过程中也得防一手。这时候就需要给PgAdmin配上SSL连接。步骤如下:
- 首先生成SSL证书和密钥。用OpenSSL一把梭:
sudo openssl req -new -x509 -days 365 -nodes -out /etc/postgresql/12/main/server.crt -keyout /etc/postgresql/12/main/server.key -subj "/CN=localhost"
- 然后修改PostgreSQL的两个配置文件——
postgresql.conf和pg_hba.conf,把SSL开起来:
# 在postgresql.conf中
ssl = on
ssl_cert_file = '/etc/postgresql/12/main/server.crt'
ssl_key_file = '/etc/postgresql/12/main/server.key'
# 在pg_hba.conf中
hostssl all all 0.0.0.0/0 md5
- 配置改完后,重启PostgreSQL让设置生效:
sudo systemctl restart postgresql
- 最后在PgAdmin 4里配置连接。打开“连接”选项卡,把“SSL”设为连接方法,再选“require”——强制要求SSL连接,这样传输过程才算上了锁。
当然,不同版本的pgAdmin和PostgreSQL在细节上可能有出入,真要动手前最好翻翻官方文档,或者找个懂行的人确认一下,别因为版本差异踩了坑。
