Eu tenho uma configuração nginx que faz autenticação ssl-pki - estou feliz em poder autenticar meus usuários.
No entanto, quero ir um pouco mais longe - quero permitir / negar acesso a recursos com base nas variáveis ssl - especificamente $ssl_client_s_dn
(e verificar se $ssl_client_verify
é 'SUCESSO')
Com base nisso, desejo permitir / negar seletivamente grupos de URLs com base em uma lista de usuários. Nesse cenário, o Elasticsearch. Eu tenho:
- Algumas APIs comuns que desejo acessar (status do servidor, integridade do cluster, 'ping').
- Alguns indícios de que um grupo de usuários pode "ver"
- Alguns índices que eu quero que outro grupo de usuários 'veja'.
Agora, parece que posso provavelmente fazer isso com http_auth_request
- redireciona para um URL 'auth' - um pouco como descrito em este blog
Mas isso parece um pouco exagerado para mim, pois para isso eu terei que escrever meu próprio 'mecanismo' para aceitar / ler http, validá-lo contra o que corresponde a um regex e cuspir um código de resposta.
O que estou tentando fazer 'whitelist', por exemplo para mim:
allow if /(logstash|filebeat|topbeat)-mygroup-.*/;
(onde 'mygroup' é lido de um arquivo em algum lugar e, idealmente, permite ter uma participação em vários grupos).
Agora, isso é melhor feito com http_auth_request
, e alimentá-lo com um aplicativo web realmente validador (seja script autônomo ou um script do tipo cgi dentro do NGINX) ou existe uma maneira melhor?
Este módulo é um extra para o nginx, o que significa uma recompilação. Isso não é um desastre, mas se não for necessário (e eu posso continuar usando o 'stock' nginx) que seria preferível.