Por que o GitOps é essencial para o DevSecOps
Publicados: 2022-02-24Os ganhos do DevOps para automação, rastreabilidade e, especificamente, colaboração entre os grupos e partes interessadas previamente isolados são amplamente aceitos. Mas, como os grupos de DevOps são significativamente encarregados de mudar as operações para ambientes Kubernetes em contêiner, as longas táticas de DevOps testadas e tentadas podem diminuir. Problemas de segurança – e armadilhas – também se manifestam em métodos únicos.
A informação fantástica é que o GitOps serve para preencher uma seleção de lacunas no DevOps para estabilidade de ambientes distribuídos. Isso se deve ao fato de os processos GitOps serem muito propícios para o DevSecOps, definidos aqui como as táticas mais eficazes de segurança que se aplicam a todo o ciclo de vida do software.
Neste artigo, vislumbramos como o GitOps oferece uma estrutura vital para DevSecOps, para verificações de segurança que aumentam por meio de CI/CD, bem como durante as fases de implementação de write-up da administração de aplicativos em clusters Kubernetes.
Um recurso imutável solitário da realidade
GitOps pode ser descrito como:
Um design funcional para Kubernetes e outros sistemas nativos de nuvem, fornecendo um conjunto dos melhores procedimentos que unificam a implantação, o gerenciamento e o monitoramento do Git para clusters e propósitos em contêineres.
Um caminho para uma experiência prática de desenvolvedor para cuidar de programas exatamente onde pipelines de CI/CD de ponta a ponta e fluxos de trabalho Git são usados para cada operação e desenvolvimento.
Git é o recurso solitário da verdade real, pois a configuração desejada é declarada aqui. Existe um agente GitOps que é executado no Kubernetes, ele compara regularmente o ponto real dentro do Kubernetes com o ponto procurado salvo no Git. Quaisquer novas variações mescladas no departamento monitorado no Git são aplicadas instantaneamente ao Kubernetes. Por outro lado, quaisquer variações do manual usadas no Kubernetes são mecanicamente revertidas novamente para o estado ideal declarado no Git. O desvio de configuração é eliminado.
O Git é geralmente descrito como o único recurso da verdade real que se aplica ao GitOps, graças à sua composição imutável. Entre outras coisas, ajudará a sustentar um limite – não contrário a um firewall – que separa as preocupações entre CI e CD. Dessa forma, a variedade de maneiras envolvidas no avanço do aplicativo como parte do CI — pull requests, screening, commits e assim por diante. — continue sendo separado no Git.
Para o desenvolvedor que cria uma solicitação de pull, a solicitação de pull, no momento revisada e permitida, é mesclada e usada rotineiramente para o cluster na próxima reconciliação - que geralmente requer 15 minutos.
Por padrão, o processo é bidirecional — isso implica que uma modificação fabricada diretamente no Kubernetes é retribuída no Git quando o loop de reconciliação futuro é executado (geralmente a cada 15 minutos). Mesmo assim, esse estado de coisas é significativamente menor do que o melhor, quando um membro da força de trabalho de DevOps ou, pior ainda, um intruso de ator negativo fará variações imediatamente nos clusters. Essas variações diretas ao cluster não foram devidamente verificadas por meio de solicitações e aprovações de mesclagem e, como resultado, violam a teoria GitOps do Git, servindo como o fornecimento imutável de verdade do assunto à medida que o desvio acontece.
Como alternativa para permitir a ocorrência de desvios, um recurso de verificação do GitOps pode enviar alertas se forem feitas alterações no cluster que não foram usadas inicialmente no Git. Quando isso acontece, graças à trilha de auditoria, o código do software no Git pode então trocar as modificações defeituosas projetadas para os clusters, por meio de controladores em seu ponto de implantação no ambiente natural de tempo de execução.
Por outro lado, quando a imutabilidade não é alcançada, a deriva pode ocorrer. Isso pode se materializar na festa de um ataque à rede ou quando um membro da equipe do DevOps altera inadvertidamente a configuração do cluster para que seja diferente do que está no Git. A incongruência é sinalizada quando isso acontece - através do uso do equipamento GitOps certo - simbolizando assim um DevSecOps por excelência que os processos GitOps apresentam.
Aplicativos apropriados automatizam o sistema de verificação contínua para garantir que o ponto desejado da configuração no repositório Git corresponda ao estado verdadeiro no cluster Kubernetes. Também é usado para reconciliar e totalizar implantações assim que elas forem efetivamente dedicadas na condição declarada do repositório.
Gerenciamento de auditoria
Os recursos de auditoria que o GitOps apresenta também são cruciais para o auxílio do DevSecOps. Permanecendo no repositório Git como a única fonte de fato, todos os aplicativos, código e configurações são versionados e retêm um caminho de auditoria completo, que é uma necessidade principal para qualquer ambiente natural protegido. Essa trilha de auditoria geralmente também é oferecida igualmente aos desenvolvedores e aos membros da equipe de operações, para que eles percebam o que está operando no cluster (a maioria dos usuários está restrita à acessibilidade somente de navegação à configuração do cluster).
O desenvolvedor nem sempre precisa depender de trilhas de auditoria tanto quanto as funções e os clientes da equipe DevSecOps, mas eles podem usar a capacidade de compreender quais variações ocorreram e qual foi a motivação por trás dos ajustes no repositório que aconteceram . Em poucas palavras, para o desenvolvedor - assim como para todos os membros da equipe de DevOps - tudo está a apenas um log do Git.
Trilhas de auditoria no Git também estão disponíveis e são muito simples para os construtores procurarem quando necessário. Isso se deve ao fato de que a herança de acabamento do processo é capturada no programa de relatório Git, que os construtores entendem.
Com a disponibilidade da trilha de auditoria, também é possível reverter rapidamente os ajustes nos aplicativos que geraram dificuldades. Isso é especialmente benéfico quando os clusters foram comprometidos ou configurados incorretamente. Neste caso, como alternativa de ter que reconstruir um cluster do zero, a trilha de auditoria consiste no ponto procurado no repo. A configuração do cluster e os programas com o ponto desejado da trilha de auditoria são então implantados e o procedimento de reconstrução é automático.
Número de 'chaves do reino'

Os construtores geralmente dependem do Jenkins, um servidor de automação, para desenvolver, examinar e ajudar o CI/CD na fabricação de pipelines para ambientes Kubernetes. Sem GitOps, os desenvolvedores podem, em qualquer outro caso, ter acesso imediato aos clusters Kubernetes à medida que implantam seu código diretamente. Em outras palavras e frases, os construtores – não importa se eles são parte da organização ou são um empreiteiro operando remotamente – teriam acesso imediato ao entorno de produção e teriam as “chaves do reino”, por assim dizer. Isso raramente é uma circunstância de segurança ideal.
Tudo o que escolheria, no caso mencionado anteriormente, é que o usuário impróprio - ou ainda pior, um intruso - tenha acessibilidade de comando KubeConfig ou Kubectl a clusters na fabricação que eles possam executar em seu notebook. Se um invasor tiver comprometido o processo de CI e a credencial estabelecida, por exemplo, ele também poderá ter acesso a qualquer cluster ao qual o sistema de CI tenha acesso.
O simples fato de que o GitOps ajuda a evitar que usuários — ou invasores — modifiquem as configurações do cluster sem deixar rastros é primordialmente vital para as equipes de operações e segurança — além de oferecer suporte para minimizar a carga mental do desenvolvedor. Ao obter o gerenciamento, por exemplo, o desenvolvedor geralmente não precisa ter acesso direto aos nós do Kubernetes e/ou às linhas de comando do kubectl. O GitOps reconcilia praticamente qualquer coisa que os construtores descrevem no Git, mas não permite acessibilidade manual a clusters Kubernetes ou ambientes de fabricação, exceto que os construtores têm permissões exclusivas de controle de acesso.
O DevSecOps do GitOps funciona como uma forma de impedir essa situação de vetor de ataque para o CD, protegendo as “chaves do reino”. Quando os operadores do GitOps, como o Flux de código aberto - mais sobre isso abaixo - são executados no Kubernetes e, consequentemente, têm acesso aos clusters, os controles de acesso continuam dentro da estrutura de segurança do Kubernetes. A acessibilidade do consumidor é estabelecida atribuindo privilégios aos namespaces de grupos distintos e membros do grupo.
Como um exemplo de como o DevSecOps e o GitOps são notavelmente propícios para uma pessoa diferente, a Seção de Defesa dos EUA (DoD), Nicolas Chaillan, principal oficial de software do US Air Power, descreveu há pouco tempo como DevSecOps e GitOps — com o Flux — desempenha um papel vital no avanço de seu programa de software que suporta todo o espectro das forças de segurança dos EUA.
“Segurança e proteção não são negociáveis, mas também queremos que a empresa do desenvolvedor aumente a eficiência e a velocidade”, disse Chaillan.
Como exemplo, o GitOps é a “chave para nossa realização na configuração e implantação da Plataforma Apenas uma em todo o DoD geral”, afirma o DoD. De acordo com o DoD, o System Just one é “uma variedade de distribuições de Kubernetes compatíveis com Cloud Indigenous Computing Foundation (CNCF), infraestrutura como manuais de código e contêineres reforçados”, com pipelines de segurança integrados.
Pesos e contrapesos
Os procedimentos DevSecOps combinam-se com verificações e balanços de fornecimento do GitOps. Dessa forma, o comando de acessibilidade que ele fornece ajuda a impedir que o desenvolvedor — ou intruso — acesse um repositório de código de fornecimento para introduzir, por exemplo, um backdoor, zero-day ou ainda outra forma de vulnerabilidade durante a CI procedimento. Isso ocorre simplesmente porque todas as solicitações de pull são revisadas por pares.
Com o DevSecOps suportando o sistema CI, as verificações e saldos usados antes do código são dedicados no Git e implantados no cluster. O desenvolvedor normalmente postará uma modificação como uma solicitação pull, que é revisada por pares. Depois de revisado e autorizado, o código é mesclado no Git e o arquivo YAML do estado procurado é alterado de acordo.
A condição desejada será aplicada imediatamente ao cluster Kubernetes. Como mencionado anteriormente, o equipamento correto de GitOps com recursos de DevSecOps acompanha constantemente a condição precisa no processo de meta, para garantir que ele retribua o que é declarado no Git. Um alerta é emitido se houver alguma variação, de modo que o movimento corretivo pode ser realizado.
DevSecOps opinativo
Vários instrumentos GitOps auxiliam o DevSecOps. O Open Supply Flux, por exemplo, ajuda a sustentar o repositório Git como a única fonte imutável da verdade real. As habilidades do Flux também se estendem para regular a acessibilidade para verificações e contrapesos durante CI/CD para código que é dedicado e implantado.
Para um encontro Flux muito mais opinativo, o Weave GitOps Main de código aberto simplifica as primeiras maneiras de habilitar o CI/CD automatizado em muitos clusters. O sistema de colocar um método GitOps e DevSecOps com Weave GitOps Main envolve alguns comandos simples em um console.
A Weave GitOps Company surgiu como a plataforma GitOps inicial que automatiza o envio constante de aplicativos e o gerenciamento operacional automático para Kubernetes em qualquer escala em arquiteturas de nuvem híbrida, multinuvem e de borda.
Todas as poucas ferramentas ajudam a automatizar o monitoramento para garantir que a configuração do cluster normalmente corresponda ao que está no Git para ajudar a evitar desvios. Uma trilha de auditoria completa e disponível permite que as reversões de configuração de aplicativos e clusters sejam produzidas em uma base essencial — sem ter que reconstruir o cluster do zero.
Em resumo, GitOps significa a evolução do DevOps para ambientes Kubernetes dispersos, embora o DevSecOps tenha surgido como uma maneira importante de manter a estabilidade de CI/CD para GitOps, durante o ciclo de vida do aplicativo.
Steve Waterworth é Supervisor Técnico de Marketing da Weaveworks .