使用用户列表 http 标头/用户配置 NGINX?

使用用户列表 http 标头/用户配置 NGINX?

我有一个执行 ssl-pki 身份验证的 nginx 配置 - 我很高兴能够对我的用户进行身份验证。

但是,我想更进一步 - 我想根据 ssl 变量允许/拒绝对资源的访问 - 具体来说$ssl_client_s_dn(并验证是否$ssl_client_verify“成功”)

基于此,我想根据用户列表有选择地允许/拒绝 URL 组。在这种情况下,Elasticsearch。我有:

  • 我想要访问的一些常见 API(服务器状态、集群健康、‘ping’)。
  • 我希望一组用户能够“看到”一些指标
  • 我希望另一组用户能够“看到”一些索引。

现在看来我可以大概做这个http_auth_request- 重定向到“auth”url - 有点像这个博客

但这对我来说似乎有点小题大做,因为要做到这一点我必须编写自己的“引擎”来接受/读取 http,根据正则表达式对其进行验证,并输出响应代码。

我正在尝试为我做“白名单”例如:

allow if /(logstash|filebeat|topbeat)-mygroup-.*/;

(其中“mygroup”是从某个文件读取的,理想情况下允许拥有多个组成员身份)。

现在,最好的办法是不是http_auth_request就是将其提供给一个真正精简的验证器 Web 应用程序(独立脚本,或者 NGINX 内的 cgi 类型脚本),或者有更好的方法?

此模块是 nginx 的附加模块,这意味着需要重新编译。这不是什么灾难,但如果没有必要(我可以继续使用“原版”nginx),那就更好了。

答案1

也许类似这样的方法可以奏效。给定一个文件路径,它将返回“禁止”响应,除非$ssl_client_verify已正确设置。

location ^~ /(logstash|filebeat|topbeat) {
   if ($ssl_client_verify != "SUCCESS") {
    return 403;
   }
}

相关内容