DevSecOps no AKS (Serviço de Kubernetes do Azure)

Azure Boards
Azure DevOps
Azure Monitor
Azure Pipelines
Azure Policy

O DevSecOps, também chamado de Secure DevOps, baseia-se na prática do DevOps, incorporando segurança em diferentes estágios de um ciclo de vida tradicional de DevOps. Alguns dos benefícios da criação de segurança nas práticas de DevOps incluem:

  • Tornar seus aplicativos e sistemas mais seguros, fornecendo visibilidade sobre ameaças de segurança e impedindo que vulnerabilidades cheguem aos ambientes implantados
  • Aumentar a conscientização sobre segurança com suas equipes de desenvolvimento e operação
  • Incorporar processos de segurança automatizados ao seu ciclo de vida de desenvolvimento de software
  • Redução do custo de correção ao encontrar problemas de segurança no início dos estágios de desenvolvimento e projeto

Quando DevSecOps é aplicado ao AKS (Serviço de Kubernetes do Azure), funções de organização diferentes podem ter considerações diferentes para implementar a segurança. Exemplos dessas diferentes funções da organização são:

  • Desenvolvedores criando aplicativos seguros em execução no AKS
  • Engenheiros de nuvem construindo uma infraestrutura AKS segura
  • Várias equipes de operações que podem controlar clusters ou monitorar problemas de segurança

Esse artigo é dividido em diferentes estágios do ciclo de vida do DevOps com considerações e recomendações para incorporar controles de segurança e melhores práticas de segurança. Esse guia inclui processos e ferramentas comuns para incorporar em pipelines de integração contínua e entrega contínua (CI/CD), optando por ferramentas internas fáceis de usar, quando disponíveis.

Como pré-requisito para esse artigo, recomendamos que você revise Criar e implantar aplicativos no AKS usando DevOps e GitOps.

Fluxo do processo

O diagrama de arquitetura mostra o fluxo do desenvolvedor para o usuário final e onde o DevSecOps pode ser aplicado, DevSecOps no AKS.

Baixe um Arquivo Visio dessa arquitetura.

Observação

Embora esse artigo faça referência ao AKS e ao GitHub, essas recomendações se aplicam a qualquer orquestração de contêiner ou plataforma de CI/CD. Embora os detalhes da implementação possam variar, a maioria dos conceitos e práticas mencionados em cada etapa ainda são relevantes e aplicáveis.

  1. O Microsoft Entra ID está configurado como o provedor de identidade do GitHub. Configure a autenticação multifator (MFA) para ajudar a fornecer segurança de autenticação extra.
  2. Os desenvolvedores usam o Visual Studio Code ou o Visual Studio com extensões de segurança habilitadas para analisar proativamente seu código em busca de vulnerabilidades de segurança.
  3. Os desenvolvedores confirmam o código do aplicativo em um repositório corporativo do GitHub Enterprise.
  4. O GitHub Enterprise integra a segurança automática e a verificação de dependências por meio do GitHub Advanced Security.
  5. As solicitações de pull acionam compilações de integração contínua (CI) e testes automatizados por meio do GitHub Actions.
  6. O fluxo de trabalho de compilação de CI por meio do GitHub Actions gera uma imagem de contêiner do Docker armazenada no Registro de Contêiner do Azure.
  7. Você pode introduzir aprovações manuais para implantações em ambientes específicos, como produção, como parte do fluxo de trabalho de entrega contínua (CD) no GitHub Actions.
  8. O GitHub Actions habilita o CD para AKS. Use o GitHub Advanced Security para detectar segredos, credenciais e outras informações confidenciais na origem do aplicativo e nos arquivos de configuração.
  9. O Microsoft Defender é usado para verificar se há vulnerabilidades de segurança no Registro de Contêiner do Azure, no cluster AKS e no Azure Key Vault.
    1. O Microsoft Defender para contêineres verifica a imagem do contêiner em busca de vulnerabilidades de segurança conhecidas ao carregá-la no Registro de Contêiner.
    2. Você também pode usar o Defender para contêineres para executar verificações do seu ambiente AKS e fornece proteção contra ameaças em tempo de execução para seus clusters AKS.
    3. O Microsoft Defender para Key Vault detecta tentativas suspeitas prejudiciais e incomuns de acessar contas do cofre de chaves.
  10. A Azure Policy pode ser aplicada ao Registro de Contêiner e ao Serviço de Kubernetes do Azure (AKS) para conformidade e imposição de políticas. As políticas de segurança comuns para o Registro de Contêiner e AKS são incorporadas para ativação rápida.
  11. OAzure Key Vault é usado para injetar segredos e credenciais com segurança em um aplicativo em tempo de execução, separando informações confidenciais dos desenvolvedores.
  12. O mecanismo de diretiva de rede AKS é configurado para ajudar a proteger o tráfego entre pods de aplicativos usando diretivas de rede do Kubernetes.
  13. O monitoramento contínuo do cluster AKS pode ser configurado usando o Azure Monitor e Insights de contêiner para ingerir métricas de desempenho e analisar logs de aplicativos e de segurança.
    1. Os insights de contêiner recuperam métricas de desempenho e logs de aplicativos e clusters.
    2. Os logs de diagnóstico e de aplicativo são extraídos para um espaço de trabalho do Azure Log Analytics para executar consultas de log.
  14. O Microsoft Sentinel, que é uma solução de gerenciamento de eventos e informações de segurança (SIEM), pode ser usado para ingerir e analisar ainda mais os logs de cluster AKS em busca de quaisquer ameaças de segurança com base em padrões e regras definidos.
  15. As ferramentas de código aberto como Zed Attack Proxy (ZAP) (ZAP) podem ser usadas para fazer testes de penetração para aplicativos e serviços da Web.
  16. O Defender para DevOps, um serviço disponível no Defender para Nuvem, capacita as equipes de segurança a gerenciar a segurança de DevOps em ambientes de vários pipelines, incluindo GitHub e Azure DevOps.

Visão geral e responsabilidades dos membros da equipe

Considere o gerenciamento da complexidade do DevSecOps em implantações de soluções baseadas em Kubernetes como uma separação de preocupações. Qual equipe em um ambiente corporativo deve se preocupar com cada aspecto da implantação? Quais as ferramentas e processos uma equipe deve empregar para melhor atingir seus objetivos? Nessa seção, abordaremos as funções comuns de desenvolvedores, operadores de aplicativos (engenheiros de confiabilidade de site), operadores de cluster e equipes de segurança.

Desenvolvedores

Os desenvolvedores são responsáveis por escrever o código do aplicativo. Eles também são responsáveis por confirmar seu código no repositório designado. Uma das responsabilidades importantes dos desenvolvedores também inclui a criação e a execução de scripts para testes automatizados para garantir que seu código funcione conforme o esperado e se integre perfeitamente ao restante do aplicativo. Eles também definem e roteirizam a construção de imagens de contêiner como parte do pipeline de automação.

Operadores de aplicativos (engenheiros de confiabilidade do site)

A criação de aplicativos na nuvem usando contêineres e o Kubernetes pode simplificar o desenvolvimento, a implantação e a escalabilidade do aplicativo. Mas essas abordagens de desenvolvimento também criam ambientes cada vez mais distribuídos que complicam a administração. Os engenheiros de confiabilidade do site criam soluções para automatizar a supervisão de grandes sistemas de software. Eles servem como uma ponte entre as equipes de operadores de desenvolvimento e cluster e ajudam a estabelecer e monitorar os objetivos de nível de serviço e os orçamentos de erros. Dessa forma, eles ajudam a gerenciar implantações de aplicativos e geralmente gravam arquivos YAML (manifesto do Kubernetes).

Operadores de cluster

Os operadores de cluster são responsáveis por configurar e gerenciar a infraestrutura de cluster. Eles geralmente usam as melhores práticas e estruturas de IaC (infraestrutura como código), como GitOps para provisionar e manter seus clusters. Eles usam várias ferramentas de monitoramento, como o Azure Monitor, os insights de contêiner e o Prometheus/Grafana para monitorar a integridade geral do cluster. Eles são responsáveis por patches, atualizações de cluster, permissões e controle de acesso baseado em função no cluster. Nas equipes do DevSecOps, eles garantem que os clusters atendam aos requisitos de segurança da equipe e trabalham com a equipe de segurança para criar esses padrões.

Equipe de segurança

A equipe de segurança é responsável por desenvolver padrões de segurança e aplicá-los. Algumas equipes podem ser responsáveis por criar e selecionar a Azure Policy que é imposta nas assinaturas e grupos de recursos que mantêm os clusters. Eles monitoram problemas de segurança e, juntamente com as outras equipes, garantem que a segurança seja trazida para a vanguarda de cada etapa do processo do DevSecOps.

Estágios do ciclo de vida do DevSecOps

Os controles de segurança são implementados em cada fase do ciclo de vida de desenvolvimento de software (SDLC). Essa implementação é uma peça-chave de uma estratégia de DevSecOps e da abordagem shift-left.

O diagrama de arquitetura mostra o fluxo do desenvolvedor para o usuário final e onde o DevSecOps pode ser aplicado, DevSecOps no AKS.

Baixe um Arquivo Visio dessa arquitetura.

Fase de planejamento

A fase de planejamento geralmente tem a menor quantidade de automação, mas tem implicações de segurança importantes que afetam significativamente os estágios posteriores do ciclo de vida do DevOps. Essa fase envolve a colaboração entre as equipes de segurança, desenvolvimento e operações. Incluir os stakeholders de segurança nessa fase de design e planejamento garante que os requisitos de segurança e os problemas de segurança sejam devidamente contabilizados ou mitigados.

Melhores práticas – projete uma plataforma de aplicativo mais segura

A criação de uma plataforma hospedada pelo AKS mais segura é uma etapa importante para ajudar a garantir que a segurança seja incorporada ao sistema em todas as camadas, começando pela própria plataforma. A plataforma pode incluir componentes internos ao cluster (como agentes de política e segurança de tempo de execução) e componentes externos ao AKS (como firewalls de rede e registros de contêiner). Para obter mais informações, consulte o Acelerador da zona de destino do AKS, que inclui áreas críticas de design, como segurança, identidade e topologia de rede.

Melhores práticas – Crie uma modelagem de ameaças em seu processo

  • A modelagem de ameaças geralmente é uma atividade manual que envolve equipes de segurança e desenvolvimento. Ele é usado para modelar e encontrar ameaças em um sistema para que as vulnerabilidades possam ser resolvidas antes de qualquer desenvolvimento de código ou alterações em um sistema. A modelagem de ameaças pode ocorrer em momentos diferentes, disparados por eventos como uma alteração significativa de software, alteração de arquitetura de solução ou incidentes de segurança.
  • Recomendamos que você use o modelo de ameaça STRIDE. Essa metodologia começa com um diagrama de fluxo de dados e usa as categorias de ameaça STRIDE mnemônica (Falsificação, Adulteração, Divulgação de Informações, Repúdio, Negação de Serviço e Elevação de Privilégio) para capacitar as equipes a identificar, atenuar e validar riscos. Ele também inclui uma ferramenta de modelagem para anotar e visualizar componentes do sistema, fluxos de dados e limites de segurança. Criar modelagem de ameaças em seus processos SDLC introduz novos processos e mais trabalho para manter modelos de ameaças atualizados. Mas ajuda a garantir que a segurança esteja em vigor no início, o que ajuda a reduzir o custo potencial de lidar com problemas de segurança encontrados em estágios posteriores do SDLC.

Melhor prática – Aplicar o Azure Well Architect Framework (WAF)

  • Aplique as melhores práticas dopilar de segurança WAF que fornecem orientação para itens como gerenciamento de identidade, segurança de aplicativos, proteção de infraestrutura, segurança de data e DevOps conforme se aplica a ambientes nativos de nuvem.
  • Aplique as melhores práticas do WAF operacional à medida que ele se aplica ao DevSecOps e ao monitoramento de seus ambientes de produção.

Fase de desenvolvimento

"Mudar para a esquerda" é um locatário chave da mentalidade de DevSecOps. Esse processo começa antes mesmo que o código seja confirmado em um repositório e implantado por meio de um pipeline. A adoção das melhores práticas de codificação segura e o uso de ferramentas e plug-ins do IDE para análise de código durante a fase de desenvolvimento podem ajudar a resolver problemas de segurança no início do ciclo de vida de desenvolvimento, quando eles são mais fáceis de corrigir.

Melhores práticas – Aplique padrões de codificação seguros

  • Usando as melhores práticas e listas de verificação de codificação segura estabelecidas, você pode ajudar a proteger seu código contra vulnerabilidades comuns, como injeção e design inseguro. A fundação OWASP publica recomendações de codificação segura padrão do setor que você deve adotar ao escrever código. Essas diretrizes são especialmente importantes ao desenvolver aplicativos ou serviços Web voltados para o público.
  • Além das melhores práticas de segurança geral, você também deve examinar as práticas de codificação segura para seus tempos de execução de linguagem de programação específicos, como Java e .NET.
  • Você pode impor padrões de registro em log para proteger informações confidenciais de vazamentos em logs de aplicativos. As estruturas de registro mais populares, como log4j e log4net, fornecem filtros e plug-ins para mascarar informações confidenciais, como números de contas ou dados pessoais.

Melhores práticas – Use ferramentas e plug-ins do IDE para automatizar verificações de segurança

Os IDEs mais populares, como Visual Studio, Visual Studio Code, IntelliJ IDEA e Eclipse, oferecem suporte a extensões que você pode usar para obter comentários e recomendações imediatas para possíveis problemas de segurança que você pode ter introduzido ao escrever o código do aplicativo.

  • O SonarLint é um plugin IDE disponível para as linguagens mais populares e ambientes de desenvolvedor. O SonarLint fornece comentários valiosos e verifica automaticamente seu código em busca de erros comuns de programação e possíveis problemas de segurança.
  • Outros plugins gratuitos e comerciais são focados em itens específicos de segurança, como as dez principais vulnerabilidades comuns do OWASP. O plug-in Synk, por exemplo, também verifica a origem do aplicativo e as dependências de terceiros e alerta se alguma vulnerabilidade for encontrada.
  • O plug-in SARIF (Formato de Intercâmbio de Resultados de Análise Estática) para Visual Studio e Visual Studio Code permite exibir facilmente vulnerabilidades de ferramentas SAST (Teste de Segurança de Aplicativo Estático) populares de maneira intuitiva e fácil de ler em vez de interpretar os resultados de arquivos de saída JSON brutos.

Melhores práticas – Estabeleça controles em seus repositórios de código-fonte

  • Estabeleça uma metodologia de ramificação para que haja um uso consistente da ramificação em toda a empresa. Metodologias como fluxo de lançamento e fluxo do GitHub têm diretrizes estruturadas sobre como as ramificações devem ser usadas para apoiar a equipe e o desenvolvimento paralelo. Essas metodologias podem ajudar as equipes a estabelecer padrões e controles para confirmações e mesclagens de código em seu fluxo de trabalho de CI/CD.
  • Determinadas ramificações, como a principal, são ramificações de longa duração que preservam a integridade do código-fonte do aplicativo. Essas ramificações devem ter estabelecido políticas de mesclagem antes que as alterações possam ser mescladas ou confirmadas nelas. Algumas melhores práticas incluem:
    • Impeça que outros desenvolvedores confirmem o código diretamente em sua ramificação principal.
    • Estabeleça um processo de revisão em pares e exija um número mínimo de aprovações antes que as alterações possam ser mescladas em uma ramificação principal. Você pode facilmente configurar e impor esses controles com o GitHub. O GitHub também permite designar grupos de aprovadores autorizados, se necessário, para ambientes fechados.
  • Use ganchos de pré-confirmação para verificar se há informações confidenciais no código-fonte do aplicativo e evitar que uma confirmação aconteça se um problema de segurança for encontrado.
    • Use os ganchos de pré-confirmação internos fornecidos pelo GitHub que podem ser facilmente configurados para um projeto específico. Por exemplo, há ganchos pré-criados para verificar segredos, chaves privadas e credenciais e impedir uma confirmação se algum desses problemas for encontrado.
  • Estabeleça controle de acesso baseado em função em seu sistema de controle de versão.
    • Crie funções bem definidas usando o princípio de privilégios mínimos. Um pipeline de CI/CD é sua cadeia de suprimentos para implantações de produção.
    • Aplique funções de usuário ou grupo estabelecidas em sua organização. Funções como Administrador, Desenvolvedor, Administrador de segurança e Operador devem ser criadas para agrupar indivíduos com base em sua função e função específicas em relação aos fluxos de trabalho de CI/CD.
  • Habilite uma auditoria de seus fluxos de trabalho para que haja transparência e rastreabilidade para configuração e outras alterações em relação aos pipelines de CI/CD.

Melhores práticas – Proteja suas imagens de contêiner

  • Use imagens leves com um espaço mínimo do sistema operacional para reduzir a área geral de ataque à superfície. Considere imagens mínimas, como Alpine ou até mesmo imagens distroless, que contêm apenas seu aplicativo e seu tempo de execução associado. Mariner, a distribuição Linux de código aberto da Microsoft, é uma distribuição leve e reforçada projetada para AKS hospedar cargas de trabalho em contêineres.
  • Use apenas imagens básicas confiáveis ao criar seus contêineres. Essas imagens base devem ser recuperadas de um registro privado que é frequentemente verificado em busca de vulnerabilidades.
  • Use as ferramentas de desenvolvedor para avaliar vulnerabilidades de imagem localmente.
    • A Trivy é um exemplo de uma ferramenta de código aberto que você pode usar para analisar vulnerabilidades de segurança em suas imagens de contêiner.
  • Impedir o acesso/contexto do usuário raiz para uma imagem. Por padrão, os contêineres são executados como raiz.
    • Para contêineres que precisam de segurança aprimorada, considere usar um perfil AppArmor em seu cluster do Kubernetes para ajudar ainda mais a reforçar a segurança para seus contêineres em execução.

Fase de compilação

Durante a fase de compilação, os desenvolvedores trabalham com os engenheiros de confiabilidade do site e as equipes de segurança para integrar verificações automatizadas de sua origem de aplicativo em seus pipelines de build de CI. Os pipelines são configurados para habilitar práticas de segurança como SAST, SCA e verificação de segredos usando as ferramentas e extensões de segurança da plataforma CI/CD.

Melhor prática – Executar a Code Analysis Estática (SAST) para encontrar possíveis vulnerabilidades no código-fonte do aplicativo

  • Use os recursos de verificação do GitHub Advanced Security para digitalização de código e CodeQL.
    • A verificação de código é um recurso que você usa para analisar o código em um repositório do GitHub para encontrar vulnerabilidades de segurança e erros de codificação. Quaisquer problemas identificados pela análise são mostrados no GitHub Enterprise Cloud.
    • Se a verificação de código encontrar uma vulnerabilidade ou erro potencial em seu código, o GitHub exibirá um alerta no repositório.
    • Você também pode configurar regras de ramificação para verificações de status necessárias, por exemplo, para impor que uma ramificação de recurso esteja atualizada com a ramificação base antes de mesclar qualquer novo código. Essa prática garante que sua ramificação sempre tenha sido testada com o código mais recente.
  • Use ferramentas como kube-score para analisar seus objetos de implantação do Kubernetes.
    • kube-score é uma ferramenta que faz análise de código estático de suas definições de objeto Kubernetes.
    • A saída é uma lista de recomendações do que você pode melhorar para ajudar a tornar seu aplicativo mais seguro e resiliente.

Melhor prática – Executar a verificação de segredos para evitar o uso fraudulento de segredos que foram cometidos acidentalmente em um repositório

  • Quando a verificação secreta está habilitada para um repositório, o GitHub verifica o código em busca de padrões que correspondam aos segredos usados por muitos provedores de serviços.
  • O GitHub também executa periodicamente uma verificação completa do histórico do Git do conteúdo existente em repositórios e envia notificações de alerta.
    • Para o Azure DevOps, o Defender para Nuvem usa a verificação secreta para detectar credenciais, segredos, certificados e outros conteúdos confidenciais em seu código-fonte e sua saída de compilação.
    • A verificação de segredos pode ser executada como parte da extensão de DevOps de Segurança da Microsoft para Azure DevOps.

Melhor prática – Usar ferramentas de análise de composição de software (SCA) para rastrear componentes de código aberto na base de código e detectar quaisquer vulnerabilidades em dependências

  • Revisão de dependência permite capturar dependências inseguras antes de apresentá-las ao seu ambiente e fornece informações sobre licença, dependentes e idade das dependências. Ele fornece uma visualização facilmente compreensível de alterações de dependência com um diff avançado na guia "Arquivos alterados" de uma solicitação de pull.
  • O Dependabot executa uma verificação para detectar dependências inseguras e envia alertas do Dependabot quando um novo comunicado é adicionado ao Banco de Dados de Consultoria do GitHub ou quando o gráfico de dependência de um repositório é alterado.

Melhor prática – habilitar verificações de segurança de modelos de Infraestrutura como Código (IaC) para minimizar configurações incorretas de nuvem que chegam a ambientes de produção

  • Monitore proativamente as configurações de recursos de nuvem durante todo o ciclo de vida de desenvolvimento.
  • O Microsoft Defender for DevOps oferece suporte aos repositórios GitHub e Azure DevOps.

Melhor prática – Examinar suas imagens de carga de trabalho em registros de contêiner para identificar vulnerabilidades conhecidas

  • O Defender para contêineres verifica os contêineres no Registro de Contêiner e no Registro de Contêiner Elástico da Amazon AWS (ECR) para notificar você se houver vulnerabilidades conhecidas em suas imagens.
  • A Azure Policy pode ser habilitada para fazer uma avaliação de vulnerabilidade em todas as imagens armazenadas no Registro de Contêiner e fornecer informações detalhadas sobre cada descoberta.

Melhor prática – Crie automaticamente novas imagens na atualização da imagem base

  • Tarefas do Registro de Contêiner do Azure descobre dinamicamente dependências de imagem base quando cria uma imagem de contêiner. Como resultado, ele pode detectar quando a imagem base de uma imagem de aplicativo é atualizada. Com uma tarefa de compilação pré-configurada, as tarefas do Registro de Contêiner podem reconstruir automaticamente cada imagem de aplicativo que faz referência à imagem base.

Melhor prática – Use o Registro de Contêiner, o Azure Key Vault e a notação para assinar digitalmente suas imagens de contêiner e configurar o cluster AKS para permitir apenas imagens validadas

  • O Azure Key Vault armazena uma chave de assinatura que pode ser usada por notação com o plug-in da notação do Key Vault (azure-kv) para assinar e verificar imagens de contêiner e outros artefatos. O Registro de Contêiner permite anexar essas assinaturas usando os comandos da CLI do Azure.
  • Os contêineres assinados permitem que os usuários se certifiquem de que as implantações sejam criadas a partir de uma entidade confiável e verifiquem se um artefato não foi adulterado desde sua criação. O artefato assinado garante integridade e autenticidade antes que o usuário puxe um artefato para qualquer ambiente, o que ajuda a evitar ataques.
    • Ratificar permite que os clusters do Kubernetes verifiquem os metadados de segurança do artefato antes da implantação e admitam para implantação apenas aqueles que estão em conformidade com uma política de admissão que você criar.

Fase de implantação

Durante a fase de implantação, desenvolvedores, operadores de aplicativos e equipes de operadores de cluster trabalham juntos para estabelecer os controles de segurança corretos para os pipelines de implantação contínua (CD) para implantar código em um ambiente de produção de maneira mais segura e automatizada.

Melhor prática – Controlar o acesso e o fluxo de trabalho do pipeline de implantação

  • Você pode proteger ramificações importantes definindo regras de proteção de ramificação. Essas regras definem se os colaboradores podem excluir ou forçar o envio por push para a ramificação. Eles também definem requisitos para quaisquer pushes para a ramificação, como passar verificações de status ou um histórico de commit linear.
  • Usando ambientes para implantação, você pode configurar ambientes com regras de proteção e segredos.
  • Você pode aproveitar os recursos Aprovações e Portões para controlar o fluxo de trabalho do pipeline de implantação. Por exemplo, você pode exigir aprovações manuais de uma equipe de segurança ou operações antes de uma implantação em um ambiente de produção.

Melhor prática – credenciais de implantação seguras

  • O OpenID Connect (OIDC) permite que seus fluxos de trabalho do GitHub Action acessem recursos no Azure sem precisar armazenar as credenciais do Azure como segredos do GitHub de longa duração.
  • Usando ambientes para implantação, você pode configurar ambientes com regras de proteção e segredos.
    • Uma abordagem baseada em pull para CI/CD com GitOps permite que você mude as credenciais de segurança para o cluster do Kubernetes, o que reduz a superfície de segurança e risco removendo as credenciais de serem armazenadas em suas ferramentas de CI externas. Você também pode reduzir as conexões de entrada permitidas e limitar o acesso de nível de administrador aos seus clusters do Kubernetes.

Melhor prática – execute testes dinâmicos de segurança de aplicativo (DAST) para localizar vulnerabilidades em seu aplicativo em execução

  • Use o GitHub Actions em fluxos de trabalho de implantação para executar testes dinâmicos de teste de segurança de aplicativo (DAST).
  • Use ferramentas de código aberto como ZAP para fazer testes de penetração para vulnerabilidades comuns de aplicativos Web.

Melhor prática – implantar imagens de contêiner somente de registros confiáveis

  • Use o Defender para contêineres para habilitar o complemento Azure Policy para Kubernetes.
  • Habilite a Azure Policy para que as imagens de contêiner só possam ser implantadas a partir de registros confiáveis.

Fase de operação

Durante essa fase, as tarefas de monitoramento da operação e monitoramento de segurança são executadas para monitorar, analisar e alertar proativamente sobre possíveis incidentes de segurança. Ferramentas de observabilidade de produção, como o Azure Monitor e o Microsoft Sentinel, são usadas para monitorar e garantir a conformidade com os padrões de segurança corporativos.

Melhor prática – use o Microsoft Defender para nuvem para habilitar a verificação e o monitoramento automatizados de suas configurações de produção

  • Execute a verificação contínua para detectar desvios no estado de vulnerabilidade do seu aplicativo e implemente um processo para corrigir e substituir as imagens vulneráveis.
  • Implementar o monitoramento de configuração automatizado para sistemas operacionais.
    • Use as recomendações de contêiner do Microsoft Defender para Nuvem (na seção Computação e aplicativos) para executar verificações de linha de base para seus clusters AKS. Receba notificações no painel do Microsoft Defender para Nuvem quando forem encontrados problemas de configuração ou vulnerabilidades.
    • Use o Microsoft Defender para Nuvem e siga suas recomendações de proteção de rede para ajudar a proteger os recursos de rede que estão sendo usados por seus clusters AKS.
  • Realizar uma avaliação de vulnerabilidade para imagens armazenadas no Registro de Contêiner.

Melhor prática – Mantenha seus clusters Kubernetes atualizados

  • As versões do Kubernetes são lançadas com frequência. É importante ter uma estratégia de gerenciamento do ciclo de vida em vigor para garantir que você não fique para trás e sem suporte. O AKS é uma oferta gerenciada que fornece ferramentas e flexibilidade para gerenciar esse processo de atualização. Você pode usar os recursos de manutenção planejada da plataforma AKS para ter mais controle sobre as janelas de manutenção e atualizações.
  • Os nós de trabalho do AKS devem ser atualizados com mais frequência. Fornecemos atualizações semanais de sistema operacional e tempo de execução, que podem ser aplicadas automaticamente por meio do modo autônomo ou da CLI do Azure para obter mais controle e atualizações abrangentes.

Melhor prática – Usar a Azure Policy para proteger e controlar seus clusters AKS

  • Depois de instalar o Complemento da Azure Policy para AKS, você pode aplicar definições de política individuais ou grupos de definições de política chamados iniciativas (também chamadas de conjuntos de políticas) ao seu cluster.
  • Use as Políticas internas do Azure para cenários comuns, como impedir a execução de contêineres privilegiados ou aprovar apenas IPs externos permitidos. Você também pode criar políticas personalizadas para casos de uso específicos.
  • Aplique as definições de política ao cluster e verifique se essas atribuições estão sendo impostas.
  • Use o Gatekeeper para configurar um controlador de admissão que permita ou negue implantações com base em regras especificadas. A Azure Policy estende o Gatekeeper.
  • Proteja o tráfego entre pods de carga de trabalho usando diretivas de rede no AKS.
    • Instale o mecanismo de diretiva de rede e crie políticas de rede para Kubernetes para controlar o fluxo de tráfego entre pods no AKS. A política de rede pode ser usada para nós e pods baseados em Linux ou Windows no AKS.

Melhor prática – Usar o Azure Monitor para monitoramento e alertas contínuos

  • Use o Azure Monitor para coletar logs e métricas do AKS. Você obtém insights sobre a disponibilidade e o desempenho de seu aplicativo e infraestrutura. Ele também lhe dá acesso a sinais para monitorar a saúde da sua solução e detectar atividade anormal precocemente.
    • O monitoramento contínuo com o Azure Monitor se estende para liberar pipelines para portas ou versões de reversão com base em dados de monitoramento. O Azure Monitor também ingere logs de segurança e pode alertar sobre atividades suspeitas.
    • Integre suas instâncias do AKS ao Azure Monitor e defina as configurações de diagnóstico para seu cluster.

Melhor prática – Usar o Microsoft Defender para Nuvem para monitoramento ativo de ameaças

  • O Microsoft Defender para Nuvem fornece monitoramento ativo de ameaças no AKS no nível do nó (ameaças de VM) e para internos.
  • O Defender para DevOps deve ser usado para visibilidade abrangente e fornece às equipes de segurança e operadores um painel centralizado para todos os pipelines de CI/CD. Essa funcionalidade é especialmente útil se você estiver usando plataformas de vários pipelines, como o Azure DevOps e o GitHub, ou estiver executando pipelines em nuvens públicas.
  • O Defender para Key Vault pode ser usado para detectar tentativas incomuns e suspeitas de acessar contas do cofre de chaves e pode alertar os administradores com base na configuração.
  • O Defender para contêineres pode alertar sobre vulnerabilidades encontradas em suas imagens de contêiner armazenadas no Registro de Contêiner.

Melhor prática – Habilitar o monitoramento centralizado de logs e use produtos SIEM para monitorar ameaças à segurança em tempo real

  • Conecte os logs de diagnóstico do AKS ao Microsoft Sentinel para monitoramento de segurança centralizado com base em padrões e regras. O Sentinel permite esse acesso perfeitamente por meio de conectores de dados.

Melhor prática – habilitar o log de auditoria para monitorar a atividade em seus clusters de produção

  • Use logs de atividade para monitorar ações em recursos AKS para exibir todas as atividades e seu status. Determine quais operações foram realizadas nos recursos e por quem.
  • Habilite o log de consultas DNS aplicando a configuração documentada no ConfigMap personalizado do CoreDNS.
  • Monitorar as tentativas de acessar credenciais desativadas.
    • Integre a autenticação de usuário para AKS com o Microsoft Entra ID. Criar configurações de diagnóstico para o Microsoft Entra ID enviando os logs de auditoria e entrada em um espaço de trabalho do Azure Log Analytics. Configure os alertas desejados (como quando uma conta desativada tenta entrar) em um espaço de trabalho do Azure Log Analytics.

Melhor prática – habilitar diagnósticos em seus Recursos do Azure

  • Ao habilitar o diagnóstico do Azure em todos os recursos da sua carga de trabalho, você tem acesso aos logs da plataforma que fornecem informações detalhadas de diagnóstico e auditoria para seus recursos do Azure. Esses logs podem ser ingeridos no Log Analytics ou em uma solução SIEM como o Microsoft Sentinel para monitoramento e alertas de segurança.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Autor principal:

  • Adnan Khan | Sênior Arquiteto de Soluções na Nuvem

Outros colaboradores:

Próximas etapas