Назад | Перейти на главную страницу

Настройка NGINX с HTTP-заголовком / пользователем списка пользователей?

У меня есть конфигурация nginx, которая выполняет аутентификацию ssl-pki - я с радостью могу аутентифицировать своих пользователей.

Однако я хочу пойти немного дальше - я хочу разрешить / запретить доступ к ресурсам на основе переменных ssl, в частности $ssl_client_s_dn (и убедитесь, что $ssl_client_verify "УСПЕХ")

Исходя из этого, я хочу выборочно разрешать / запрещать группы URL-адресов на основе списка пользователей. В этом сценарии Elasticsearch. У меня есть:

Теперь похоже, что я могу наверное сделай это с http_auth_request - перенаправление на URL-адрес auth - немного как указано в этот блог

Но мне это кажется немного излишним, так как для этого мне придется написать свой собственный «движок», чтобы принимать / читать http, проверять его на соответствие регулярному выражению и выплевывать код ответа.

То, что я пытаюсь сделать «белый список», например для меня:

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

(где mygroup читается где-то из файла и в идеале позволяет иметь членство в нескольких группах).

Теперь лучше всего это сделать с помощью http_auth_requestи скармливать его действительно урезанному веб-приложению-валидатору (либо автономному скрипту, либо скрипту типа cgi внутри NGINX), или есть лучший способ?

Этот модуль является дополнительным для nginx, что означает перекомпиляцию. Это не катастрофа, но если в этом нет необходимости (и я могу продолжать использовать «стандартный» nginx), это будет предпочтительнее.

Возможно, что-то подобное сработает. Если указан путь к файлу, он вернет ответ «Запрещено», если только $ssl_client_verify установлен надлежащим образом.

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