Compartilhar via


Configurar a aplicação de patch contínua no Registro de Contêiner do Azure

Neste artigo, você aprenderá a instalar, habilitar e configurar a aplicação de patch contínua. A correção contínua, quando habilitada para um registro de contêineres, detectará e corrigirá automaticamente vulnerabilidades no nível do sistema operacional para imagens de contêiner.

Pré-requisitos

  • Você pode usar o Azure Cloud Shell ou uma instalação local da CLI do Azure com uma versão mínima de 2.15.0 ou posterior.
  • Você tem um grupo de recursos existente com um Registro de Contêiner do Azure (ACR).
  • Você tem um Registro de Contêiner do Azure com tarefas do ACR habilitadas (as Tarefas do ACR não têm suporte na camada gratuita do ACR).

Instalação do fluxo de trabalho de instalação contínua de patches

Execute o seguinte comando para instalar a extensão da CLI:

    az extension add -n acrcssc

Habilitar o fluxo de trabalho de aplicação de patch contínua

  1. Faça logon na CLI do Azure com az login.
az login
  1. Faça logon no ACR.
az acr login -n <myRegistry>
  1. Execute o comando a seguir para criar um arquivo chamado continuouspatching.json, que contém o JSON de Aplicação de Patch Contínua. O nome do arquivo JSON é flexível.
cat <<EOF > continuouspatching.json
{
    "version": "v1",
    "tag-convention" : "<incremental|floating>",
    "repositories": [{
        "repository": "<Repository Name>",
        "tags": ["<comma-separated-tags>"],   
        "enabled": <true|false>
    }] 
}
EOF

O esquema ingere repositórios e marcas específicos em um formato de matriz. Cada variável é definida aqui:

  • version permite que a equipe do ACR rastreie em qual versão de esquema você está. Não altere essa variável, a menos que seja instruído.

  • tag-convention é um campo opcional. Os valores permitidos são "incrementais" ou "flutuantes" – consulte os principais conceitos de aplicação de patch contínua para obter mais informações.

  • repositories é uma matriz que contém informações detalhadas do repositório e da tag

    • repository refere-se ao nome do repositório
    • tags é uma matriz de marcas separadas por vírgulas. O curinga * pode ser usado para significar todas as tags dentro desse repositório.
    • enabled é um valor booliano de true ou false determinando se o repositório especificado está habilitado ou não.

Os detalhes abaixo apresentam uma configuração de exemplo para um cliente que deseja corrigir todas as tags (use o símbolo *) dentro do repositório python, e para corrigir especificamente as tags jammy-20240111 e jammy-20240125 no repositório ubuntu.

Exemplo de JSON:

{
"version": "v1",
"tag-convention" : "incremental",
"repositories": [{
        "repository": "python",
        "tags": ["*"],
        "enabled": true
    },
    {
        "repository": "ubuntu",
        "tags": ["jammy-20240111", "jammy-20240125"],
        "enabled": true, 
    }]
}
  1. Depois de criar o arquivo de configuração, é recomendável executar uma execução seca para verificar se os artefatos pretendidos são selecionados pelos critérios JSON. A execução seca requer um parâmetro chamado schedule, que especifica a frequência com que o ciclo de aplicação de patch contínuo é executado. O sinalizador de agendamento é medido em dias, com um valor mínimo de um dia e um valor máximo de 30 dias. Por exemplo, se você quiser que uma imagem seja corrigida todos os dias, especifique o agendamento como 1d, ou 1 dia. Se você quiser um patch semanal (uma vez por semana), preencherá o agendamento como 7d, ou sete dias.

Esquema de comando:

az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilepath> --schedule <number of days> --dry-run 

Exemplo de comando:

az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --dry-run   

A flag --dry-run exibe todos os artefatos especificados pela configuração do arquivo JSON. Os clientes podem verificar se os artefatos certos estão selecionados. Com a configuração do ubuntu de exemplo, os seguintes resultados devem ser exibidos como saída.

Ubuntu: jammy-20240111
Ubuntu: jammy-20240125

Comando de ajuda para ver todos os sinalizadores obrigatórios/opcionais:

az acr supply-chain workflow create --help
  1. Depois de satisfeito com os resultados de execução seca, execute o comando create novamente sem o sinalizador --dry-run para criar oficialmente o fluxo de trabalho de aplicação de patch contínuo.

Observação

O --schedule parâmetro segue um multiplicador de dia fixo a partir do primeiro dia do mês. Isso significa:

  • Se você especificar --schedule 7d e executar o comando no dia 3, a próxima execução agendada será no dia 7, pois 7 é o primeiro múltiplo de 7 (dias) após o terceiro, contando do primeiro dia do mês.
  • Se --schedule é 3d e hoje é dia 7, a próxima execução agendada será no dia 9, pois 9 é o próximo múltiplo de 3 que segue 7.
  • Se você adicionar o sinalizador --run-immediately, disparará uma execução imediata de patch. A execução agendada subsequente ainda será alinhada ao múltiplo de dia mais próximo do primeiro mês, com base no seu valor --schedule.
  • O contador de agendamento é redefinido todos os meses. Independentemente do agendamento designado, seu fluxo de trabalho será executado no primeiro de cada mês e, em seguida, seguirá o horário agendado especificado para o restante do mês. Se minha aplicação de patch for executada em 28 de janeiro, e minha agenda for 7d, meu próximo patch será executado em fevereiro primeiro, depois em oitavo, e continuará após os sete dias.

Esquema de comando:

az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days> --run-immediately

Exemplo de comando:

az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --run-immediately

Após um comando bem-sucedido (incluindo --run-immediatelyou não), você deverá ver:

  • Uma mensagem de êxito confirmando que suas tarefas de fluxo de trabalho estão na fila.

  • Um parâmetro de saída que indica quando a próxima execução do fluxo de trabalho está agendada, para que você possa acompanhar exatamente quando a aplicação de patch ocorrerá novamente.

Comando de ajuda para todos os sinalizadores obrigatórios/opcionais.

az acr supply-chain workflow create --help

Usar o portal do Azure para exibir tarefas de fluxo de trabalho

  1. Depois que o fluxo de trabalho for bem-sucedido, vá para o portal do Azure para exibir suas tarefas em execução. Selecione Serviços –> Repositórios e você deverá ver um novo repositório chamado csscpolicies/patchpolicy. Esse repositório hospeda o artefato de configuração JSON que é continuamente referenciado para correções contínuas.

Captura de tela que mostra o repositório que hospeda o artefato de configuração para a aplicação de patch contínua.

  1. Em seguida, selecione "Tarefas" em "Serviços" – você deverá ver três novas tarefas:

Captura de tela que mostra as tarefas criadas para correções contínuas.

Tarefas:

  • cssc-trigger-workflow - essa tarefa examina o arquivo de configuração e executa a tarefa de escaneamento em cada imagem correspondente.
  • cssc-scan-image - essa tarefa verifica a imagem em busca de vulnerabilidades do sistema operacional. Essa tarefa dispara a tarefa de aplicação de patch somente se vulnerabilidades do sistema operacional forem encontradas.
  • cssc-patch-image - esta tarefa corrige a imagem. Essas tarefas funcionam em conjunto para executar o fluxo de trabalho de aplicação contínua de patches.
  1. Você também pode selecionar "Execuções" na aba "Tarefas" para ver execuções específicas de tarefas. Aqui você pode exibir informações de status sobre se a tarefa foi bem-sucedida ou falhou, juntamente com a exibição de um log de depuração.

Captura de tela que mostra as tarefas executadas para aplicação de patch contínua.

Usar a CLI para exibir tarefas de fluxo de trabalho

Você também pode executar o comando show da CLI a seguir para ver mais detalhes sobre cada tarefa e o fluxo de trabalho geral. O comando exibe:

  • Cronograma
  • Data de criação
  • Dados do sistema, como data da última modificação, por quem, etc.

Esquema de comando:

az acr supply-chain workflow show -r <registry> -g <resourceGroup> -t continuouspatchv1   

Exemplo de comando:

az acr supply-chain workflow show -r myRegistry -g myResourceGroup -t continuouspatchv1 

Comando de ajuda para todos os sinalizadores obrigatórios/opcionais:

az acr supply-chain workflow show --help

Atualizando o fluxo de trabalho de aplicação de patch contínua

Em cenários em que você deseja fazer alterações no fluxo de trabalho de patching contínuo, o comando de atualização é a maneira mais fácil de fazer isso. Você pode atualizar seu agendamento ou esquema de configuração JSON diretamente com o comando da CLI de atualização.

Esquema de comando:

az acr supply-chain workflow update -r <registry> -g <resourceGroup> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days>

Exemplo de comando:

az acr supply-chain workflow update -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d

Comando de ajuda para todos os sinalizadores obrigatórios/opcionais:

az acr supply-chain workflow update --help

Para atualizar sua agenda, execute o comando anterior com uma nova entrada para agendamento. Para atualizar sua configuração JSON, recomendamos fazer alterações no arquivo, executar uma execução seca e, em seguida, executar o comando de atualização.

Excluindo o fluxo de trabalho de aplicação de patch contínua

Para excluir o fluxo de trabalho de aplicação contínua de patches, execute o comando da CLI a seguir.

Esquema de comando:

az acr supply-chain workflow delete -r <registry> -g <resourceGroup> -t continuouspatchv1 

Exemplo de comando:

az acr supply-chain workflow delete -r myregistry -g myresourcegroup -t continuouspatchv1

Comando de ajuda para todos os sinalizadores obrigatórios/opcionais:

az acr supply-chain workflow delete --help

Depois que um fluxo de trabalho for excluído com êxito, o repositório "csscpolicies/patchpolicy" será excluído automaticamente. As três tarefas que executam seu fluxo de trabalho também serão excluídas, juntamente com todas as execuções na fila no momento.