Configurando o NGINX com uma lista de usuários http header / user?

1

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.

    
por Sobrique 27.01.2016 / 10:19

1 resposta

0

Talvez algo assim funcionasse. Dado um caminho de arquivo, ele retornará uma resposta "Proibida", a menos que $ssl_client_verify tenha sido definido adequadamente.

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

Tags