Editar

DevSecOps no Serviço Kubernetes do Azure (AKS)

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 do DevOps. Alguns dos benefícios da segurança de criação em práticas de DevOps incluem:

  • Tornando seus aplicativos e sistemas mais seguros, fornecendo visibilidade sobre ameaças à segurança e impedindo que vulnerabilidades atinjam ambientes implantados
  • Aumentar a conscientização sobre segurança com suas equipes de desenvolvimento e operação
  • Incorporando processos de segurança automatizados em seu ciclo de vida de desenvolvimento de software
  • Reduzir os custos de correção encontrando problemas de segurança no início dos estágios de desenvolvimento e projeto

Quando o DevSecOps é aplicado ao Serviço Kubernetes do Azure (AKS), diferentes funções da organização 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 infraestrutura AKS segura
  • Várias equipes de operações que podem controlar clusters ou monitorar problemas de segurança

Este 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 práticas recomendadas de segurança. Este guia inclui processos e ferramentas comuns para incorporar em pipelines de integração contínua e entrega contínua (CI/CD), optando por ferramentas integradas fáceis de usar, quando disponíveis.

Como pré-requisito para este 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 empregado, o DevSecOps no AKS.

Transfira um ficheiro do Visio desta arquitetura.

Nota

Embora este artigo faça referência ao AKS e ao GitHub, essas recomendações se aplicam a qualquer orquestração de contêiner ou plataforma 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 é configurado como o provedor de identidade para o 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 de propriedade e governado.
  4. O GitHub Enterprise integra segurança automática e verificação de dependência por meio do GitHub Advanced Security.
  5. As solicitações pull acionam compilações de integração contínua (CI) e testes automatizados por meio das ações do GitHub.
  6. O fluxo de trabalho de compilação de CI por meio das Ações do GitHub gera uma imagem de contêiner do Docker que é 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. As Ações do GitHub habilitam o CD para o AKS. Use o GitHub Advanced Security para detetar segredos, credenciais e outras informações confidenciais na origem do aplicativo e nos arquivos de configuração.
  9. O Microsoft Defender é usado para verificar o Azure Container Registry, o cluster AKS e o Azure Key Vault em busca de vulnerabilidades de segurança.
    1. O Microsoft Defender for Containers 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 for Containers 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 for Key Vault deteta tentativas nocivas e incomuns e suspeitas de acessar contas de cofre de chaves.
  10. A Política do Azure pode ser aplicada ao Registro de Contêiner e ao Serviço Kubernetes do Azure (AKS) para conformidade e imposição de políticas. As políticas de segurança comuns para o Registo de Contentores e o AKS estão incorporadas para uma ativação rápida.
  11. O Azure 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 política de rede AKS é configurado para ajudar a proteger o tráfego entre pods de aplicativos usando políticas de rede do Kubernetes.
  13. O monitoramento contínuo do cluster AKS pode ser configurado usando o Azure Monitor e o Container insights para ingerir métricas de desempenho e analisar logs de aplicativos e segurança.
    1. As informações de contêiner recuperam métricas de desempenho e logs de aplicativos e clusters.
    2. Os logs de diagnóstico e de aplicativos são puxados 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 para quaisquer ameaças à segurança com base em padrões e regras definidos.
  15. Ferramentas de código aberto como Zed Attack Proxy (ZAP) (ZAP) podem ser usadas para fazer testes de penetração para aplicações e serviços web.
  16. O Defender for DevOps, um serviço disponível no Defender for Cloud, permite que as equipes de segurança gerenciem a segurança do 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 aspeto da implantação? Que ferramentas e processos uma equipa deve utilizar para melhor atingir os seus objetivos? Nesta seção, abordamos as funções comuns de desenvolvedores, operadores de aplicativos (engenheiros de confiabilidade de site), operadores de cluster e equipes de segurança.

Programadores

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 execução de scripts para testes automatizados para garantir que seu código funcione como pretendido e se integre perfeitamente com o resto do aplicativo. Eles também definem e criam scripts para a construção de imagens de contêiner como parte do pipeline de automação.

Operadores de aplicação (engenheiros de confiabilidade do local)

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

Operadores de cluster

Os operadores de cluster são responsáveis por configurar e gerenciar a infraestrutura de cluster. Eles geralmente usam a infraestrutura como código (IaC) melhores práticas e estruturas como GitOps para provisionar e manter seus clusters. Eles usam várias ferramentas de monitoramento, como Azure Monitor Container insights e 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 de 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.

Equipa de segurança

A equipa de segurança é responsável por desenvolver normas de segurança e aplicá-las. Algumas equipes podem ser responsáveis por criar e selecionar a Política do Azure que é imposta nas assinaturas e grupos de recursos que mantêm os clusters. Eles monitoram os problemas de segurança e, juntamente com as outras equipes, garantem que a segurança seja colocada na vanguarda de cada etapa do processo de 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 empregado, o DevSecOps no AKS.

Transfira um ficheiro do Visio desta arquitetura.

Fase de planeamento

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. A inclusão das partes interessadas em segurança nesta fase de projeto e planejamento garante que os requisitos e problemas de segurança sejam devidamente contabilizados ou mitigados.

Melhores práticas – Projetar uma plataforma de aplicativos mais segura

Construir uma plataforma hospedada pelo AKS mais segura é um passo 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íticas e segurança em tempo de execução) e componentes externos ao AKS (como firewalls de rede e registros de contêiner). Para obter mais informações, consulte AKS Landing zone accelerator, que inclui áreas críticas de design, como segurança, identidade e topologia de rede.

Melhores práticas – Incorpore a modelagem de ameaças ao 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 dentro de 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, desencadeados por eventos como uma alteração significativa de software, alteração na arquitetura da 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 mnemônicas STRIDE (Spoofing, Tampering, Info Disclosure, Repudiation, Denial of Service e Elevation of Privilege) para capacitar as equipes a identificar, mitigar 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. A criação de modelagem de ameaças em seus processos SDLC introduz novos processos e mais trabalho para manter os modelos de ameaças atualizados. Mas ajuda a garantir que a segurança esteja implementada antecipadamente, o que ajuda a reduzir o custo potencial de lidar com problemas de segurança encontrados em estágios posteriores do SDLC.

Práticas recomendadas – Aplicar o Azure Well Architect Framework (WAF)

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

Fase de desenvolvimento

"Mudando para a esquerda" é um inquilino chave da mentalidade 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 de práticas recomendadas 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 do desenvolvimento, quando são mais fáceis de corrigir.

Práticas recomendadas – Aplicar 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 da Web voltados para o público.
  • Além das práticas recomendadas de segurança gerais, 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 contra vazamentos em logs de aplicativos. As estruturas de registro mais populares, como log4j e log4net, fornecem filtros e plugins para mascarar informações confidenciais, como números de conta ou dados pessoais.

Práticas recomendadas – 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 feedback imediato e recomendações para possíveis problemas de segurança que você possa ter introduzido ao escrever o código do aplicativo.

  • SonarLint é um plugin IDE disponível para as linguagens mais populares e ambientes de desenvolvedores. O SonarLint fornece feedback valioso e verifica automaticamente o 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 10 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 você se alguma vulnerabilidade for encontrada.
  • O plug-in SARIF (Static Analysis Results Interchange Format) para Visual Studio e Visual Studio Code permite visualizar facilmente vulnerabilidades de ferramentas populares de SAST (Static Application Security Testing) de forma intuitiva e fácil de ler em comparação com a interpretação de resultados de arquivos de saída JSON brutos.

Práticas recomendadas – 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 o fluxo de liberação e o fluxo do GitHub estruturaram diretrizes sobre como as filiais devem ser usadas para dar suporte ao desenvolvimento paralelo e da equipe. Essas metodologias podem ajudar as equipes a estabelecer padrões e controles para confirmações e fusões de código em seu fluxo de trabalho de CI/CD.
  • Certas ramificações, como a principal, são ramificações duradouras que preservam a integridade do código-fonte do seu aplicativo. Essas ramificações devem ter estabelecido políticas de mesclagem antes que as alterações possam ser mescladas ou confirmadas nelas. Algumas práticas recomendadas incluem:
    • Impeça que outros desenvolvedores confirmem código diretamente em sua ramificação principal.
    • Estabeleça um processo de revisão por pares e exija um número mínimo de aprovações antes que as alterações possam ser mescladas a 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 impedir que uma confirmação aconteça se um problema de segurança for encontrado.
    • Use os ganchos de pré-confirmação integrados 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 evitar uma confirmação se algum desses problemas for encontrado.
  • Estabeleça um 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 suas funções e funções específicas em relação aos fluxos de trabalho de CI/CD.
  • Habilite a auditoria de seus fluxos de trabalho para que haja transparência e rastreabilidade para a configuração e outras alterações em relação aos seus pipelines de CI/CD.

Práticas recomendadas – Proteja suas imagens de contêiner

  • Utilize imagens leves com uma pegada mínima do SO para reduzir a área geral de ataque à superfície. Considere imagens mínimas como Alpine ou até mesmo imagens sem distribuição que contenham 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 o AKS hospedar cargas de trabalho em contêineres.
  • Use apenas imagens de base confiáveis ao criar seus contêineres. Essas imagens de base devem ser recuperadas de um registro privado que é frequentemente verificado em busca de vulnerabilidades.
  • Use ferramentas de desenvolvedor para avaliar vulnerabilidades de imagem localmente.
    • 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 root.
    • Para contêineres que precisam de segurança aprimorada, considere usar um perfil AppArmor em seu cluster Kubernetes para ajudar a reforçar ainda mais a segurança para seus contêineres em execução.

Fase de construçã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 fonte de aplicativos em seus pipelines de construção 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.

Práticas recomendadas – Execute a análise estática de código (SAST) para encontrar possíveis vulnerabilidades no código-fonte do seu aplicativo

  • Use os recursos de verificação de segurança avançada do GitHub para verificaçã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 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 filial 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.

Práticas recomendadas – Execute a verificação secreta 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 nos repositórios e envia notificações de alerta.
    • Para o Azure DevOps, o Defender for Cloud usa a verificação secreta para detetar credenciais, segredos, certificados e outros conteúdos confidenciais no código-fonte e na saída da compilação.
    • A verificação secreta pode ser executada como parte da extensão Microsoft Security DevOps for Azure DevOps.

Práticas recomendadas – Use ferramentas de análise de composição de software (SCA) para rastrear componentes de código aberto na base de código e detetar quaisquer vulnerabilidades em dependências

  • A revisão de dependência permite detetar 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 uma comparação rica na guia "Arquivos alterados" de uma solicitação pull.
  • O Dependabot executa uma verificação para detetar dependências inseguras e envia alertas do Dependabot quando um novo aviso é adicionado ao Banco de Dados de Avisos do GitHub ou quando o gráfico de dependência de um repositório é alterado.

Práticas recomendadas – habilite verificações de segurança de modelos de Infraestrutura como Código (IaC) para minimizar configurações incorretas na nuvem que chegam aos ambientes de produção

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

Práticas recomendadas – Analise suas imagens de carga de trabalho em registros de contêiner para identificar vulnerabilidades conhecidas

  • O Defender for Containers verifica os contêineres no Container Registry e no Amazon AWS Elastic Container Registry (ECR) para notificá-lo se houver vulnerabilidades conhecidas em suas imagens.
  • A Política do Azure 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.

Práticas recomendadas – Crie automaticamente novas imagens na atualização de imagem base

  • As Tarefas do Registro de Contêiner do Azure descobrem dinamicamente dependências de imagem base quando criam uma imagem de contêiner. Como resultado, ele pode detetar 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.

Práticas recomendadas – Use o Registro de Contêiner, o Cofre de Chaves do Azure 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 do Cofre da Chave de notação (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.
    • O Ratiify 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ê criou.

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 certos 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.

Práticas recomendadas – Controle 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 confirmação linear.
  • Usando ambientes para implantação, você pode configurar ambientes com regras de proteção e segredos.
  • Você pode aproveitar o recurso 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.

Práticas recomendadas – Credenciais de implantação seguras

  • O OpenID Connect (OIDC) permite que seus fluxos de trabalho do GitHub Action acessem recursos no Azure sem a necessidade de 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 credenciais de segurança para seu cluster 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 em nível de administrador aos seus clusters do Kubernetes.

Práticas recomendadas – Execute testes dinâmicos de segurança de aplicativos (DAST) para encontrar vulnerabilidades em seu aplicativo em execução

  • Use as Ações do GitHub em fluxos de trabalho de implantação para executar testes de teste dinâmico de segurança de aplicativos (DAST).
  • Use ferramentas de código aberto, como ZAP , para fazer testes de penetração para vulnerabilidades comuns de aplicativos da Web.

Prática recomendada – Implantar imagens de contêiner somente de registros confiáveis

  • Use o Defender for Containers para habilitar o complemento de Política do Azure para Kubernetes.
  • Habilite a Política do Azure 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 de operação e monitoramento de segurança são realizadas 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.

Práticas recomendadas – Use o Microsoft Defender para nuvem para habilitar a verificação e o monitoramento automatizados de suas configurações de produção

  • Execute uma verificação contínua para detetar desvios no estado de vulnerabilidade do seu aplicativo e implemente um processo para corrigir e substituir as imagens vulneráveis.
  • Implementar monitoramento de configuração automatizado para sistemas operacionais.
    • Use as recomendações de contêiner do Microsoft Defender for Cloud (na seção Computação e aplicativos ) para executar verificações de linha de base para seus clusters AKS. Seja notificado no painel do Microsoft Defender for Cloud quando forem encontrados problemas de configuração ou vulnerabilidades.
    • Use o Microsoft Defender for Cloud 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.
  • Realize uma avaliação de vulnerabilidade para imagens armazenadas no Registro de contêiner.
    • Implemente verificações contínuas para executar imagens no Registro de contêiner habilitando o Defender for Containers.

Práticas recomendadas – 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 do SO e do tempo de execução, que podem ser aplicadas automaticamente através do modo autónomo ou através da CLI do Azure para obter mais controlo e atualizações abrangentes.

Práticas recomendadas – Use a Política do Azure para proteger e governar seus clusters AKS

  • Depois de instalar o Complemento de Política do Azure para AKS, você pode aplicar definições de política individuais ou grupos de definições de política chamadas 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 definições de política ao seu 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 Política do Azure estende o Gatekeeper.
  • Proteja o tráfego entre pods de carga de trabalho usando políticas de rede no AKS.
    • Instale o mecanismo de política de rede e crie políticas de rede do 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.

Práticas recomendadas – 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 informações sobre a disponibilidade e o desempenho de seu aplicativo e infraestrutura. Também lhe dá acesso a sinais para monitorizar a saúde da sua solução e detetar precocemente atividades anormais.
    • O monitoramento contínuo com o Azure Monitor se estende a pipelines de liberação para portas ou lançamentos 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 AKS ao Azure Monitor e defina configurações de diagnóstico para seu cluster.

Práticas recomendadas – Use o Microsoft Defender for Cloud para monitoramento ativo de ameaças

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

Práticas recomendadas – habilite 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 sem problemas por meio de conectores de dados.

Práticas recomendadas – habilite o log de auditoria para monitorar a atividade em seus clusters de produção

  • Use os registros de atividades para monitorar ações nos recursos do AKS para visualizar todas as atividades e seu status. Determinar quais operações foram realizadas nos recursos e por quem.
  • Habilite o log de consultas DNS aplicando a configuração documentada em seu ConfigMap personalizado CoreDNS.
  • Monitore as tentativas de acessar credenciais desativadas.
    • Integre a autenticação do usuário para AKS com o Microsoft Entra ID. Crie Configurações de Diagnóstico para o Microsoft Entra ID, enviando os logs de auditoria e entrada para 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.

Práticas recomendadas – 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.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

  • Adnan Khan - Brasil | Arquiteto Sr. de Soluções Cloud

Outros contribuidores:

Próximos passos