Link Search Menu Expand Document Documentation Menu

配置安全后端

设置 Security 插件的首批步骤之一是决定使用哪个认证后端。后端在认证中扮演的角色在认证流程的第 2 步和第 3 步中有所介绍。该插件有一个内部用户数据库,但许多人更喜欢使用现有的认证后端,例如 LDAP 服务器,或者两者的某种组合。

用于配置认证和授权后端的主要文件是 /usr/share/opensearch/config/opensearch-security/config.yml。此文件定义了 Security 插件如何检索用户凭据、如何验证凭据以及当为认证和授权选择的后端支持此功能时,插件如何获取附加角色。本主题提供了配置文件及其安全设置要求的概览。有关配置特定后端的信息,请参阅认证后端

config.yml 文件包含三个主要部分

config:
  dynamic:
    http:
      ...
    authc:
      ...
    authz:
      ...

以下部分描述了 config.yml 文件每个主要部分的元素,并提供了其配置的基本示例。有关更详细的示例,请参阅 GitHub 上的示例文件

HTTP

http 部分包含以下格式

http:
  anonymous_auth_enabled: <true|false>
  xff: # optional section
    enabled: <true|false>
    internalProxies: <string> # Regex pattern
    remoteIpHeader: <string> # Name of the header in which to look. Typically: x-forwarded-for
    proxiesHeader: <string>
    trustedProxies: <string> # Regex pattern

此配置中使用的设置在下表中描述。

设置 描述
anonymous_auth_enabled 启用或禁用匿名认证。当设置为 true 时,HTTP 认证器会尝试在 HTTP 请求中查找用户凭据。如果找到凭据,用户将获得认证。如果未找到,用户将被认证为匿名用户。该用户将拥有用户名 anonymous 和一个名为 anonymous_backendrole 的角色。启用匿名认证时,所有定义的 HTTP 认证器都是非挑战性的。有关更多信息,请参阅挑战设置
xff 用于配置基于代理的认证。有关此后端更多信息,请参阅基于代理的认证

有关如何配置匿名认证的说明,请参阅匿名认证

身份验证

authc 部分具有以下格式

authc:
  <domain_name>:
    http_enabled: <true|false>
    transport_enabled: <true|false>
    order: <integer>
    http_authenticator:
      ...
    authentication_backend:
      ...

authc 部分中的一个条目称为认证域。它指定了从何处获取用户凭据以及应针对哪个后端进行认证。

您可以使用多个认证域。每个认证域都有一个名称(例如,basic_auth_internal)、用于在 REST 和传输层启用域的设置以及一个 order(顺序)。顺序使得将认证域链接在一起成为可能。Security 插件按照您提供的顺序使用它们。如果用户成功通过一个域进行认证,Security 插件会跳过剩余的域。

通常在此配置部分中找到的设置包含在下表中。

设置 描述
http_enabled 启用或禁用 REST 层的认证。默认值为 true(启用)。
transport_enabled 启用或禁用传输层的认证。默认值为 true(启用)。
顺序 当多个后端组合配置时,此设置决定了认证请求查询认证域的顺序。一旦认证成功,就不需要查询剩余的域。其值为整数。

http_authenticator 定义指定了 HTTP 层的认证方法。以下示例显示了定义 HTTP 认证器所使用的语法

http_authenticator:
  type: <type>
  challenge: <true|false>
  config:
    ...

http_authenticatortype 设置接受以下值。有关每个认证选项的更多信息,请参阅后续步骤中的认证后端链接。

描述
basic HTTP 基本认证。有关使用基本认证的更多信息,请参阅 HTTP 基本认证文档。
kerberos Kerberos 认证。有关附加配置信息,请参阅 Kerberos 文档。
jwt JSON Web Token (JWT) 认证。有关附加配置信息,请参阅 JSON Web Token 文档。
openid OpenID Connect 认证。有关附加配置信息,请参阅 OpenID Connect 文档。
saml SAML 认证。有关附加配置信息,请参阅 SAML 文档。
proxy, extended-proxy 基于代理的认证。extended-proxy 类型认证器允许您传递额外的用户属性,用于文档级安全。有关附加配置信息,请参阅基于代理的认证文档。
clientcert 通过客户端 TLS 证书进行认证。此证书必须受节点信任存储中某个根证书颁发机构 (CA) 的信任。有关附加配置信息,请参阅客户端证书认证文档。

设置 HTTP 认证器后,您必须指定要对用户进行认证的后端系统

authentication_backend:
  type: <type>
  config:
    ...

下表显示了 authentication_backendtype 设置的可能值。

描述
noop 不会对任何后端系统执行进一步认证。如果 HTTP 认证器已经完全认证了用户,例如在 JWT 或客户端证书认证的情况下,请使用 noop
internal 使用 internal_users.yml 中定义的用户和角色进行认证。
ldap 针对 LDAP 服务器对用户进行身份验证。此设置需要额外的 LDAP 特定配置设置

授权

authz 配置用于从 LDAP 实现中提取后端角色。用户通过身份验证后,Security 插件可以选择性地从后端系统收集其他角色。授权配置具有以下格式

authz:
  <name>:
    http_enabled: <true|false>
    transport_enabled: <true|false>
    authorization_backend:
      type: <type>
      config:
        ...

您可以在此部分中定义多个条目,就像身份验证条目一样。但是,在这种情况下,执行顺序不相关,并且不使用 order 设置。

下表显示了 authorization_backendtype 设置的可能值。

描述
noop 完全跳过授权配置步骤。
ldap 从 LDAP 服务器获取其他角色。此设置需要额外的 LDAP 特定配置设置

后端配置示例

OpenSearch 发行版中包含的默认 config/opensearch-security/config.yml 文件包含许多配置示例。请使用这些示例作为起点,并根据您的需要进行自定义。

后续步骤

要了解如何配置身份验证后端,请参阅身份验证后端文档。或者,您可以通过使用以下主题列表中的链接来查看特定后端的文档

剩余 350 字符

有问题?

想贡献吗?