设为首页 加入收藏

TOP

关于postgresql的安装与实用(五)
2014-11-24 00:04:36 来源: 作者: 【 】 浏览:72
Tags:关于 postgresql 安装 实用
行密码管理,例如,CREATE USER foo WITH PASSWORD ‘secret’。如果用户没有设置密码,这个存储密码的字段将为空,对于这个用户,密码认证方式将会失效。

GSSAPI认证

GSSAPI是在RFC 2734中定义的一个安全行业安全认证标准协议。PostgreSQL支持的GSSAPI认证和在RFC 1964中定义的Kerberos认证一致。GSSAPI为系统提供并支持自动认证(单点登陆)。这个认证本身很安全,但是数据库连接中的数据传输将不会被加密,除非使用了SSL加密。

当GSSAIP使用Kerberos认证,它将使用了标准的格式servicename/hostname@realm。关于这个部分的主要信息和怎么样设置所需要的密匙,请参阅Section 19.3.5。

当PostgreSQL启动的时候GSSAPI的支持将被启用;请查阅Chapter 15获取更多信息。

以下是GSSAPI支持的配置选项:

include_realm

如果这个参数设置成1,这个区域的认证用户将会通过用户名的映射加入到系统用户名中(Section 19.2)。这对于多区域内处理用户是非常有用的。

map

允许系统和数据库用户名之间进行映射。请参阅Section 19.2获取更多信息。对于Kerberos的主体username/hostbased@EXAMPLE.COM,如果include_realm被禁止,用户名映射的是username/hostbased,并且如果include_realm被启用,用户名映射的是username/hostbased@EXAMPLE.COM。

krb_realm

设置一个匹配的用户名的范围。如果这个参数被设置,那么只有在这个范围内的用户能进行访问。如果没有设置,无论用户名映射是否完成,任何范围的用户都能访问,

SSPI认证

对于单点登录的安全认证来说SSPI是一个windows技术。PostgreSQL在negotiate模式下使用SSPI,当在其他情况下可能自动回退到用NTLM模式,这样就会使用Kerberos。

当用Kerberos认证,SSPI的工作方式和GSSAPI一致,请参阅Section 19.3.3获取详细信息。

以下是SSPI支持的配置选项:

include_realm

如果这个参数设置成1,这个区域的认证用户将会通过用户名的映射加入到系统用户名中(Section 19.2)。这对于多区域内处理用户是非常有用的。

map

允许系统和数据库用户名之间进行映射。请参阅Section 19.2获取更多信息。

krb_realm

设置一个匹配的用户名的范围。如果这个参数被设置,那么只有在这个范围内的用户能进行访问。如果没有设置,无论用户名映射是否完成,任何范围的用户都能访问.

Kerberos认证

注意:本地Kerberos认证已经过时,仅用于向后兼容。新安装和升级安装鼓励使用行业标准GSSAPI的认证方法(请参阅Section 19.3.3)。

Kerberos是一种适用于在公共网络上进行分布计算的工业标准的安全认证系统。对Kerberos 系统的叙述远远的超出了本文档的范围,总的说来它是相当复杂(同样也相当强大)的系统。Kerberos FAQ 或MIT Kerberos page 是个开始探索的好地方。现存在好几种Kerberos发布的源代码。Kerberos只提供安全认证,并不加密在网络中传输的数据,如果要做这些可以用SSL实现。

PostgreSQL支持Kerberos 5.当PostgreSQL被创建,Kerberos就能够被启用,请参阅Chapter 15获取更多信息。

PostgreSQL运行是像一个普通的Kerberos服务。服务主的名字是servicename/hostname@realm。

servicename可以在服务器端用krb_srvname参数进行设置,在客户端就可以使用用krbsrvname连接参数。(另见Section 31.1。)安装的时候缺省的名字是postgres并可以用./configure --with-krb-srvnam=whatever来改变这个缺省名字。在大多数环境中这个参数需要被更改。不过,当又多个PostgreSQL在同一台主机上安装时这个参数必须要更改。有些Kerberos实现需要用不同的服务名,像微软的活动目录要求的服务名为大写(POSTGRES)。

hostname 是服务器合格的主机名字。服务器的域是服务器机器的优先域。

客户主必须用PostgreSQL数据库用户名作为第一个组件。例如pgusername@realm。另外,你也可以用用户名映射来自第一个组件的数据库的用户名。缺省情况下,PostgreSQL将不检查客户端的域。如果跨域认证被启用就需要验证这个域,用krb_realm参数或者启用include_realm,并且用用户名映射来检查这个域。

确定你的服务器密匙文件能被PostgreSQL服务器账户读取(最好是只读)。(另见Section 17.1.)这个密匙文件的位置由krb_server_keyfile配置参数来指定。缺省是在/usr/local/pgsql/etc/krb5.keytab(或者是任意目录,只要在创建的时候指定sysconfdir参数)

这个密匙文件由Kerberos软件生成,请参阅Kerberos的文档获取详细信息。以下的例子是有MIT-compatible 在kerberos 5版本上实现的

kadmin% ank -randkey postgres/server.my.domain.org kadmin% ktadd -k krb5.keytab postgres/server.my.domain.org

当连接到这个数据库,请确保自己对每个主都拥有一张匹配所请求的数据库用户名的门票。例如,数据库名为fred,主fred@EXAMPLE.COM将可以连接。主fred/users.example.com@EXAMPLE.COM也允许连接,用用户名映射请看Section 19.2的描述。

如果你在Apache web服务器上使用mod_auth_kerb和mod_perl模块,你可以用mod_perl脚本来进行AuthType KerberosV5SaveCredentials认证。这使在web上能安全的访问数据库,不需要额外的密码。

以下是Kerberos支持的配置选项:

map

允许系统和数据库用户名之间进行映射。请参阅Section 19.2获取更多信息。

include_realm

如果这个参数设置成1,这个区域的认证用户将会通过用户名的映射加入到系统用户名中(Section 19.2)。这对于多区域内处理用户是非常有用的。

krb_realm

设置一个匹配的用户名的范围。如果这个参数被设置,那么只有在这个范围内的用户能进行访问。如果没有设置,无论用户名映射是否完成,任何范围的用户都能访问.

krb_server_hostname

设置主体服务的主机名。这样,结合krb_srvname,生成完整的服务主体,像这样krb_srvname/krb_server_hostname@REALM。如果这个参数不设置,缺省就是这

首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇PostgreSQL代码整体结构(一) 下一篇PostgreSQL 安装问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: