INFINI Gateway 和 LDAP、Easysearch 的集成的情况可以分为以下三种
- 网关代理启用了安全认证的 ES 集群,这时候访问网关要传递 ES 的认证信息。
- 网关代理启用了安全认证的 ES 集群,且 ES 集群集成了 LDAP,此时可使用 LDAP 中的用户信息。
- 网关代理未启用安全认证的 ES 集群,网关可以集成 LDAP 为 ES 集群提供认证保护。如果没有 LDAP 服务可以在配置文件中设置用户信息,参考文档。
本系列文章中的 Easysearch 集群已经开启了认证并和 LDAP 进行了集成,所以我们使用网关代理 Easysearch 集群后,可以使用 LDAP 中的用户直接访问网关。
Easysearch 与 LDAP 集成
我们在之前的系列文章第二篇中,把 LDAP 服务与 Easysearch 做了集成。我们将 LDAP 的 administrator 组映射到了 Easysearch 的 superuser 角色,将 readonly 组映射到了 readall 角色。两个用户 yangf 和 readonly 分别属于上面的两个组。
情况二
网关正常设置代理 Easysearch 集群,编辑配置文件填写相关变量。
env: #use $[[env.LOGGING_ES_ENDPOINT]] in config instead
LOGGING_ES_ENDPOINT: https://localhost:9201/
LOGGING_ES_USER: admin
LOGGING_ES_PASS: changeme
PROD_ES_ENDPOINT: https://localhost:9201/
PROD_ES_USER: admin
PROD_ES_PASS: changeme
GW_BINDING: "0.0.0.0:8000"
API_BINDING: "0.0.0.0:2900"
我们直接使用 LDAP 的用户访问网关

情况三
我们关闭 Easysearch 的认证,然后让网关与 LDAP 进行集成。
网关配置修改
flow:
- name: ldap_auth
filter:
- ldap_auth:
host: "localhost"
port: 1389
bind_dn: "cn=readonly,dc=example,dc=org"
bind_password: "changethistoo"
base_dn: "ou=People,dc=example,dc=org"
user_filter: "(uid=%s)"
- name: default_flow
filter:
- flow:
flows:
- ldap_auth
- elasticsearch:
elasticsearch: prod
max_connection_per_node: 1000
Easysearch 的 http 服务可以不用用户名密码直接访问。

通过网关安全加固后必须使用 LDAP 里的用户认证

OK,有问题欢迎联系我。
