[转帖]PostgreSQL本地登录trust、ident认证权限控制

[转帖]PostgreSQL本地登录trust、ident认证权限控制,第1张

概述前几天偶然发现任意OS用户无需密码就可以获取PG数据库管理员权限。感觉这个也太BUG了,如果DBA配置不当,岂不是很容易就数据泄露了。。。 通过合理配置pg_hba.conf,pg_ident.conf禁止非数据库OS用户登录以trust方式登录,对于某些需要支持本地认证的同学可能有用。       前置条件:         1.我的PG数据库是由Linux用户 ithomer创建的私有数据库 前几天偶然发现任意OS用户无需密码就可以获取PG数据库管理员权限。感觉这个也太BUG了,如果DBA配置不当,岂不是很容易就数据泄露了。。。 通过合理配置pg_hba.conf,pg_IDent.conf禁止非数据库OS用户登录以trust方式登录,对于某些需要支持本地认证的同学可能有用。 前置条件: 1.我的PG数据库是由linux用户 ithomer创建的私有数据库 2.数据库认证方式pg_hba.conf中,本地用户登录认证方式为trust
# TYPE  DATABASE        USER            ADDRESS                 METHOD# "local" is for Unix domain socket connections onlylocal   all             all                                     trust
问题重现: 1.以任意linux用户如homerwu登录OS(该用户无任何数据库权限,与ithomer也不在同一组) 2.homerwu用户下载PG客户端可执行程序,以本地套接字认证方式登录PG,指定用户,不指定密码
[homerwu@vmlinux ~]$ pgsql/bin/psql -d postgres -U ithomerpsql (9.2.3)Type "help" for help.postgres=# 
登录成功了。。。直接就取到了ithomer私有数据库的管理员权限,无需密码。 一时以为又出现了重大的安全漏洞,于是发邮件给PG开源社区,得到答复:“trust认证设计就是这样的,并且文档上也说明了” 感 觉不大可思议,这种登录方式类似Oracle中的 sqlplus / as sysdba命令,不同的是,对于非安装用户以这种方式登录时,Oracle返回了个认证错误的信息,直接就拒绝掉了。而PG的这种方式,不检查OS用户 名、用户组,直接就通过认证,感觉相当不安全(数据库默认本地用户认证方式就是为trust)。 后来,阅读了PG文档中关于认证部分的文档,改为IDent认证方式("IDentification Protocol"标识协议在 RFC 1413里面描述),指定哪些OS用户可以用那些PG用户名登录。对于那种需要直接在sysdba方式登录的用户可能有用。 解决方法: 1.修改IDent认证文件pg_IDent.conf,设定本地套接字认证方式的OS与PG用户名的映射关系,允许OS用户名为ithomer的,可以用PG 用户名ithomer以本地套接字认证方式登录。(同理,不在映射关系中的用户,就不允许登录。如果不设定pg_IDent.conf,则PG默认映射关系为 sameuser,即只能以OS同名的PG用户名登录)
# MAPname       SYstem-USERname         PG-USERnamelocal_IDent_user      ithomer                 ithomer
2.调整pg_hba.conf本地认证方式为IDent,映射名为之前设定的MAPnamelocal_IDent_user(不同PG版本设定方式稍微不同,得参考文档)
# "local" is for Unix domain socket connections onlylocal   all             all                                     IDent map=local_IDent_user 
3.重新加载数据库配置
pg_ctl reload
4.OK,现在只允许OS用户ithomer无需密码登录了~ 相关的PG客户端登录认证源码位置: 函数:voIDClIEntAuthentication(Port *port) 源文件:src\backend\libpg\auth.c

作者:Homer Wu
出处:http://www.cnblogs.com/HomerWu 总结

以上是内存溢出为你收集整理的[转帖]PostgreSQL本地登录trust、ident认证权限控制全部内容,希望文章能够帮你解决[转帖]PostgreSQL本地登录trust、ident认证权限控制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1171805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存