Kerberos
Kerberos 是一种健壮且安全的用户身份验证方法,通过签发用于安全身份验证的“票据”,防止密码通过互联网发送。
要使用 Kerberos 身份验证,您必须在 udbsx.yml 和 config.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 标志设置为 true 或 false 时非常重要。
与 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。