BLOG | NGINX

Gerenciamento de configuração mais seguro com o controlador NGINX

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Brian Ehlert Miniatura
Brian Ehlert
Publicado em 02 de setembro de 2021

Conversando com nossos clientes ao longo do ano passado, notamos alguns temas recorrentes que os motivam a avaliar produtos de orquestração como o NGINX Controller :

  • Complexidade – Gerenciar, manter, validar e aplicar grandes conjuntos de objetos de configuração individuais de diferentes fontes não é fácil.
  • Fragilidade – A expansão pode acontecer rapidamente, geralmente em resposta a um evento. Às vezes é estratégico, mas, como costuma ser o caso em todos os departamentos de operações, não é planejado e é orgânico.
  • Segurança – Evitar erros e detectar problemas antes da implantação na produção são os pilares da metodologia ágil. Eles também ajudam a mitigar a complexidade e a fragilidade.

Essas não são preocupações que os clientes geralmente enfrentam quando implantam um aplicativo pela primeira vez. Em vez disso, eles surgem conforme o tempo passa e o aplicativo se torna bem-sucedido e precisa ser expandido. Descobrimos que o dimensionamento – ou mais precisamente, o dimensionamento não planejado – é a causa raiz comum das preocupações listadas acima.

Felizmente, o modelo de objeto de configuração do controlador NGINX aborda todas as três preocupações:

  • Ele reduz a complexidade da implantação reunindo em um único local todos os componentes de configuração que podem impactar um conjunto específico de instâncias do NGINX Plus .
  • Ele reduz a fragilidade ao permitir que as equipes validem e testem configurações antes de colocá-las em produção, facilitando falhas rápidas e garantindo que o tráfego de usuários de produção continue fluindo.
  • Promove segurança porque é altamente flexível. Em vez de forçar você a ajustar seus processos para se adequarem ao modelo, o modelo de objeto de configuração é projetado para se alinhar aos seus fluxos de trabalho de negócios e à divisão de responsabilidades – você pode conceder a várias unidades de negócios a propriedade apropriada sobre os elementos de configuração, conforme apropriado.

Objetos de configuração do controlador

Vamos nos aprofundar um pouco mais em alguns objetos de configuração importantes para lhe dar uma ideia melhor de como o modelo do Controlador funciona.

Ambientes

Na maioria das organizações, o software passa por vários estágios antes do lançamento: desenvolvimento, aceitação do usuário, pré-produção, produção e outros estágios de verificação de qualidade. Esses estágios correspondem ao objeto NGINX Controller chamado Ambiente.

Um ambiente é uma zona de isolamento para elementos de configuração dentro do controlador. É geralmente o nível onde o controle de acesso baseado em função (RBAC) é definido. Os ambientes podem carregar artefatos de configuração idênticos pelos vários estágios, ao mesmo tempo em que substituem alterações mínimas por itens como servidores de destino, data centers e outros objetos de infraestrutura que geralmente diferem entre os ambientes.

Portais

Um Gateway é um objeto de configuração dentro de um Ambiente, frequentemente usado como o nível superior para definir como os aplicativos são entregues aos clientes – configurações como nome do host, protocolo e comportamento TLS/SSL – embora tais configurações também possam ser feitas em um nível inferior. Na prática, as equipes de operações de rede (NetOps), as pessoas que gerenciam os dispositivos de rede de ponta ou a DMZ, geralmente possuem objetos de Gateway. Os gateways também empregam o conceito de “Posicionamento”, que é como você vincula o Controlador e as instâncias do NGINX Plus que recebem as configurações e fazem o trabalho real.

Aplicativos

O próximo nível abaixo é o objeto de configuração do aplicativo, onde você começa a modelar aplicativos e agrupar comportamentos de modelagem de tráfego. Você pode usar quantos aplicativos forem necessários para atender às necessidades da sua organização. O único requisito é que um aplicativo seja único dentro de um ambiente.

COMPONENTES

Dentro de um App, os Componentes descrevem o comportamento desejado de modelagem de tráfego para o App. No caso mais simples, todo o tráfego para um determinado nome de caminho é enviado para o mesmo grupo de servidores. Mas os Componentes também controlam modelagens mais avançadas, como manipulação de cabeçalhos, reescrita de URL, comportamentos de balanceamento de carga de backend, manipulação de cookies e outras configurações. O nome do host e o comportamento TLS/SSL também podem ser definidos neste nível.

Amarrando tudo junto

Aqui está uma representação visual do relacionamento entre os objetos de configuração:

Representação visual do relacionamento entre objetos de configuração do controlador NGINX

Observe que há apenas dois grupos interagindo com o Controlador – neste caso, duas equipes de desenvolvimento, Referência e Transferências . Na realidade, sabemos que o número de pessoas envolvidas com a entrega e segurança de aplicativos é provavelmente muito maior, abrangendo redes e segurança (Platform Ops), DevOps, desenvolvimento de aplicativos e muito mais. As equipes com mais conhecimento podem definir políticas e criar fluxos de trabalho de autoatendimento que se alinhem às melhores práticas e forneçam proteções para as equipes que trabalham com aplicativos, componentes e gateways dentro do ambiente "Dev", que abrange os data centers leste e oeste da organização.

Vamos analisar isso de uma maneira um pouco diferente, mais a partir de uma perspectiva de linha de negócios (LOB) . Os proprietários de LOB estão cada vez mais tomando decisões de aplicação para aplicativos modernos.

O diagrama a seguir ilustra um cenário mais realista que inclui um conjunto muito maior de usuários, incluindo várias equipes de LOB e Shawn, o indivíduo que gerencia todas as renovações de certificados.

Diagrama mostrando várias equipes cooperando para configurar uma instância do NGINX Plus usando o NGINX Controller

Agora, temos mais atores individuais e pipelines impactando o fluxo de dados resultante.

À medida que cada pipeline individual passa pelas várias alterações de objeto do controle de origem (como GitHub) para o controlador, os objetos de configuração são validados no lado do controlador e, em seguida, combinados com quaisquer objetos relacionados antes que as alterações sejam enviadas para as instâncias do NGINX Plus.

É assim que o Controller pode ajudar a tornar o gerenciamento de configuração mais seguro, garantindo que as alterações mais recentes sejam compatíveis com as configurações anteriores e as configurações de outros proprietários de aplicativos e LOB.

Percebemos que, na prática, todas as configurações aplicadas a uma única instância do NGINX Plus devem ser possíveis, mas as configurações não devem entrar em conflito, sobrepor ou colidir umas com as outras. E é importante detectar conflitos antecipadamente e informar as pessoas que estão fornecendo a configuração de cada componente individual.

No exemplo acima, quando o Componente de Referência tenta usar o mesmo padrão regex que o Componente de Transferências já implementou, um conflito de caminho é detectado imediatamente, e a equipe de Referência pode ser notificada muito antes de tentar implantar essa configuração na produção, evitando as muitas dores de cabeça associadas a uma configuração incorreta.

Em relação aos certificados, Shawn está habilitado – por meio da funcionalidade RBAC do Controller – a implementar imediatamente as alterações de certificado. Os mantenedores do Gateway e dos Componentes precisam apenas referenciar os certificados corretos e Shawn pode gerenciá-los com confiança em seu próprio ciclo de vida. Se Shawn atualizar um certificado no Controller, ele será enviado para as instâncias corretas, sem o pânico associado à expiração de um certificado.

Agora que o NGINX Controller tem todos os seus objetos de configuração e uma associação de posicionamento a uma ou mais instâncias do NGINX Plus, ele pode executar as últimas etapas: aplicar a configuração.

Segurança na Prática

No final, o objetivo do gerenciamento de configuração com o Controller é aplicar a configuração correta nas instâncias corretas do NGINX Plus no local correto – garantir que os aplicativos, componentes, gateways e todos os certificados e instâncias associados sejam configurados corretamente resulta em implantações mais seguras e escaláveis.

Esta verificação final é a última parte do processo de gerenciamento de configuração que o Controller torna mais fácil e seguro. Toda a configuração é verificada à medida que é aplicada a uma instância do NGINX Plus que teve alguma alteração de objeto associada – como persistência de sessão em um grupo de carga de trabalho da Web para o NGINX Plus implantado como um proxy – garantindo que a instância seja compatível com a configuração desejada. Se essa condição for atendida, a configuração será aplicada. E como último recurso de segurança, se algo falhar durante a aplicação da configuração, o Controller reverte para uma configuração anterior.

Além de garantir que as configurações sejam aprovadas, o Controller também pode aproveitar os recursos avançados do NGINX, como drenagem de sessão, quando uma nova configuração é aplicada, garantindo que os sites mantenham a disponibilidade e o desempenho durante as alterações.

Para equipes de operações, os conceitos e designs de fluxo de trabalho descritos acima contribuem para a segurança que o NGINX Controller oferece em relação ao gerenciamento de configuração. Essas proteções ajudam a alinhar os fluxos de trabalho e as diversas equipes que trabalham com aplicativos modernos, ao mesmo tempo em que dão suporte às necessidades do negócio.

Para experimentar o NGINX Controller, comece hoje mesmo seu teste gratuito de 30 dias ou entre em contato conosco para discutir seus casos de uso .


"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."