PostgreSQL默认只监听本地端口,用netstat -tuln只会看到“tcp 127.0.0.1:5432 LISTEN”。修改postgresql.conf中的listen_address=*,监听所有端口,这样远程才能通过TCP/IP登录数据库,用netstat -tuln会看到“tcp 0.0.0.0:5432 LISTEN”。

pg_hba.conf配置文件常在PGDATA下

大家知道PostgreSQL在连接认证体系方面功能非常全面,因为它用到了一个 pg_hba.conf

( HBA stands for host-based authentication )文件。

--先来看 pg_hba.conf 文件的一个例子

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD

# "local" is for Unix domain socket connections only
local  all  all  trust # IPv4 local connections:
host  all  all  127.0.0.1/32  md5 # IPv6 local connections:
host  mydb  query_man  192.168.1.55/32  md5

备注:为了显示方便,上面仅列出 pg_hba.conf文件的最后一部分。从上面看出 pg_hba.conf 文件是由一行行记录组成,每行记录包括认证类型,数据库名,用户名,认证IP,认证方式字段。就是这些记录控制着客户端的连接。

本文不准备详细介绍 pg_hba.conf 文件的配置方法,关于 pg_hba.conf 的详细概述可以参考手册 http://www.postgresql.org/docs/9.0/static/client-authentication.html , 本文仅讲述以下场景 pg_hba.conf 的配置方法。

假设场景: 有一套生产库已经上线了,假设这个生产库的库名为 mydb, 生产用户为 skytf, 现在开发人员需要定期的去查看这个库里的某些表,这时考虑到生产库的安全,可以创建一个查询用户 query_man, 并授予一定的查询权限。这时开发人员可以在自己的电脑上通过 pgadmin等客户端工具连接数据库了,但此时有个问题,开发人员手里同时也有生产用户 skytf 的密码 ,因为项目上线时,DBA会所生产用户密码给开发人员,对应用进行配置,一般情况下都没收回这个权限,那么,理论上说,开发人员可以在本机使用生产帐号 skytf 连接生产库了( 不考虑网络情况下 ), 很明显,这是一种安全隐患,但是,PG里的 pg_hba.conf非常强大,可以利用它来配置一种比较严谨的认证方法。

--修改后的 pg_hba.conf 文件

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD

# "local" is for Unix domain socket connections only
local all all trust # IPv4 local connections:
host all all 127.0.0.1/32 md5 # IPv6 local connections:
host mydb query_man 192.168.1.55/32 md5
host all all 192.168.1.55/32 reject
host all all 0.0.0.0/0 md5

这里假设 "192.168.1.55" 是指开发人员的IP, 这只是举个例子,如果有多数开发人员,您也可以将它设置成一个网段。这里主要看以下两段, 第一段的意思是,主机 192.168.1.55 仅允许用 query_man 用户连接数据库 mydb, 第二段的意思是拒绝主机  192.168.1.55 以任何用户连接任何数据库。

# IPv6 local connections:
host mydb query_man 192.168.1.55/32 md5
host all all 192.168.1.55/32 reject

讲到这里,需要讲解下 pg_hba.conf 认证流程,客户端在连接 PostgreSQL时,PostgreSQL 会从上到下读取 pg_hba.conf 文件,如果有匹配的记录且认证通过,则可以连接数据库,如果有匹配的记录且认证失败则访问被拒绝,而不再考虑 pg_hba.conf 接下来的记录。上面的配置有效地控制了开发人员通过本机以生产用户连接生产库的情况, 同时只允许他们以查询用户连接生产库。

 --附:pg_hba.conf 认证流程图

                                                            图一  pg_hba.conf 认证流程图
 

[zz]pg_hba.conf 一种安全地配置策略的更多相关文章

  1. PostgreSQL的pg_hba.conf文件讲解

    pg_hba.conf为PostgreSQL的访问策略配置文件,默认位于/var/lib/pgsql/10/data/目录(PostgreSQL10). 该配置文件有5个参数,分别为:TYPE(主机类 ...

  2. Spring Cloud Config采用Git存储时两种常用的配置策略

    由于Spring Cloud Config默认采用了Git存储,相信很多团队在使用Spring Cloud的配置中心时也会采用这样的策略.即便大家都使用了Git存储,可能还有各种不同的配置方式,本文就 ...

  3. Microsoft EDP(enterprise database protection)配置策略中的三种Rule template

    搭建Microsoft EDP环境: Microsoft 10 insider preview,Microsoft Intune,ie10(要安装插件silverlight) 这里暂时只说在进行配置策 ...

  4. PostgreSQL的 pg_hba.conf 配置参数详解

    pg_hba.conf 配置详解 该文件位于初始化安装的数据库目录下 编辑 pg_hba.conf 配置文件   postgres@clw-db1:/pgdata/9.6/poc/data> v ...

  5. Linux防火墙简介 – iptables配置策略

    Linux防火墙简介 – iptables配置策略 Netfilter/iptables简介 要想真正掌握Linux防火墙体系,首先要搞清楚Netfilter和iptables的关系,Netfilte ...

  6. 从pg_hba.conf文件谈谈postgresql的连接认证

    最近一直在弄postgresql的东西,搭建postgresql数据库集群环境什么的.操作数据库少不得要从远程主机访问数据库环境,例如数据库管理员的远程管理数据库,远程的客户存取数据库文件. 而在po ...

  7. LVS三种模式配置及优点缺点比较

    目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种(LVS-DR,LVS-NAT,LVS-TUN)模式的简要配置 LVS是什么: http://www.lin ...

  8. LVS三种模式配置及优点缺点比较 转

    LVS三种模式配置及优点缺点比较   作者:gzh0222,发布于2012-11-12,来源:CSDN   目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种 ...

  9. Spark学习笔记-三种属性配置详细说明【转】

    相关资料:Spark属性配置  http://www.cnblogs.com/chengxin1982/p/4023111.html 本文出处:转载自过往记忆(http://www.iteblog.c ...

随机推荐

  1. PI-webservice05-SAP调用外部webservice

    在用webservice进行数据传输的过程中,SAP系统与.net开发的信息系统之间的数据调用.如何用SAP调用外部的.net系统发布的webservice程序来获取外部的数据,详情请见下文: 1,创 ...

  2. URAL 1779 F - The Great Team 构造

    F - The Great TeamTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest ...

  3. Android编译提示ImportError: No module named bz2的解决办法

    在安装node.js时提示ImportError: No module named bz2.很明显这个python中没有装bz2的库导致的.解决方法:sudo apt-get install libb ...

  4. Android PhoneGap源码分析——白名单

    对于单独的Web app应用来说,加载进来的url一般不能保证它的安全性.那么如何来处理url安全性的问题呢. 让我们来看看PhoneGap是如何做的. PhoneGap采用了白名单的形式,认为在白名 ...

  5. mysql 5.6 binlog组提交1

    [MySQL 5.6] MySQL 5.6 group commit 性能测试及内部实现流程   尽管Mariadb以及Facebook在long long time ago就fix掉了这个臭名昭著的 ...

  6. 申请TexturePacker 或 PhysicsEditor free licenses

    有一个跟开发有关的blog,就可以去 http://www.codeandweb.com/request-free-license 申请一个free licenses. 可以申请TexturePack ...

  7. 用Linux安装光盘修复GRUB

    转载:http://lgn21st.iteye.com/blog/179455 需要开视频会议,我不得零时从Ubuntu切换回去百年难道用一次的WinXP...发现自己的XP系统很混乱...决定重新装 ...

  8. 小白日记13:kali渗透测试之服务扫描(三)-SMTB扫描、防火墙识别、负载均衡识别、WAF识别

    SMTP扫描 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协议属于TCP/ ...

  9. Maven 仓库

    Maven仓库分为本地仓库和远程仓库(中央仓库,私服,其他公共仓库)一张图就可以很清楚的看出结构 本地仓库:本地仓库是在我们当前电脑系统盘的user-administrator-m2-reposito ...

  10. Debian 7.4 中配置PHP环境

    准备工作 导入密钥 wget http://www.dotdeb.org/dotdeb.gpg sudo apt-key add dotdeb.gpg 添加源 vi /etc/apt/sources. ...