首页主机资讯centos pgadmin权限设置技巧

centos pgadmin权限设置技巧

时间2025-11-14 11:55:04发布访客分类主机资讯浏览1226
导读:CentOS 上 pgAdmin 权限设置技巧 一 权限模型与最小权限原则 将权限分为三层: 操作系统层:限制 pgAdmin 安装目录与运行进程的文件系统权限; 数据库层:使用 角色 Role/用户 User 与 GRANT/REVO...

CentOS 上 pgAdmin 权限设置技巧

一 权限模型与最小权限原则

  • 将权限分为三层:
    1. 操作系统层:限制 pgAdmin 安装目录与运行进程的文件系统权限;
    2. 数据库层:使用 角色 Role/用户 UserGRANT/REVOKE 精细授权;
    3. 网络与 SELinux:仅开放必要端口,必要时调整 SELinux 布尔值或上下文。
  • 建议遵循最小权限:日常运维使用非超级用户,按需授予 CONNECT/CREATE/USAGE/SELECT/INSERT/UPDATE/DELETE 等权限,避免滥用 SUPERUSER
  • 通过 角色聚合权限 再赋给用户,便于批量授权与回收。

二 操作系统与网络权限

  • 文件系统权限
    • 安装目录建议由 root 拥有,仅管理员可写,其他用户只读:
      sudo chown -R root:root /usr/pgsql/pgadmin4
      sudo chmod -R 755 /usr/pgsql/pgadmin4
    • 若通过 Apache/Nginx 代理,确保运行用户(如 apache/nginx)对静态资源与目录具备读取权限。
  • 防火墙放行
    • pgAdmin 4 Web 服务默认端口通常为 5050/TCP
      sudo firewall-cmd --permanent --add-port=5050/tcp
      sudo firewall-cmd --reload
  • SELinux 与布尔值
    • 常见做法是为静态内容设置 httpd_sys_content_t 上下文:
      sudo yum install -y policycoreutils-python-utils
      sudo semanage fcontext -a -t httpd_sys_content_t “/usr/pgsql/pgadmin4(/.*)?”
      sudo restorecon -Rv /usr/pgsql/pgadmin4
    • 若 pgAdmin 需要连接数据库,启用布尔值:
      sudo setsebool -P httpd_can_network_connect_db 1
  • 服务与自启
    • 启动并开机自启 pgAdmin 服务:
      sudo systemctl start pgadmin4
      sudo systemctl enable pgadmin4

三 PostgreSQL 数据库权限配置

  • 创建角色与用户
    • 登录数据库:sudo -u postgres psql
    • 创建只读用户与读写用户:
      CREATE ROLE app_read WITH LOGIN PASSWORD ‘StrongPass!’;
      CREATE ROLE app_write WITH LOGIN PASSWORD ‘StrongPass!’;
  • 授权范式(最小权限示例)
    • 只读用户:
      GRANT CONNECT ON DATABASE mydb TO app_read;
      GRANT USAGE ON SCHEMA public TO app_read;
      GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_read;
      ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO app_read;
    • 读写用户:
      GRANT CONNECT ON DATABASE mydb TO app_write;
      GRANT USAGE, CREATE ON SCHEMA public TO app_write;
      GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_write;
      ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_write;
      GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO app_write;
      ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT ON SEQUENCES TO app_write;
    • 回收与撤销:
      REVOKE ALL PRIVILEGES ON DATABASE mydb FROM app_read;
      REVOKE ALL PRIVILEGES ON SCHEMA public FROM app_read;
  • 通过 pgAdmin 图形界面:在左侧导航创建/编辑 登录角色(Login/Role),并在目标 数据库/模式/表权限 页签为用户或角色授予相应权限。

四 访问控制与加密

  • pg_hba.conf 精细化访问控制
    • 示例(仅允许内网与本地):
      host all all 127.0.0.1/32 md5
      host all all 192.168.1.0/24 md5
    • 修改后重载:sudo systemctl reload postgresql
  • SSL 加密传输
    • postgresql.conf:
      ssl = on
      ssl_cert_file = ‘/var/lib/pgsql/data/server.crt’
      ssl_key_file = ‘/var/lib/pgsql/data/server.key’
    • pgAdmin 连接服务器时勾选 Use SSL 并配置证书,避免凭据与数据在网络中被窃听。
  • 审计与日志
    • 开启日志收集与轮转:
      logging_collector = on
      log_directory = ‘pg_log’
      log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’
  • 安全运维
    • 定期更新系统与软件包:sudo yum update -y
    • 修改默认密码,限制数据库与 pgAdmin 的对外暴露面,仅开放必要端口与网段。

五 常见场景与命令清单

  • 只读账号快速模板
    • psql -U postgres -c “CREATE ROLE app_read WITH LOGIN PASSWORD ‘StrongPass!’; ”
    • psql -U postgres -c “GRANT CONNECT ON DATABASE mydb TO app_read; ”
    • psql -U postgres -c “GRANT USAGE ON SCHEMA public TO app_read; ”
    • psql -U postgres -c “GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_read; ”
    • psql -U postgres -c “ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO app_read; ”
  • 读写账号快速模板
    • psql -U postgres -c “CREATE ROLE app_write WITH LOGIN PASSWORD ‘StrongPass!’; ”
    • psql -U postgres -c “GRANT CONNECT ON DATABASE mydb TO app_write; ”
    • psql -U postgres -c “GRANT USAGE, CREATE ON SCHEMA public TO app_write; ”
    • psql -U postgres -c “GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_write; ”
    • psql -U postgres -c “ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_write; ”
    • psql -U postgres -c “GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO app_write; ”
    • psql -U postgres -c “ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT ON SEQUENCES TO app_write; ”
  • 网络与 SELinux
    • 放行端口:sudo firewall-cmd --permanent --add-port=5050/tcp & & sudo firewall-cmd --reload
    • SELinux 布尔值:sudo setsebool -P httpd_can_network_connect_db 1
  • 服务管理
    • 启动/自启:sudo systemctl start pgadmin4 & & sudo systemctl enable pgadmin4
  • 验证要点
    • 使用只读账号尝试 INSERT/UPDATE 应被拒绝;
    • 使用应用账号验证是否能正常读写与创建对象;
    • 检查服务器与客户端之间的 SSL 是否生效。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos pgadmin权限设置技巧
本文地址: https://pptw.com/jishu/747876.html
centos pgadmin资源监控方法 CentOS Dropped会影响数据吗

游客 回复需填写必要信息