Kerberos
Kerberos 是一种强大而安全的用户身份验证方法,通过发放“票据”进行安全身份验证,从而防止密码在互联网上传输。
为了使用 Kerberos 身份验证,您必须在 opensearch.yml
和 config.yml
中设置以下配置。
OpenSearch 节点配置
在 opensearch.yml
中,定义以下设置
plugins.security.kerberos.krb5_filepath: '/etc/krb5.conf'
plugins.security.kerberos.acceptor_keytab_filepath: 'opensearch_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
或其子目录中,并且 opensearch.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 时,安全插件会从用户名中删除领域信息。默认值:true 。 |
由于 Kerberos/SPNEGO 在 HTTP 级别对用户进行身份验证,因此不需要额外的 authentication_backend
。将此值设置为 noop
。