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