注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

pg_hba.conf 一种安全地配置策略  

2011-04-24 15:01:13|  分类: Postgres基础 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

        

        大家知道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 一种安全地配置策略 - francs - My DBA LIFE
                                                            图一  pg_hba.conf 认证流程图
  评论这张
 
阅读(28723)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016