举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > PostgreSQL GSSAPI 认证

PostgreSQL GSSAPI 认证

2023-06-11 19:18

 PostgreSQL GSSAPI 认证

GSSAPI是用于 RFC 2743 中定义的安全认证的一个工业标准协议。 PostgreSQL根据 RFC 1964 支持带Kerberos认证的GSSAPIGSSAPI为支持它的系统提供自动认证(单点登录)。 认证本身是安全的,但通过数据库连接发送的数据将不被加密,除非使用SSL。 PostgreSQL支持GSSAPI用于加密、认证层或仅用于认证。 GSSAPI 提供自动认证(single sign-on单点登录) 给支持该功能的系统。认证本身是安全的。 如果使用了GSSAPI 加密(参见 hostgssenc) 或SSL 加密, 数据库连接发送的数据将被加密,否则将不加密。

当编译PostgreSQL时,GSSAPI 支持必须被启用,详见第 16 章。

GSSAPI使用Kerberos时, 它会使用格式为 servicename /hostname@realm 的标准 principal。 PostgreSQL服务器将接受该服务器所使用的 keytab 中包括的任何 principal,但是在从使用 krbsrvname连接参数的客户端建立连接时要注意指定正确的 principal 细节(另见 第 33.1.2 节)。安装的默认值 postgres可以在编译时使用 ./configure --with-krb-srvnam=其他值修改。 在大部分的环境中,这个参数从不需要被更改。某些 Kerberos 实现可能要求一个不同的服务名, 例如 Microsoft Active Directory 要求服务名是大写形式(POSTGRES)。

hostname是服务器机器的被完全限定的主机名。服务 principal 的 realm 是该服务器机器的首选 realm。

客户端 principal 可以被通过pg_ident.conf映射到不同的 PostgreSQL数据库用户名。例如, pgusername@realm可能会被映射到pgusername。 或者,你可以使用完整的username@realm当事人作为 PostgreSQL中的角色而无需任何映射。

PostgreSQL也支持一个参数把 realm 从 principal 中剥离。这种方法是为了向后兼容性,并且我们强烈反对使用它,因为这样就无法区分具有相同用户名却来自不同 realm 的不同用户了。要启用这种方法,可将include_realm设置为 0。对于简单的单 realm 安装,这样做并且设置krb_realm参数(这会检查 principal 的 realm 是否正好匹配krb_realm中的参数)仍然是安全的。但比起在pg_ident.conf中指定一个显式映射来说,这种方法的能力较低。

确认你的服务器的 keytab 文件是可以被PostgreSQL服务器帐 户读取的(最好是只读的) (又见第 18.1 节)。密钥文件的位置由配置 参数krb_server_keyfile指定。默认是 /usr/local/pgsql/etc/krb5.keytab(或者任何在编译的时候作为sysconfdir的目录)。 出于安全原因,推荐对PostgreSQL服务器使用一个独立 的 keytab而不是开放系统 keytab 文件的权限。

keytab 文件由 Kerberos 软件生成,详见 Kerberos 文档。下面是 MIT 兼容的 Kerberos 5 实现的例子:

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

当连接到数据库时,确保你有一个匹配被请求数据库用户名的 principal 的票据。例如,对于数据库用户名fred,principal fred@EXAMPLE.COM将能够连接。要也允许 principal fred/users.example.com@EXAMPLE.COM,可使用一个用户名映射,如第 20.2 节中所述。

下列被支持的配置选项用于GSSAPI

include_realm

如果设置为 0,在通过用户名映射之前(第 20.2 节),来自已认证用户 principal 的 realm 名称会被剥离掉。我们不鼓励这样做,这种方法主要是为了向后兼容性而存在的,因为它在多 realm 环境中是不安全的(除非也使用 krb_realm)。推荐用户让 include_realm设置为默认值(1)并且在pg_ident.conf中提供一条显式的映射来把 principal 名称转换成PostgreSQL用户名。

map

允许在系统和数据库用户名之间的映射。详见第 20.2 节。 对于一个 GSSAPI/Kerberos 原则,例如username@EXAMPLE.COM (或者更不常见的username/hostbased@EXAMPLE.COM), 用于映射的用户名会是username@EXAMPLE.COM(或者 username/hostbased@EXAMPLE.COM,相应地),除非 include_realm已经被设置为 0,在那种情况下 username(或者username/hostbased)是 映射时被视作系统用户名的东西。

krb_realm

设置 realm 为对用户 principal 名进行匹配的范围。 如果这个参数被设置,只有那个 realm 的用户将被接受。 如果它没有被设置,任何 realm 的用户都能连接,服从任何已完成的用户名映射。


阅读全文
以上是编程学为你收集整理的 PostgreSQL GSSAPI 认证全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  •  PostgreSQL 客户端连接默认值

    PostgreSQL 客户端连接默认值

    2023-06-22

    19.11.1. 语句行为19.11.2. 区域和格式化19.11.3. 共享库预载入19.11.4. 其他默认值 19.11.1.语句行为client_min_messages (enum...

  •  PostgreSQL 可靠性

    PostgreSQL 可靠性

    2023-04-08 PostgreSQL 可靠性

    可靠性是任何严肃的数据库系统的重要属性,PostgreSQL尽一切可能来保证可靠的操作。可靠的操作的一个方面是,被一个提交事务记录...

  •  PostgreSQL 配置

    PostgreSQL 配置

    2023-05-07 PostgreSQL 配置

    配置变量jit决定启用或者禁用JIT编译。如果它被启用,配置变量jit_above_cost、jit_inline_above_cost以及jit_optimize_above_co...

  •  PostgreSQL 快速路径接口

    PostgreSQL 快速路径接口

    2023-04-14

    PostgreSQL提供一种快速路径接口来向服务器发送简单的函数调用。提示这个接口在某种程度上已被废弃,因为我们可以通过创建一个定...

  •  PostgreSQL 口令文件

    PostgreSQL 口令文件

    2023-05-28

    一个用户主目录中的.pgpass文件能够包含在连接需要时使用的口令(并且其他情况不会指定口令)。在微软的 Windows 上该文件被命名...

© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部