资料库保安问题需在多个不同层面探讨∶
认证是後端伺服器和 postmaster 确保要求存取资料的用户是否确为其人的过程。所有启动 Postgres 的用者都与认证是後端伺服器和 postmaster pg_user 类别比较,以确定他们有权做想做的工作。 而用者真实身分的辨别工作以多个不同方法完成∶
依据主机控制存取即 PostgreSQL 用於决定什麽客户可存取资料库和他们如何确认身份的过程。每个资料库都有一个名为 pg_hba.conf 的档案,在它的 $PGDATA 目录中,它控制谁能存取资料库。每个存取资料库的用户都要在 pg_hba.conf 中有相应的纪录。否则所有来自该客户的连接都会以"User authemtication failed" 错误讯息被拒。
请参阅 pg_hba.conf(5) 的 man page(man 5 pg_hba.conf)。
pg_hba.conf 档的基本格式是一组纪录,一行一个。空行或以 hash 字母(#)开始的行则不理会。一个纪录由一些用空格和 / 或 Tab 分开的栏位组成。
从客户来的连接可经 Unix 插座或互联网插座(即 TCP/IP)。来自 Unix 插座的连接用以下格式的记录控制∶
local database authentication method
database 指定本纪录用於哪个资料库。all 代表它适用於所有资料库。
authentication method 指定用户在使用 Unix 插座时用来认证的方法。不同的方法容後详述。
来自互联网插座的连接用以下格式的记录控制∶
host database TCP/IP-address TCP/IP-mask authentication method
TCP/IP 地址会 逻辑上 and'ed 到指定的 TCP/IP 罩和客户的 TCP/IP 地址。如两者相等,这纪录会用於这个连接。如果一个连接符合超过一个纪录, 档案中的第一个纪录会被使用。不论 TCP/IP 地址还是 TCP/IP 罩都是以分点的十进数格式 (dotted decimal notation) 表达。如果一个连接和所有纪录都不符,reject 认证方法将会被使用。(参阅 认证方法)
Unix 和 TCP/IP 插座都支援以下认证方法∶
以下认证方法只受 TCP/IP 插座支援∶
这里有一些例子∶
# 信任所有来自 Unix 插座的连接。 local trust # 信任所有这部电脑经 TCP/IP 来的连接。 host all 127.0.0.1 255.255.255.255 trust # 我们讨厌这部电脑。 host all 192.168.0.10 255.255.255.0 reject # 这部电脑不懂加密,所以我们要纯文字的密码。 host all 192.168.0.3 255.255.255.0 password # 这群电脑的其他成员都要提供加密了的密码。 host all 192.168.0.0 255.255.255.0 crypt
Postgres 提供了限制其他用家存取自己资料的机制。
你可用 ssh 来加密客户和 Postgres 伺服器间的网络连接。做得正确的话,这样可形成一个保安的网络连接。
ssh 的文件提供了大部份开始时需要的资料。请参阅 http://www.heimhardt.de/htdocs/ssh.html 以加深了解。逐步解释只需两步。
经 ssh 形成一条保安通道∶ 逐步解释只需两步。
ssh -L 3333:wit.mcs.anl.gov:5432 postgres@wit.mcs.anl.gov
psql -h localhost -p 3333 -d mpw
Kerberos 是一个业界标准的保安认证系统,适用於经过公用网络的分散式系统。
如何取得 Kerberos 认证系统并不随同 Postgres 散布。不同版本的 Kerberos 多以可供选择的软件的形式自作业系统厂商得到。此外,原程式码的发行版本 (distribution) 可自 MIT Project Athena 得到。
注意∶即使你使厂商提供了 Kerberos,你仍可能想用 MIT 版,因为一些厂商的版本被故意弄坏以致不能和 MIT 版本合作。
有关 Kerberos 的查询可提交你的厂商或 MIT Project Athena。注意 FAQLs(常问问题名单,Frequently-Asked Questions Lists) 会被定时寄至 Kerberos 通信论坛(寄信去订阅),和 USENET 新闻组。
安装∶ 安装 Kerberos 在 Kerberos Installation Notes 中已详细说明。要确定伺服器键码档 (key file)(srvtab 或 keytab)可被 postgres 用户读到。籍设定 src/Makefile.global 档的 KRBVERS 变数,Postgres 或其客户程式可编译为使用 MIT Kerberos 通讯协定的第四或五版。你也可改变 Postgres 期望找到相关函式库、标头档和自己的伺服器键码档的位置。编译完後, Postgres 要登记为一个 Kerberos 服务。请参阅 Kerberos Operations Notes 和相关 manual pages 以取得有关登记服务的详情。
操作∶ 安装之後,Postgres 在各方面应如一般 Kerberos 服务运作。要知道认证的使用方法,请参阅 PostgreSQL User's Guide 有关 postmaster 和 psql 的章节。
在 Kerberos 第五版挂钓 (hooks),对用户和服务命名作了以下假设(也请参阅以下表格)。
表格∶Kerberos 参数例子 ------------------------------------------------------ 参数 例子 ------------------------------------------------------ user frew@S2K.ORG user aoki/HOST=miyu.S2K.Berkeley.EDU@S2K.ORG host postgres_dbms/ucbvax@S2K.ORG ------------------------------------------------------