• 金仓数据库KingbaseES安全指南--6.7. GSSAPI身份验证


    6.7.1. 关于GSSAPI身份验证

    GSSAPI是用于 RFC 2743 中定义的安全认证的一个工业标准协议。 KingbaseES支持GSSAPI用户加密、认证层或者仅用于认证。 身份验证本身是安全的,但通过数据库连接发送的数据将不被加密,除非使用SSL。KingbaseES支持带Kerberos认证的GSSAPI,GSSAPI为支持它提供自动身份验证(单点登录)功能。如果使用GSSAPI加密或SSL加密,数据库连接发送的数据将被加密,否则将不加密。 当编译KingbaseES时,GSSAPI 支持必须被启用。

    6.7.2. GSSAPI身份验证的工作原理

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

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

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

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

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

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

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

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

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

    include_realm

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

    map

    允许在系统和数据库用户名之间的映射。详见 用户名映射 。 对于一个 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 的用户都能连接,服从任何已完成的用户名映射。

  • 相关阅读:
    基于安卓平台的远程医疗APP设计
    【车牌识别】模板匹配新能源、轿车、货车车牌识别【含GUI Matlab源码 2169期】
    finereport公式帮助
    三维变换与投影-计算机图形学
    PHP redis list
    Java泛型
    STC51单片机29——单片机演奏音乐
    防火墙规则顺序解决方案
    Zotero如何实现多端(电脑, iPad)同步?
    高斯消元
  • 原文地址:https://blog.csdn.net/arthemis_14/article/details/126052125