温馨提示×

centos pgadmin如何加密

小樊
39
2026-10-03 05:45:30
栏目: 网络安全

在 CentOS 上,“pgAdmin 如何加密”通常指下面几种情况之一。我先按常见需求分别说明,你可以对照自己的场景:


一、pgAdmin 4 Web 登录密码加密(用户账号)

pgAdmin 4 自身不会明文存储密码,它使用 PBKDF2 + SHA256 对登录账号密码进行哈希加密,存放在其内部 SQLite 数据库中。

默认行为(无需额外配置)

  • 安装 pgAdmin 4 后,首次创建的用户密码会自动加密存储
  • 数据库文件通常在:
/var/lib/pgadmin4/pgadmin4.db

检查加密方式

python3
>>> from pgadmin.utils import crypto
>>> # pgAdmin 内部已集成加密模块

✅ 你只需要保证:

  • 使用强密码
  • 不共享 pgadmin4.db
  • 限制该文件权限:
chmod 600 /var/lib/pgadmin4/pgadmin4.db
chown pgadmin:pgadmin /var/lib/pgadmin4/pgadmin4.db

二、数据库连接密码加密(pgAdmin 保存的 PostgreSQL 密码)

pgAdmin 4 对 数据库密码 使用 对称加密(AES),密钥来自:

/var/lib/pgadmin4/config_local.py

加密配置示例

编辑:

vim /var/lib/pgadmin4/config_local.py

添加:

import os
from cryptography.fernet import Fernet

KEY = Fernet.generate_key()
ENCRYPTED_PASSWORD_KEY = KEY.decode()

或直接使用:

ENCRYPTED_PASSWORD_KEY = '你的Fernet密钥'

重启 pgAdmin:

systemctl restart httpd
# 或
systemctl restart pgadmin4

✅ 这样 pgAdmin 中保存的数据库密码就是加密存储的。


三、pgAdmin Web 访问使用 HTTPS(传输加密)

强烈建议,否则密码是明文 HTTP 传输。

1. 安装 Nginx(反向代理 + SSL)

yum install nginx mod_ssl -y

2. Nginx 配置 HTTPS

server {
    listen 443 ssl;
    server_name pgadmin.example.com;

    ssl_certificate     /etc/ssl/pgadmin.crt;
    ssl_certificate_key /etc/ssl/pgadmin.key;

    location / {
        proxy_pass http://127.0.0.1:5050;
        proxy_set_header Host $host;
    }
}

3. 重启

systemctl restart nginx

四、CentOS 系统级加固(可选)

# 防火墙
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload

# 禁用 HTTP
systemctl stop httpd

五、总结(推荐做法)

✅ 必须做:

  1. pgAdmin 使用 HTTPS
  2. 数据库密码加密(ENCRYPTED_PASSWORD_KEY)
  3. pgadmin4.db 权限 600

✅ 可选:

  • 使用 LDAP / OAuth 登录
  • 限制 IP 访问
  • 定期备份 pgadmin4.db

如果你能具体说明:

  • pgAdmin 版本(3 / 4)
  • 安装方式(rpm / pip / docker)
  • 想加密的是「登录密码 / 数据库密码 / 网络传输」

我可以给你更精确的步骤。

0 踩