Next Previous Contents

10. 资料库保安

资料库保安问题需在多个不同层面探讨︰

10.1 用户认证

认证是后端伺服器和 postmaster 确保要求存取资料的用户是否确为其人的过程。所有启动 Postgres 的用者都与认证是后端伺服器和 postmaster pg_user 类别比较,以确定他们有权做想做的工作。 而用者真实身分的辨别工作以多个不同方法完成︰

10.2 依据主机控制存取

依据主机控制存取即 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 认证方法将会被使用。(参阅 认证方法

10.3 认证方法

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

10.4 存取控制

Postgres 提供了限制其他用家存取自己资料的机制。

10.5 经 SSH 的保安 TCP/IP 连接

你可用 ssh 来加密客户和 Postgres 伺服器间的网络连接。做得正确的话,这样可形成一个保安的网络连接。

ssh 的文件提供了大部份开始时需要的资料。请参阅 http://www.heimhardt.de/htdocs/ssh.html 以加深了解。逐步解释只需两步。

经 ssh 形成一条保安通道︰ 逐步解释只需两步。

10.6 Kerberos 认证

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)(srvtabkeytab)可被 postgres 用户读到。籍设定 src/Makefile.global 档的 KRBVERS 变数,Postgres 或其客户程序可编译为使用 MIT Kerberos 通讯协定的第四或五版。你也可改变 Postgres 期望找到相关函式库、标头档和自己的伺服器键码档的位置。编译完后, Postgres 要登记为一个 Kerberos 服务。请参阅 Kerberos Operations Notes 和相关 manual pages 以取得有关登记服务的详情。

操作︰ 安装之后,Postgres 在各方面应如一般 Kerberos 服务运作。要知道认证的使用方法,请参阅 PostgreSQL User's Guide 有关 postmasterpsql 的章节。

在 Kerberos 第五版挂钓 (hooks),对用户和服务命名作了以下假设(也请参阅以下表格)。


                表格︰Kerberos 参数例子
 ------------------------------------------------------
 参数       例子 
 ------------------------------------------------------
 user       frew@S2K.ORG
 user       aoki/HOST=miyu.S2K.Berkeley.EDU@S2K.ORG
 host       postgres_dbms/ucbvax@S2K.ORG
 ------------------------------------------------------


Next Previous Contents