Kerberos

Kerberos 是一种健壮且安全的用户身份验证方法,通过签发用于安全身份验证的“票据”,防止密码通过互联网发送。

要使用 Kerberos 身份验证,您必须在 udbsx.ymlconfig.yml 中设置以下设置。

UDB-SX 节点配置

udbsx.yml 中,定义以下设置:

plugins.security.kerberos.krb5_filepath: '/etc/krb5.conf'
plugins.security.kerberos.acceptor_keytab_filepath: 'udbsx_keytab.tab'
plugins.security.kerberos.acceptor_principal: 'HTTP/localhost'
名称 描述
krb5_filepath Kerberos 配置文件的路径。该文件包含有关 Kerberos 安装的各种设置,例如 Kerberos 密钥分发中心(KDC)的 realm 名称、hostnames 和端口。
acceptor_keytab_filepath keytab 文件的路径,该文件包含安全插件用于通过 Kerberos 发出请求的主体。
acceptor_principal 安全插件用于通过 Kerberos 发出请求的主体。此值必须存在于 keytab 文件中。

由于安全限制,keytab 文件必须放置在 config 目录或其子目录中,并且 udbsx.yml 中的路径必须是相对路径,而不是绝对路径。

集群安全配置

以下示例显示了 config.yml 中典型的 Kerberos 身份验证域:

kerberos_auth_domain:
  enabled: true
  order: 1
  http_authenticator:
    type: kerberos
    challenge: true
    config:
      krb_debug: false
      strip_realm_from_principal: true
  authentication_backend:
    type: noop

在 HTTP 级别上使用浏览器时,通过 Kerberos 进行身份验证是使用 SPNEGO 实现的。Kerberos/SPNEGO 的具体实现因您的浏览器和操作系统而异。这在决定是否需要将 challenge 标志设置为 truefalse 时非常重要。

HTTP 基本身份验证 类似,此标志决定了安全插件在 HTTP 请求中未找到 Authorization 头信息或该头信息不等于 negotiate 时应如何反应。

如果设置为 true,安全插件会发送一个状态码为 401 的响应,并将 WWW-Authenticate 头设置为 negotiate。这会告诉客户端(浏览器)重新发送设置了 Authorization 头的请求。如果设置为 false,安全插件无法从请求中提取凭据,身份验证失败。因此,仅当 Kerberos 凭据在初始请求中发送时,将 challenge 设置为 false 才有意义。

名称 描述
krb_debug 顾名思义,将其设置为 true 会将 Kerberos 特定的调试消息输出到 stdout。如果在 Kerberos 集成中遇到问题,请使用此设置。默认值为 false
strip_realm_from_principal 当设置为 true 时,安全插件会从用户名中剥离 realm。默认值为 true

由于 Kerberos/SPNEGO 在 HTTP 级别对用户进行身份验证,因此不需要额外的 authentication_backend。将此值设置为 noop